運用指標,呼叫函式來是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;
}