C语言:计算全班平均成绩,及统计各分数段人数的程序问题

#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的数回车就直接返回结果了!请问这是什么问题?

#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;
}

温馨提示:答案为网友推荐,仅供参考
相似回答