问题:输入a,b,c 3个整数,按大小顺序输出



1 #include<stdio.h>        
2 int main()
3 {
4 int a,b,c; //定义三个变量
5 int *p1,*p2,*p3; //定义三个指针
6 scanf("%d %d %d",&a,&b,&c); //输入三个数值
7 p1=&a,p2=&b,p3=&c; //把a,b,c三个数的地址赋值给对应指针
8 exchange(p1,p2,p3); //调用函数
9 printf("%d,%d,%d\n",a,b,c); //将调换后的值顺序输出
10 return 0;
11
12 }
13 void exchange(int *p1,int *p2,int *p3)
14 {
15 if(*p1<*p2) //如果p1指针指向的数小于p2,则交换指针指向值
16 swap(p1,p2);
17 if(*p1<*p3) //同上
18 swap(p1,p3);
19 if(*p2<*p3) //同上
20 swap(p2,p3);
21
22 }
23 void swap(int *pt1,int *pt2) //交换指针指向值
24 {
25 int temp;
26 temp=*pt1;
27 *pt1=*pt2;
28 *pt2=temp;
29 }


注意:函数exchange中指针p1,p2,p3中的数值是不会变的,在调用函数swap后,指针p1,p2,p3数值也不会改变,唯一改变的是指针指向对应内存单元的值,也就是a,b,c的值。

在经过以上函数调用后,a,b,c依次从大到小排序。