問題:輸入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依次從大到小排序。