C 平均数

C 平均数,c,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); 改变const int n;到int n const int n应在定义期间初始化。您将n声明为const int,并试图将数据存储到从输入获

我在下面写了一些代码来获取我想输入的数字,但当我试图获取它们并找到它们的平均值时,它无法正常工作

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);

改变
const int n;到int n

const int n应在定义期间初始化。您将n声明为const int,并试图将数据存储到从输入获取的数据中。

Change
const int n;到int n

const int n应在定义期间初始化。您将n声明为const int,并试图将数据存储到从输入获取的数据中。

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


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


问题是你要申报

float ave[n]
在你给n一个值之前。所以n==0


要修复它,请给
ave[]
一个更大的固定大小,或者在读取n之后为其分配内存。

问题在于您声明

float ave[n]
在你给n一个值之前。所以n==0


要修复它,请给
ave[]
一个更大的固定大小,或者在读取n之后为它分配内存。

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

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

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

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]);
  }
int*ave;
ave=(int*)malloc(i*sizeof(int));

对于(j=0;j您可以为此创建动态数组。此处仅在运行时创建内存空间。相应的代码段如下所示:

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]);
  }
int*ave;
ave=(int*)malloc(i*sizeof(int));

对于(j=0;jSo n==未定义,不一定是0。因此n==未定义,不一定是0。@RoyDictus;此功能首先在C99草案中引入。它会起作用。请参阅C99草案的第6.7.5.2节数组声明器。@RoyDictus;此功能首先在C99草案中引入。它会起作用。请参阅C99草案的第6.7.5.2节数组声明器。如果有n,则还有第三个如果n为