【发布时间】:2022-01-02 11:59:03
【问题描述】:
#include <stdio.h>
int max_of_four(int, int, int, int);
int main() {
int a, b, c, d;
printf("Enter 4 numbers -");
scanf("%d %d %d %d", &a, &b, &c, &d);
int ans = max_of_four(a, b, c, d);
printf("%d", ans);
return 0;
}
int max_of_four(int a, int b, int c, int d) {
int greatest, i = 0;
int num[4] = { a, b, c, d };
greatest = num[0];
while (i >= 3) {
if (greatest <= num[i]) {
greatest = num[i];
}
i++;
}
return greatest;
}
所以我尝试使用 for 循环将每个数字与变量 greatest 进行比较。
但最大整数的答案始终是第一个整数。
【问题讨论】:
-
非常感谢。我没有看到那个错误。
-
“我没有看到那个错误”:没有立即看到错误是正常的,这是开始调试的标志。使用调试器逐步执行此操作会很快让您意识到您的循环体永远不会被执行。
-
你的代码里连for循环都没有!?
-
i 的初始值为 0,运行 while 循环的条件是当 i 大于或等于 3 时,因此 while 不会因为条件不满足而被执行。
-
有什么理由要使用循环吗?简单的方法就是
return max(max(a, b), max(c, d))