#include <stdio.h> int main(void){ int a,b,c,*p,*q,*h,*temp; scanf("%d %d %d",&a,&b,&c); p=&a;//把a的地址赋给了指针变量p q=&b;//把b的地址赋给了指针变量q h=&c;//把c的地址赋给了指针变量h if(a>b) { temp=&a;//a的地址赋给了指针变量temp p=q;//p=&b q=temp;//q=&a } if(a>c) { temp=&a;//a的地址赋给了指针变量temp p=h;//p=&c h=temp;//h=&a } if(b>c){ temp=&b; q=h;//q=&c h=temp;//h=&b } printf("%d %d %d",*p,*q,*h); return 0; }但是这段代码,输入3 2 1 输出 1 3 2 如何修正使其从大到小输出
时间: 2024-03-12 18:49:55 浏览: 94
要使程序从大到小输出,只需要改变交换的顺序即可。在 if 语句中,将交换指针变量的顺序倒过来即可。修改后的代码如下所示:
```
#include <stdio.h>
int main(void){
int a, b, c, *p, *q, *h, *temp;
scanf("%d %d %d", &a, &b, &c);
p = &a; //把a的地址赋给了指针变量p
q = &b; //把b的地址赋给了指针变量q
h = &c; //把c的地址赋给了指针变量h
if (a < b) { //先保证a是最大的
temp = &a; //a的地址赋给了指针变量temp
p = &b; //p=&b
q = temp; //q=&a
}
if (a < c) { //再保证a是最大的
temp = &a; //a的地址赋给了指针变量temp
p = &c; //p=&c
h = temp; //h=&a
}
if (b < c) { //最后保证b是次大的
temp = &b;
q = &c; //q=&c
h = temp; //h=&b
}
printf("%d %d %d", *p, *q, *h);
return 0;
}
```
这样修改后程序会先保证 a 是三个数中的最大值,然后保证 b 是次大的值,最后 c 是最小的值。这样输出的就是从大到小排列的结果。
阅读全文