从键盘输入若干学生成绩,每输入一个成绩都提示这是第几名学生,当输入负数时结束,统计并输出平均成绩,用while或for循环实现

题目

img


请问我的代码哪里错了,谢谢回答!

#include <stdio.h>
int main(){
int cj,ave,n,total=0;
for(n=1;cj>=0;n++){ 
printf("第%d名学生成绩:",n);
scanf("%d",&cj);
if(cj>=0)total=total+cj;
}
ave=total/(n-1);
printf("平均分=%d",ave);} 

img

ave=total/(n-2); 这里应该是-2 因为 n=5的时候 输入了-1作为结束 有效数据只有4个 然后会执行到for循环的n++, n变成了6 比实际数据多了两个 因为平均值 可能会是小数 所以应该用float类型 把int类型修改为float类型 %d修改为%f

改成这样即可

#include <stdio.h>
int main(){
int cj,ave,n,total=0;
for(n=0;cj>=0;n++){ 
printf("第%d名学生成绩:",n+1);
scanf("%d",&cj);
if(cj>=0)
total=total+cj;
}
ave=total/(n-1);
printf("平均分=%d",ave);
return 0;
}