fre1228 2022-11-23 09:37 采纳率: 84.4%
浏览 955
已结题

C语言 ,从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时, 输入结束如果输入的分数是0分就会报错,不知道该怎么解决

问题遇到的现象和发生背景

C语言 ,从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,
输入结束,分别统计下列内容:
(1)统计不及格人数并打印不及格学生名单;
(2)统计成绩在全班平均分及平均分之上的学生人数并打印其学生名单;
(3)统计各分数段的学生人数及所占的百分比;
如果输入的分数是0分就会报错,不知道该怎么解决

用代码块功能插入代码,请勿粘贴截图
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
void Percent(float allGrades[],int m); 
void step(float allGrades[],float aver,int m);
int i,m;
float allGrades[30],aver=0;
cout<<"请输入一个班学生某门课的成绩(每输一次按一下回车,输入的成绩为负数时将结束输入):"<<endl;
for(i=0;i<30;i++)
{
cout<<i+1<<":";
cin>>allGrades[i];
if(allGrades[i]<=0)
break;
}                                   //首先输入信息    
m=i;
for(i=0;i<m;i++)
{
aver=aver+allGrades[i];  
} 
aver=aver/m;                         //计算平均分 
step(allGrades,aver,m);              //调用函数 
Percent(allGrades,m);
}
void step(float allGrades[],float aver,int m)//计算 不及格还有与平均分相关的值 
{
int i,j=0,k=0,failNum=0,upNum=0;
int failNames[30],upNames[30];
for(i=0;i<m;i++)
{
if(allGrades[i]>=aver)            //高于平均分
{
upNames[j++]=i+1;
upNum++;
}
if(allGrades[i]<60)  
{
failNames[k++]=i+1;
failNum++;
}
}
cout<<"******************************************************************************************"<<endl;
cout<<"不及格人数:"<<failNum<<endl;   //输出信息 
cout<<"不及格名单:";
for(i=0;i<k;i++)
cout<<failNames[i]<<"号 ";
cout<<endl; 
cout<<"高于平均分的人数:"<<upNum<<endl; 
cout<<"高于平均分的人的名单:";
for(i=0;i<j;i++)
cout<<upNames[i]<<"号 ";
cout<<endl;
} 
void Percent(float allGrades[],int m)          //计算百分比 
{
int i;
float percent[6];
for(i=0;i<m;i++)
{
if(allGrades[i]<60)
(percent[0])++;
if((60<=allGrades[i])&&(allGrades[i]<70))
(percent[1])++;
if((70<=allGrades[i])&&(allGrades[i]<80))
(percent[2])++;
if((80<=allGrades[i])&&(allGrades[i]<90))
(percent[3])++;
if((90<=allGrades[i])&&(allGrades[i]<100))
(percent[4])++;
if(allGrades[i]==100)
(percent[5])++;
}
for(i=0;i<6;i++)
{
percent[i]=(percent[i]/m)*100;
cout<<"各个分段的人数:"<<endl;
for(i=0;i<6;i++) 
 {
cout<<"第"<<"段:"<<fixed<<setprecision(2)<<percent[i]<<"%"<<endl; 
 }
} 
}

运行结果及报错内容

img

  • 写回答

1条回答 默认 最新

  • 关注

    img


    将这个判断改为小于0 而不是小于等于 0

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 请提交代码 6月16日
  • 系统已结题 3月29日
  • 已采纳回答 3月21日
  • 修改了问题 11月23日
  • 展开全部

悬赏问题

  • ¥15 关于温度改变石墨烯介电性能(关键词-介电常数)
  • ¥150 HDMI分路器LT86102 的输出在890MHz频点处EMC超标8DB
  • ¥15 druid(相关搜索:数据库|防火墙)
  • ¥15 大一python作业
  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
  • ¥60 如何鉴定微信小程序数据被篡改过
  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥20 手机截图相片分辨率降低一半