寻找平均值

时间:2014-01-09 11:56:34

标签: c

我已经编写了下面的代码来获取我想输入的数字作为输入,但是当我尝试获取它们并找到它们的平均值时,它无法正常工作。

const int n;
float max,min;
int i,x=0,z=0;
float ave[n];
printf("How many numbers do you want to enter?\n");
scanf("%d",&n);

5 个答案:

答案 0 :(得分:7)

您在错误的位置声明了可变长度数组ave。获取输入n后声明它。并将n声明为int而不是const int(否则修改const限定类型对象会调用未定义的行为)。

int n;
float max,min;
int i,x=0,z=0;
printf("How many numbers do you want to enter?\n");
scanf("%d",&n);  
float ave[n];

答案 1 :(得分:4)

更改const int n; to int n;
应在定义时间内初始化const int n;。您将n声明为const int,并且您尝试将数据存储到输入中。

答案 2 :(得分:3)

您有两种未定义的行为。首先,您尝试修改常量(n是常量,不应修改)。第二个是当你声明数组时,使用未初始化的n,它将为零,因此创建一个零长度数组,然后继续写入。

答案 3 :(得分:2)

问题在于您声明了

float ave[n]
在给 n 一个值之前

。所以 n == 0。

要解决此问题,请为ave[]提供更大的固定大小,或在阅读 n 后为其分配内存。

答案 4 :(得分:0)

您可以为此创建动态数组。仅在运行时创建内存空间。相应的代码段如下:

int* ave;
ave = (int*)malloc(i*sizeof(int)); 
for (j=0;j<n;j++)
  {
     ave[j]=j;                            // the pointer can be used as an array
     printf("%d\n",ave[j]);
  }