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,并试图将数据存储到从输入获取的数据中。Changeconst 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为