#include <stdio.h> int main() { int n; // 数组的元素数量 printf("请输入数组的元素数量:"); scanf("%d", &n); int arr[n]; // 定义数组 int i, sum = 0; for (i = 0; i < n; i++) { printf("请输入第%d个元素的值:", i + 1); scanf("%d", &arr[i]); sum += arr[i]; // 求和 } double average = (double)sum / n; // 计算平均值 printf("数组的平均值为:%f\n", average); return 0; } expected constant expression D:\2023\软考\C\practice_06.cpp(21) : error C2466: cannot allocate an array of constant size 0 D:\2023\软考\C\practice_06.cpp(21) : error C2133: 'arr' : unknown size
时间: 2024-01-07 08:03:44 浏览: 83
# include <stdio.h>
这是因为在定义数组 arr 时,数组的大小必须是一个常量表达式,而 n 是一个变量。在 C 语言中,可以使用动态内存分配函数 malloc 来动态创建数组,可以改写代码如下:
```c
#include <stdio.h>
#include <stdlib.h> // 需要包含动态内存分配函数 malloc 的头文件
int main() {
int n; // 数组的元素数量
printf("请输入数组的元素数量:");
scanf("%d", &n);
int *arr = (int *)malloc(n * sizeof(int)); // 动态创建数组
int i, sum = 0;
for (i = 0; i < n; i++) {
printf("请输入第%d个元素的值:", i + 1);
scanf("%d", &arr[i]);
sum += arr[i]; // 求和
}
double average = (double)sum / n; // 计算平均值
printf("数组的平均值为:%f\n", average);
free(arr); // 释放动态分配的内存
return 0;
}
```
在使用完动态分配的数组后,需要使用 free 函数释放动态分配的内存,避免内存泄漏。
阅读全文