gpt4 book ai didi

C 计算器帮助--无法获取最小值和最大值

转载 作者:行者123 更新时间:2023-11-30 15:35:47 25 4
gpt4 key购买 nike

每次我运行它时,最小值和最大值都是相同的数字,有时是错误的,我完全不明白为什么会这样。这是一个基于用户输入的基本计算器。我猜这是主要问题,但如果不是,我将用其余代码对其进行编辑。

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com