在C中计算n个数字的数组的平均值

Calculate the mean of an array of n numbers in C

我是 C 的新手,我正在努力掌握基础知识,所以我编写了一个程序,它可以为您提供树数的平均值并且它可以工作,但是当我尝试编写一个更通用的版本时它,作为我收到的输出:插入一系列数字:"The mean of the numbers is -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;
}
int p;

您忘记初始化 p。由于 pautomatic 存储 class 的一个对象,它具有不确定的值。

因此,

double n[p];
....

for(int r = 0; r < p; r++){
    scanf("%lf", &n[r]);
}

for(i = 0; i < p; i++){
    sum += n[i];
}
m = sum / p;

调用 undefined behavior.

像f.e一样初始化p

int p = 5;

如果所有项目都已成功分配,也不要忘记检查 scanf() 的 return 值,例如:

if(scanf("%lf",&n[r]) != 1) 
{
     fprintf(stderr,"Error at scanning!");
     return 1;
}