【发布时间】:2020-05-04 02:16:00
【问题描述】:
我正在创建一个程序,该程序使用 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
【问题讨论】:
-
请注意,如果输入的最大值为负数(换句话说,所有值都是负数),您的代码将无法正确处理最大数 - 但您会得到一个非零的最小值。您没有正确初始化最小的数字。最好使用第一个条目作为最小值和最大值的初始值——然后一切都会起作用。当您第一次在循环外调用
scanf()时,这很简单。每次调用时不要忘记检查scanf()是否成功。或者,由于您使用float,因此使用 +∞ 和 -∞ 来初始化最小和最大的初始化器。 -
计算每次迭代的平均值没有多大意义;等待输入完成。
标签: c