首页 > 解决方案 > While 循环不会打印输入的最小数字

问题描述

我正在创建一个程序,该程序使用 while 循环从用户给出的输入中提供多条信息。其中一件是输入的最小数字。我不能让它打印除 0 以外的任何东西。知道为什么吗?

#include <stdio.h>
#include <stdlib.h>

int main()
{
    float num, sum = 0, sm, lg = 0, count = 0, avg = 0;

    printf("Please enter a series of numbers (-1 to terminate): ");
    scanf("%f", &num);

    while(num > -1){
        sum += num;
        if(lg < num)
        lg = num;
        if(sm > num)
        sm = num;
        scanf("%f", &num);
        count++;
        avg = sum / count;
    }

    printf("The sum of your numbers is: %.4f\n", sum);
    printf("You entered %.4f numbers\n", count);
    printf("The average of the numbers you entered is: %.4f\n", avg);
    printf("The smallest number you entered is: %.4f\n", sm);
    printf("The Largest number you entered is: %.4f", lg);
    return 0;
}

前输入 - 15 43 22.5 57.6 -1 输出总和:138.1000 输入的 4 个数字平均:34.5250 最小:0.0000 最大:57.6000

标签: c

解决方案


在您的代码中,sm有一个未定义的值,因为您没有对其进行初始化。您可以将它初始化为一个非常大的数字(或者,甚至更好,INFINITY),以便可以正确比较它。也是如此lg:如果您希望它也适用于负值,则应使用非常小的值 ( -INFINITY) 对其进行初始化。您可以INFINITY通过包含math.h.


推荐阅读