c - 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
解决方案
在您的代码中,sm
有一个未定义的值,因为您没有对其进行初始化。您可以将它初始化为一个非常大的数字(或者,甚至更好,INFINITY
),以便可以正确比较它。也是如此lg
:如果您希望它也适用于负值,则应使用非常小的值 ( -INFINITY
) 对其进行初始化。您可以INFINITY
通过包含math.h
.
推荐阅读
- ios - 本地 JSON 枚举解码
- java - 无法设置当前工作目录 (err2))
- simplejson - SimpleJSON 返回 null
- javascript - 如何将一个组件从另一个组件返回到其原始状态?
- reactjs - 嵌套路由不使用精确道具渲染和删除以前的 UI
- javascript - 如何在反应js中的循环和条件语句中进行异步api调用?
- kubernetes - Kubernetes 网络策略中的 DNSSelector 支持
- laravel - 将docker与Laravel一起使用时连接拒绝postgresql
- chart.js - 更改故事书上的 chart.js 状态
- python - 在 zappa 中出现“错误:给出双重要求:setuptools”错误