帮忙看下这个C++程序哪里错了

题目:从键盘输入10个同学的成绩,然后统计未及格人数(分数<60)及优秀人数(分数>90)。
要求
1。统计过程使用函数完成,输入成绩在主函数中完成
2。成绩为0-100之间的整数

提示:
1。使用数组存放成绩
2。统计过程函数原型可考虑为 void scoreProcess(int score[],int n,int * failNum, int *excelNum);
//score为存放成绩的数组,n为数组的元素个数, failNum和excelNum分别用来表示未及格人数和优秀人数;
#include<iostream>
using namespace std;
void scoreProcess(int score[],int n,int &failNum, int &excelNum)
{int i=1;
for(i=1;i<=n;i++)
{if (score[i]<0||score[i]>100)
{cout<<"error"<<endl;
cout<<"请重新输入"<<endl;
i--;}
else{ if(score[i]<60) failNum++;
else if(score[i]>90) excelNum++;
}}
cout<<"不及格人数:"<<failNum<<endl;
cout<<"优秀人数:"<<excelNum<<endl;
}
int main()
{int score[10];
int i=1,failNum=0,excelNum=0;
for (i=0;i<10;i++)
{cout<<"请输入"<<i+1<<"个同学的成绩: ";
cin>>score[i];}
scoreProcess(score,10,failNum,excelNum);
}

你好,首先建议你在写代码的时候,先注意格式规范,让其它人在读的时候更流畅更舒服。你这代码主要的问题就是控制分数介于0-100之间时,不应该放在scoreProcess函数中处理,因为你在main函数中将分数已经放在了score[]数组中,再到scoreProcess函数中来检查这些值是否正确,不太好。所以我根据你的程序,大概改写了一下,希望对您有帮助:

#include<iostream>
using namespace std;

void scoreProcess(int score[],int n,int &failNum, int &excelNum)
{
int i=0;
for(i=0;i<n;i++)
{
if(score[i]<60)
failNum++;
else if(score[i]>=90)
excelNum++;
}
cout<<"不及格人数:"<<failNum<<endl;
cout<<"优秀人数:"<<excelNum<<endl;
}

int main()
{
int score[10];

int i=0,failNum=0,excelNum=0;

while(1)
{
int s;
cout<<"请输入第"<<i+1<<"个同学的分数:";
cin>>s;
if (s<0 || s>100)
{
cout<<"刚才输入的数值不合法,必须重新输入!"<<endl;
continue;
}
score[i] = s;
i++;

if (i == 10)
{
break;
}
}
scoreProcess(score,10,failNum,excelNum);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-03
函数scoreProcess()有几处错误,看注释:
void scoreProcess(int score[],int n,int &failNum, int &excelNum)//因为输出是在这个函数完成的,没有涉及到值传递,所以不用地址引用
{int i=1;
for(i=1;i<=n;i++)
{if (score[i]<0||score[i]>100)
{cout<<"error"<<endl;
cout<<"请重新输入"<<endl;
i--;} //如果输入的分数小于0或是大于100,那么这段程序就是死循环。因为i--后又i++,i恒等于1
else{ if(score[i]<60) failNum++;
else if(score[i]>90) excelNum++;
}}
cout<<"不及格人数:"<<failNum<<endl;
cout<<"优秀人数:"<<excelNum<<endl;
}
第2个回答  2010-06-03
我帮你改了一下,你看一下,应该能看懂滴
#include<iostream>
using namespace std;
void scoreProcess(int score[],int n,int &failNum, int &excelNum)
{
int i=1;

for(i=1;i<=n;i++)
{
cout<<"请输入"<<i<<"个同学的成绩: ";
cin>>score[i];
while(score[i]<0||score[i]>100)//使输入的分数符合要求,若不符合,重新输入
{
cout<<"error"<<endl;
cout<<"请重新输入"<<endl;
cin>>score[i];
}
if(score[i]<60)//不及格人数加1
failNum++;
else
if(score[i]>90) excelNum++;//优秀人数加1
}

cout<<"不及格人数:"<<failNum<<endl;
cout<<"优秀人数:"<<excelNum<<endl;
}
int main()
{
int score[10];
int i=1,failNum=0,excelNum=0;
scoreProcess(score,10,failNum,excelNum);

}

C++请问下面这个程序哪里错了,我照课本输入输入时, 显示1 error(s...
point D[2]={Point(5,7),Point(8,12)};错了,把point D[2]改成Point D[2]VC区分大小写的,注意

谁帮我看一下这个C++程序错在哪里啊?刚开始学函数………
你好粗心哦 就是 for(j=1;j<=2i-1;++j) cout<<"#";这里输入错了 是j < = 2 * i -1啊 2i当然不认喽 include<iostream.h> void printstar ();void printstars (int n);int main (){ int n;printstar ();cout<<"请输入行数";cin>>n;printstars (4);return 0;} void ...

我这段c++程序通不过编译,大家帮看看哪里错了。提示“can not convert...
首先,你这个代码有内存泄漏问题,malloc到的空间,没有free 其次,返回值应该是char,不是char*,因为你返回的是 *s,如果是return s的话就对了。

高手们,帮忙看下这个C++程序的错误在哪里? 我想找出矩阵中最大的数...
找一个矩阵的鞍点,鞍点就是(数X在这一行上最大,而在他所在的列上最小) .看看能不能做了.比如说一个矩阵a[3][3]={1,2,3,4,5,6,7,8,9};那么鞍点就是a[0][2]=3

这个C++求平均值程序为什么不对?
这个C++求平均值程序有两处错误,如图中标示。错误一:整数数组结束不能用\\0,只能通过数组大小n控制循环次数。改成i<n。错误二:ave函数要返回double类型,你的结果avg是个整形不合适,更重要的是avg\/n整形相除只保留整数,除非你不想要小数,否则请把avg数据类型改成double。

。。。看下这个求e近似值的c++程序,哪里错了
关系运算错了,随着a增加1.0\/fac(a)减小 for(a=1;1.0\/fac(a)<=10e-6;a++)改为 for(a=1;1.0\/fac(a)>=10e-6;a++)另外,泰勒级数展开少加了1。include <iostram> using namespace std;void main(){ double fac(int);int a;double e=1,b;for(a=1;1.0\/fac(a)>=10e-6...

这是关于电梯的C++程序,大神看看哪里错了?
第35行的for循环中的i,你在类里面已经定义过了,你再次定义就会报这种错误,变量重复定义,把for循环中的i换一个名称就可以了。换成j什么的

哪位高手帮我看下这个C++程序哪里出错了,是重载运算符的
+”函数 cout<<"s0=s1+s2=";s0.display();s4=s1^s2; \/\/“s1^s2”处,将调用“operator ^”函数 cout<<"s1^s2=";\/\/多了一个<符号,且这个值是一个距离,不需要用坐标表示,LZ改改吧,如果还需要什么可以联系我 s4.display();system( "pause" );\/\/系统暂停 return 0;\/\/ } ...

c++ 有一道题目麻烦各位帮我看看我做的哪里错了,谢谢!
一开始就错了。既然是用switch语句,那么p是整型,而不能定为实型。从各个奖金的区间来看,你分的各种case基本都错了,从case 2开始,后面都错了。而且题目没有如果输入p的值是负数的错误提示。整个程序基本上错得差不多了。

c++中怎么看程序哪里出错
运行后下面有出错提示,双击出错的提示然后代码出错的地方会有箭头标注。

相似回答
大家正在搜