gpt4 book ai didi

c - 使用scanf在c中的单行上输入多个 double 和不使用数组的循环

转载 作者:行者123 更新时间:2023-11-30 18:57:51 25 4
gpt4 key购买 nike

我的程序应该读取多个输入并显示最小值、最大值、总和和平均值。它应该看起来像这样:

输入:

2.5 5 3.5 4.5 jfkjk

输出:

min is 2.5
max is 5
sum is 15.5
average is 3.875

程序应该在到达非数字或换行符时退出。用户可以输入任意数量的数字。我不能使用数组,必须使用循环。这就是我的程序的样子:

void numbers()
{
double digit;
double sum = 0;
double avg = 0;
double max;
double min;
unsigned count = 0;
//int c;
max = 0;
printf("Input:");

do {
scanf("%lf", &digit);

min = digit;
if(max < digit)
digit = max;
if(min < digit)
digit = min;
sum += digit;
count++;
avg = sum/count;
} while( scanf("%lf", &digit)==1 )

printf(" min is %lf max is %lf sum is %lf avg is %lf count is %u", min, max, sum, avg, count);
}

打印输出:

Input:2.2 2.3 5 3.5 blah 
min is 3.500000 max is 0.000000 sum is 0.000000 avg is 0.000000 count is 4

最佳答案

您的代码中隐藏着 2 个非常令人不快的错误:

  • 迭代数字时更新(不)更新minmax的方式

    这个:

    if(max < digit)
    digit = max;
    if(min < digit) // <-- the comparison for min is incorrect as well
    digit = min;

    应该是:

    if(max < digit)
    max = digit;
    if(min > digit)
    min = digit;

    因为您要更新 min/max,而不是已读取的 digit

  • 循环逻辑

    这个:

    do {
    scanf("%lf", &digit);
    ...
    } while( scanf("%lf", &digit)==1 )

    应该是:

    while( scanf("%lf", &digit)==1 ) {
    ...
    }

关于c - 使用scanf在c中的单行上输入多个 double 和不使用数组的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19168232/

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