C语言:计算全班平均成绩,及统计各分数段人数的程序问题
#include<stdio.h>intmain(void){floatsum=0.0,avg=0.0;intnum,count,c9,c89,c78,c67,c6;nu...
#include<stdio.h>int main(void){ float sum=0.0,avg=0.0; int num,count,c9,c89,c78,c67,c6; num=count=c9=c89=c78=c67=c6=0; scanf("%d",&num); while(num>0 && num<101); { sum=sum+num; count=count+1; if(num>=90) c9=c9+1; else { if(num>=80 && num<90) c89=c89+1; else { if(num>=70 && num<80) c78=c78+1; else { if(num>=60 && num<70) c67=c67+1; else c6=c6+1; } } } scanf("%d",&num); } avg=sum/count; printf("全班平均成绩为:%f\n",avg); printf("90分以上的(包括90分)的人数是:%d\n",c9); printf("80~90分(包括80分)的人数是:%d\n",c89); printf("70~80分(包括70分)的人数是:%d\n",c78); printf("60~70分(包括60分)的人数是:%d\n",c67); printf("60分以下的人数是:%d\n",c6); return 0;}这段程序编译和连接都没问题,但是在执行的时候输入0~101之间的数回车之后就没办法再输入数据,如果先输入一个负数,回车,再输入一个0~101的数回车就直接返回结果了!请问这是什么问题?
展开
1个回答
展开全部
#include<stdio.h>
int main(void)
{ float sum=0.0,avg=0.0;
int num,count,c9,c89,c78,c67,c6;
num=count=c9=c89=c78=c67=c6=0;
scanf("%d",&num);
while(num>=0 && num<101) //这里不能有分号,否则就进入死循环了。另外,还应当允许为0
{ sum=sum+num;
count=count+1;
if(num>=90) c9=c9+1;
else
{ if(num>=80 && num<90) c89=c89+1;
else
{ if(num>=70 && num<80) c78=c78+1;
else
{ if(num>=60 && num<70) c67=c67+1;
else c6=c6+1;
}
}
}
scanf("%d",&num);
}
avg=sum/count;
printf("全班平均成绩为:%f\n",avg);
printf("90分以上的(包括90分)的人数是:%d\n",c9);
printf("80~90分(包括80分)的人数是:%d\n",c89);
printf("70~80分(包括70分)的人数是:%d\n",c78);
printf("60~70分(包括60分)的人数是:%d\n",c67);
printf("60分以下的人数是:%d\n",c6);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询