gpt4 book ai didi

c - 在 C 中生成最大值、最小值和平均数

转载 作者:行者123 更新时间:2023-11-30 21:17:33 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <math.h>
int main( void )
{
float values[999999];
int number = 0;
float max = -100000, min = 100000, total = 0, mean = 0;

while ((scanf("%f", &values[number++])) != EOF )
for(int a = 0; a < number; a++) {
total = total + values[a];
if (values[a] > max) { max = values[a]; }
if (values[a] < min) { min = values[a]; }
}
mean = total / (float)(number-1);
printf("%.2f %.2f %.2f\n", min, max, mean);
printf("%f", total);
printf("%d", number);
}

我得到了这样的结果:

5.6
6
7
5.60 7.00 11.93
35.800003
Program ended with exit code: 0

我预计平均值为 6.2,而不是 11.93

最佳答案

这个for循环

for( int a=0;a<number;a++){

似乎是错误的。它会让您重新计算每个新输入数字的total。尝试删除 for 循环。喜欢:

while ((scanf("%f",&values[number])) != EOF )
{
total=total+values[number];
if(values[number]>max) max=values[number];
if(values[number]<min) min=values[number];
number++;
}

此外,这一行似乎是错误的:

mean=total/(float)(number-1);

我认为你需要

mean=total/number;

但如果 number 为零,则不要进行此计算,即:

mean = (number != 0) ? mean=total/number : 0;

最后,这一行:

float values[999999];

它是一个作为局部变量的巨大数组。也许你会遇到堆栈溢出。尝试较小的数组大小或使用动态内存分配。注意:对于这样的程序,您甚至不需要数组。只需一个 float ,然后对每个新输入进行计算。

最后,您应该检查 scanf 是否返回 1。如果不返回,则 values[number] 未初始化,不应使用。尝试:

while ((scanf("%f",&values[number])) == 1 )

关于c - 在 C 中生成最大值、最小值和平均数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39844700/

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