#include
int main()
{
int numbers[5];
unsigned int count = 5;
long sum=0l;
float average = 0.0f;
printf("\nEnter your Numbers:\n");
for (unsigned int i = 0; i < count; i++)
{
printf("%2u>><<", i+1);
scanf("%d", numbers);
sum += numbers[i];
}
average = (float)sum / count;
printf("平均数是:%2f\n", average);
}
这是一个程序,我知道是错误的,我想知道的是为什么我输入五个25,然后得到的结果会是:171798688.000000这个数,这个数怎么来的。。
如图:
首先要看楼主用的什么IDE(我这里以VS为例)
楼主加一句打印printf("%d %d\n", sum, numbers[i]);就知道为什么了
你的int没有初始化过,所以默认栈上的值是0xcccccccc (即-858993460)
当相加3次后,int会发生溢出所以从负数又变成了正数
#include <stdio.h>
int main()
{
int numbers[5];
unsigned int count = 5;
long sum = 0l;
float average = 0.0f;
printf("\nEnter your Numbers:\n");
for (unsigned int i = 0; i < count; i++)
{
printf("%2u>><<", i + 1);
scanf("%d", numbers);
sum += numbers[i];
printf("%d %d\n", sum, numbers[i]);
}
average = (float)sum / count;
printf("平均数是:%2f\n", average);
}
scanf("%d",&numbers[i]);
最简单的方法是在每次输入值后,就输出一次numbers[i]的值或者你想了解的其它变量的值,一点一点验证