C语言max_of_four函数代码错误排查:输入3 4 5 6输出60
代码问题排查与修复
核心问题分析
输入3 4 5 6输出60的直接原因:
max_of_four函数内部直接调用printf输出了最大值6- 函数最后固定返回
0,main函数又打印了这个返回值0,两者拼接后就变成了60
此外代码还有两个隐藏缺陷:
- 当存在多个相等的最大值时(比如输入
5 5 3 2),不会有任何输出 - 函数设计不符合命名逻辑:
max_of_four应该返回最大值而非直接打印结果
修复后的代码
#include <stdio.h> int max_of_four(int a, int b, int c, int d) { int max = a; if (b > max) max = b; if (c > max) max = c; if (d > max) max = d; return max; } int main() { int a, b, c, d; scanf("%d %d %d %d", &a, &b, &c, &d); int ans = max_of_four(a, b, c, d); printf("%d", ans); return 0; }
修复说明
- 让
max_of_four专注于计算最大值并返回,把打印操作交给main函数,符合单一职责原则 - 用逐步比较的方式找最大值,逻辑简洁且覆盖了存在相等值的场景
- 现在输入
3 4 5 6会正确输出6,输入5 5 3 2也能输出5
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

