1. 程式人生 > >運用指標,呼叫函式來是3個數從大到小輸出(通過異或來交換大小)

運用指標,呼叫函式來是3個數從大到小輸出(通過異或來交換大小)

今天通過對指標和函式的學習,運用異或運算來實現對3個數從大到小排序,並嘗試運用#define進行註釋,希望對初學者有所幫助。程式如下:

#include<stdio.h>
//#define debug
#ifdef debug
int main(int argc, const char *argv[])
{
 int *p;
 int *i;
 int *j;
 int a;
 int b;
 int c;
 int t;
 p = &a;
 i = &b;
 j = &c;
 scanf("%d%d%d",&a,&b,&c);
 if ( *p < *i){
  t = *p;
  *p = *i;
  *i = t;
 }
 if ( *p < *j){
  t = *p;
  *p = *j;
  *j = t;
 }
    if ( *i < *j){
  t = *i;
  *i = *j;
  *j = t;
 }
 printf("%3d%3d%3d",a,b,c);
 return 0;
}
#endif
#include<stdio.h>
int main(int argc, const char *argv[])
{
 int a;
 int b;
 int c;
 int *p;
 int *i;
 int *j;
 void swap(int *p1, int *p2);
    void exchange(int *p3,int *i2,int *j2);
 scanf("%d%d%d",&a,&b,&c);
 p = &a;
 i = &b;
 j = &c;
    exchange(p,i,j);
 printf("%3d%3d%3d\n",a,b,c);
}
void exchange(int *p3,int *i2,int *j2 ){
 void swap(int *p1,int *p2);
 if(*p3 < *i2) swap(p3,i2);
 if(*p3 < *j2) swap(p3,j2);
 if(*i2 < *j2) swap(i2,j2);
   }
void swap(int *p1,int *p2){  
  *p1^= *p2;
  *p2^= *p1;
  *p1^= *p2;

}