设计一个程序,从键盘输入小于30个学生成绩,当输入为1时,输入完毕统计并显示优、良、中、及格及不及格人数;我的程序如下:
#include <stdio.h>
int main ()
{
int n[30],a,b,c,d,e,i;
a=b=c=d=e=0;
printf("Enter n[i]:");
for(i=0;i<30;i++)
scanf("%d",&n[i]);
for (i=1;i<30;i++)
{
if(n[i]>90)
{
a=a+1;
}
else if((n[i]>=80)&&(n[i]<=90))
{
b=b+1;
}
else if((n[i]>=70)&&(n[i]<80))
{
c=c+1;
}
else if((n[i]>=60)&&(n[i]<70))
{
d=d+1;
}
else if((n[i]<60)&&(n[i]>0))
{
e=e+1;
}
else(n[i]==1);
{
printf("error");
}
}
printf("优%d\n: 良%d\n 中%d\n 及格%d\n 不及格%d\n",a,b,c,d,e);
return 0;
}
但运行出来结果却是:
你这里设置成了必须输入30个分数之后才会计算成绩合不合格
我们可以在这里增加一个 if 语句来判断:
printf("Enter n[i]:\n");
for (i = 0; i < 30; i++)
{
scanf("%d", &n[i]);
if (n[i] == 1) {
break;
}
}
判断等级的地方也有些问题,我改了一下
#include <stdio.h>
int main()
{
int n[30], a, b, c, d, e, i;
a = b = c = d = e = 0;
printf("Enter n[i]:\n");
for (i = 0; i < 30; i++)
{
scanf("%d", &n[i]);
if (n[i] == 1) {
break;
}
}
for (i = 1; i < 30; i++)
{
if (n[i] > 90 && n[i] <= 100)
{
a = a + 1;
}
else if (n[i] >= 80)
{
b = b + 1;
}
else if (n[i] >= 70)
{
c = c + 1;
}
else if (n[i] >= 60)
{
d = d + 1;
}
else if (n[i] >= 0)
{
e = e + 1;
}
}
printf("优:%d个人\n良:%d个人\n中:%d个人\n及格:%d个人\n不及格:%d个人\n", a, b, c, d, e);
return 0;
}
测试结果如下:
有帮助的话记得点个采纳支持一下博主呀
1 循环无法终止
for(i=0;i<30;i++)
scanf("%d",&n[i]);
2 当n[i]==1时循环没有跳出