【发布时间】:2021-05-08 04:21:41
【问题描述】:
#include <stdio.h>
#include <math.h>
int main(void) {
double stotal, smean, sd, ermean, total, mean, j, k;
int n, i;
printf("enter n numbers to be entered\n");
scanf(" %d", &n);
double x[n];
for (i = 0; i < n; i++) {
printf("enter value for X\n");
scanf(" %lf", &x[i]);
}
for (i = 0; i < n; i++) {
j = x[i];
stotal = stotal + (j * j);
printf("%f\n", total);
}
for (i = 0; i < n; i++) {
k = x[i];
total = total + k;
printf("%f\n", total);
}
mean = total / n;
smean = stotal / n;
sd = sqrt(smean - pow(mean, 2));
ermean = sd / sqrt(n);
printf("sum is %lf\n", total);
printf("mean is %lf\n", mean);
printf("sum squared is %lf\n", stotal);
printf("mean squared is %lf\n", smean);
printf("standard deviation is %lf\n", sd);
printf("error in mean is %lf", ermean);
return 0;
}
输出:
sum is -1.#QNAN0
mean is -1.#QNAN0
sum & mean 的输出关闭,我怀疑它的总功能有问题,但我不知道如何修复它。
编辑:
这次代码重新编辑了初始化,很抱歉给出了一个令人困惑的声明,代码实际上适用于一个非常大的值,我只是忘记完全初始化必要的变量。
修改后的代码:
double stotal=0,smean=0,sd=0,total=0,mean=0,j,k;
【问题讨论】:
-
total未初始化,如果您打开编译器警告就会发现。 -
stotal也未初始化。 -
啊,忘了。
-
还有一个问题,但是输入一个非常大的值仍然会导致同样的问题。 sd & ermean 输出为
-1#IND00 -
@anno:编辑问题以提供minimal reproducible example,包括重现问题的“非常大的值”。
标签: c floating-point