分析:要求将[0-50],[60-69],[70-79],[80-89],[90-100]这5个分数段的人数分别统计在a[5]~a[9]中。学生成绩采用百分制。当非法输入时,结束统计。
这是书上的做法:但是我试了一下发觉有点不对,不知为什么
#include <stdio.h>
void main()
{ float x;
int i,k;
static int a[10];
do
{ scanf("%f",&x);
k=(int)x/10;
if(k<6) k=5;
if(k==10) k=9;
a[k]=a[k]+1;
}
while(k>=0&&k<=10);
for(i=5;i<10;i++)
printf("%d",a[i]);
}
原来的程序会将101到109之间的数统计到[90-100]这个分数段,所以应该加个判断:
#include <stdio.h>
void main()
{ float x; int i,k; static int a[10];
do {
scanf("%f",&x);
if(x>100) break;
k=(int)x/10;
if(k<6) k=5;
if(k==10) k=9;
a[k]=a[k]+1; }
while(k>=0&&k<=10);
for(i=5;i<10;i++) printf("%d",a[i]);
}
改成这样就可以了
#include <stdio.h>
void main()
{
int x;
int i,k;
static int a[10];
while(1)
{
scanf("%d",&x);
getchar();
k=(int)x/10;
if(k>=0&&k<6) k=5;
else if(k==10) k=9;
else if (k<0||k>10) break;
a[k]=a[k]+1;
}
for(i=5;i<10;i++)
printf("%d ",a[i]);
}