C语言中获取三个数最大值后补充求最小值的正确实现方式
问题根因
- 现有最大值逻辑本身存在漏洞:你将max初始值设为固定值0,且没有将输入的第一个变量
a纳入比较范围,如果输入的三个数全为负数,或者a是三个数中的最大值,得到的max结果也会错误。 - 最小值始终返回0的直接原因:你仅对min做了初始化为0的操作,全程没有添加任何更新min值的判断逻辑,程序最终只会输出初始的0值。
正确实现代码
最稳妥的实现方式是先将max、min初始化为第一个输入值a,再依次和剩余两个值比较更新,兼容所有正负整数场景:
#include <stdio.h> int main() { int a, b, c, max, min; printf("Enter 3 numbers please : "); scanf("%d%d%d", &a, &b, &c); // 先初始化最大、最小值为第一个输入值,避免固定初始值带来的边界问题 max = a; min = a; // 对比b更新最值 if (b > max) max = b; if (b < min) min = b; // 对比c更新最值 if (c > max) max = c; if (c < min) min = c; printf("Max Num is : %d \n", max); printf("Min Num is : %d \n", min); return 0; }
内容的提问来源于stack exchange,提问作者user14947646
相关产品推荐
相关产品推荐

