每次我运行它时,最小值和最大值都是相同的数字,有时是错误的,我完全不明白为什么会这样。这是一个基于用户输入的基本计算器。我猜这是主要问题,但如果不是,我将用其余代码对其进行编辑。
for (i = 1; i <= n; i = i + 1) {
printf("Enter data item %d: ", i);
scanf("%f", &data);
sumx = sumx + data;
sumx2 = sumx2 + (data*data);
}
mean = sumx / n;
var = 1.0/(n-1) * (sumx2 - (1.0/n)*sumx*sumx);
sd = sqrt(var);
if (data > max){
max = data;
}
else if(data < min)
min = data;
/* print the computed values */
printf("\n");
printf("mean = %f\n", mean);
printf(" variance = %f\n", var);
printf("std. dev. = %f\n\n", sd);
printf("The minimum number in the list is %d.\n", min);
printf("The maximum number in the list is %d.\n", max);
return 0;
}
最佳答案
您没有将最小值和最大值的初始设置显示为默认值。
float mymin = FLT_MAX;
float mymax = FLT_MIN;
您也不应该使用 if else if 以确保第一次启动循环时设置数据。
此外,由于您在发出测试之前运行循环并完成它,因此您仅在处理的最后测试值,这意味着您永远不会检查最小值或最大值。其他类型的更改也如下所示。
int myfunc(int n)
{
float mymin = FLT_MAX;
float mymax = FLT_MIN;
float sumx = 0.0;
float sumx2 = 0.0;
float data;
float mean;
float var;
float sd;
int i;
for (i = 1; i <= n; i++) {
printf("Enter data item %d: ", i);
scanf("%f", &data);
if (data > mymax){
mymax = data;
}
if(data < mymin) {
mymin = data;
}
sumx += data;
sumx2 += (data*data);
}
mean = sumx / n;
var = 1.0/(n-1) * (sumx2 - (1.0/n)*sumx*sumx);
sd = sqrt(var);
/* print the computed values */
printf("\n");
printf("mean = %f\n", mean);
printf(" variance = %f\n", var);
printf("std. dev. = %f\n\n", sd);
printf("The minimum number in the list is %f.\n", mymin);
printf("The maximum number in the list is %f.\n", mymax);
return 0;
}
关于C 计算器帮助--无法获取最小值和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22800268/