【发布时间】:2020-08-01 04:46:59
【问题描述】:
我是 C 新手,我正在努力掌握基础知识,所以我编写了一个程序,它可以为您提供树数的平均值并且它可以工作,但是当我尝试编写它的更通用版本时,作为我收到的输出:插入一系列数字:“数字的平均值是-nan”。这意味着我什至不能插入数字。我现在不知道如何以更好的方式编写 scanf 部分。
代码如下:
#include <stdio.h>
int main() {
int p;
double n[p];
int i;
double sum = 0;
double m;
printf("Insert a series of numbers:\n");
for(int r = 0; r < p; r++) {
scanf("%lf", &n[r]);
}
for(i = 0; i < p; i++) {
sum += n[i];
}
m = sum / p;
printf("The mean of the numbers is %lf", m);
return 0;
}
【问题讨论】:
-
未定义的行为。
p未初始化,因此定义double n[p];未定义。 -
这里有一些问题。首先你还没有定义
p!for循环如何知道何时停止?当您声明变量int p时,它有一个随机值。确保初始化变量,例如int p=10' -
我什至可以让用户决定 p 的值吗?也许通过在第一个 for 之前放置另一个 printf 和 scanf
-
@Schiele 是的,那么
n就是所谓的 VLA 或可变长度数组 -> en.wikipedia.org/wiki/Variable-length_array。
标签: c arrays initialization variable-assignment