#include <stdio.h>
int main()
{
int cnt;
int x;
double sum=0.0;
printf("请输入数字的数量\n");
scanf("%d",&cnt);
if(cnt>0){
int number[cnt];
scanf("%d",&x);
while(x!=-1){
number[cnt]=x;
sum+=x;
cnt++;
scanf("%d",&x);
}
}
printf("%f\n",sum/cnt);
return 0;
}
如果输入cnt=10
结果:number【cnt】=0
而进行cnt++时得到cnt=11
为什么number【cnt】=0?
错在哪里?如何改进?
我看了你的代码,很简单的问题。
首先,数组的索引是从0开始的,而你在循环中使用了 cnt 作为索引,但是你在循环前已经将 cnt 初始化为用户输入的数字数量。这将导致数组越界访问。在数组 number 中,有效的索引范围是从 0 到 cnt-1,而你使用了 number[cnt],超出了数组的有效范围。
其次,你在循环中使用了 cnt++,这是错误的。你应该使用一个不同的变量来作为循环的计数器,而不是修改 cnt 的值。修改 cnt 的值会导致后续计算平均值时出现错误。