c語言----交換a,b的值(分別用臨時變數,加減法,異或實現)
阿新 • • 發佈:2019-01-07
1.藉助臨時變數
2.加法實現</pre><pre name="code" class="objc">#include <stdio.h> int main() { int a=0; int b=0; printf("please enter (a,b)"); scanf("%d%d",&a,&b); printf("before:a=%d b=%d \n",a,b); a=a+b; b=a-b;//b=a+b-b=a a=a-b;//a=a+b-a=b printf("after:a=%d b=%d",a,b); return 0; }
#include <stdio.h>
int main()
{
int a=0;
int b=0;
printf("please enter (a,b)");
scanf("%d%d",&a,&b);
printf("before:a=%d b=%d \n",a,b);
a=a+b;
b=a-b;//b=a+b-b=a
a=a-b;//a=a+b-a=b
printf("after:a=%d b=%d",a,b);
return 0;
}
3.異或實現
異或:兩個值不相等時結果為真。如:1^1=0
1^0=1
0^0=0
0^1=1
則 1^0^1=0 得出一個結論:相同數異或會抵消。這也是實現兩個數交換的依據。
#include <stdio.h> int main() { int a=0; int b=0; printf("please enter (a,b)"); scanf("%d%d",&a,&b); printf("before:a=%d b=%d \n",a,b); a=a^b; b=a^b;//b=a^(b^b)=a a=a^b;//a=(a^a)^b=b printf("after:a=%d b=%d",a,b); return 0; }