我刚开始学习编程,我找不到我的代码有什么问题
#include <stdio.h>
int max_of_four(int a, int b, int c, int d) {
if (a > b && a > c && a > d) {
printf("%d",a);
}
if (b > a && b > c && b > d) {
printf("%d",b);
}
if (c > a && c > b && c > d) {
printf("%d",c);
}
if (d > a && d > b && d > c) {
printf("%d",d);
}
return 0;
}
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;
}
字符串
我试着输入3456但是输出是60
3条答案
按热度按时间hzbexzde1#
1.您混淆了
print
和return
。1.你打印了两次
1.如果你想在不同的行上打印数字,你必须在打印中添加一个
\n
。或者空格,如果你只想用空格分隔它们。但是仅仅用普通的printf("%d",number1); ...; printf("%d",number2);
打印数字将打印两个数字,没有任何分离。这里printf("%d",6);printf("%d",0);
打印60
。max_of_four
函数打印结果(6),但返回0。然后main函数打印
max_of_four(...)
的值,即0(因为它返回0)。所以,毫不奇怪,打印出来的是6,然后是0,也就是60。max_of_four
不应该打印任何东西,因为你的意思是它是一个返回结果的函数。无论如何,这将是两次打印结果,即使它工作。它应该只返回结果。然后,由调用者(主函数)根据需要打印结果。所以长话短说
字符串
这是为了回答在你的例子中困扰你的问题。但是你的代码中还有其他问题。
例如,如果两个数字相等会发生什么?例如,如果输入为
4 5 5 2
在这种情况下,函数将返回0,而不是5。但是,既然你在学习,我就让你想想如何纠正。
vcirk6k62#
但输出是60
更具体地说,输出是
6
*,然后是 *0
。6
输出如下:字符串
0
的输出如下:型
由于
max_of_four
函数 * 总是返回0*,因此实际上不需要捕获和输出该值。您可以删除第二个输出:型
(At当然,在这一点上,
max_of_four
函数根本不需要返回任何东西。)或者,如果你想让
max_of_four
函数返回最大值,那么用 return 代替 printing:型
j13ufse23#
我会这样实现它:
字符串
它还将生成更好的代码:https://godbolt.org/z/GsTPsbGWa
或者对于任意数量的参数(无参数除外):
型
和用法
型