C语言:从键盘上输入若干学生的成绩,计算出平均成绩,并输出不及格的成绩和人数

#include<stdio.h>
int main()
{
char ch;
int i,x,n=0,s=0;

for(i=1;;i++)
{scanf("%d",&x);
if((ch=getchar())='\n') break;

if(x<60)
{printf("%d ",x);n++;}
s+=x;}
printf("\n平均分=%d 不及格人数=%d",s/(i-1),n);
}
我写的哪里错了???

#include<stdio.h>
int main()
{
char ch;
int i,x,n=0,s=0;

for(i=1;;i++)
{
printf("请输入学生成绩,以空格隔开,以回车结束:\n");
scanf("%d",&x);
if(x<60)
{
printf("%d ",x);
n++;
}
s+=x;
if((getchar())=='\n')
break;
}
printf("\n平均分=%d 班级人数%d 不及格人数=%d\n",s/i,i,n);
}
你的这段函数在if判断那里出现错误,在判断中用等号,不是赋值号,还有班级人数那里出现了错误,你是从1开始计算的,那么i就是班级人数。
在执行的时候,你输入数据应该以空格隔开,因为你是以判断换行符为循环条件的。
我在中间加了一条提示语句,这样程序的交互性会更好一点,也避免自己出错。追问

#include
int main()
{
char ch;
int i,x,n=0,s=0;
printf("请输入学生成绩,以空格隔开,以回车结束:\n");
for(i======
改成这样 避免重复输出

追答

额,确实应该拿到外面去,我还真没注意、

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-08
是if((ch=getchar())=='\n') break; //等号,不是赋值
要放在s+=x;后面
平均分改为 s/i
第2个回答  2013-06-08
scanf之后直接getchar???这不就直接退出程序了??
相似回答