从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,输入负数结束程序执行

#include<stdio.h>void main(){ float grade[100],sum=0,ave; int n=0,i=0; //变量n统计输入学生成绩的个数 printf("enter grades:\n"); do { scanf("%f",&grade[i]); i++; n++; }while(grade[i]>=0); for(i=0;i<n;i++) sum=sum+grade[i]; ave=sum/n; printf("ave=%.2f\n",ave); printf("lower than the average:\n"); for(i=0;i<n;i++) if(grade[i]<ave) printf("%f\t",grade[i]);}请帮忙看一下,这个程序哪里出了错,为什么运行结果不对呢?

printf("enter grades:\n");
scanf("%f", &grade[i]);
while (grade[i] !=-1){
i++;
scanf("%f", &grade[i]);

n++;

}
你用的do-while循环先无条件执行了括号里的内容,再判断while里的条件。这样会导致n值出错。追问

我感觉是首先因为grade[]没有初始化,然后如果我输入了grade[0],执行了i++后出来判断条件执行的是grade[1]>=0,所以导致运行结果是错的,这样理解对吗

追答

嗯对

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