printf后面的a b c不用加&
打印的时候就不需要 & 了
【以下回答由 GPT 生成】
问题的原因在于你的代码中对于大小关系的判断条件有误。在第一个if语句中,你判断了a是否小于b,如果成立,就交换a和b的值。接着在第二个if语句中,你判断了a是否小于c,如果成立,就交换a和c的值。这两个if语句是正确的。然而,在第三个if语句中,你判断了b是否小于c,如果成立,就交换b和c的值。这是错误的,因为在前两个if语句中,a和b的值已经发生了交换。所以,在第三个if语句中,应该判断交换后的b是否小于c,而不是原始的b。
下面是修复后的代码:
#include<stdio.h>
#include<stdlib.h>
int main(){
int a, b, c, t;
scanf("%d%d%d", &a, &b, &c);
if (a<b){
t = a;
a = b;
b = t;
}
if (a<c){
t = a;
a = c;
c = t;
}
if (b<c){
t = b;
b = c;
c = t;
}
printf("%d %d %d", a, b, c);
system("pause");
return 0;
}
在最后的printf语句中,我还添加了空格,以便输出的数值更易读。
此时,代码就能够正确地将输入的三个数从大到小排序,并且按照预期的顺序输出了。
【相关推荐】