多種方法交換兩個數的值
阿新 • • 發佈:2021-01-14
技術標籤:#+初識C語言程式碼大全c語言程式語言
方法1
運用臨時變數交換兩個數的值
程式例項:
#include<stdio.h>
void exchange(int x, int y)
{
int temp = 0;
temp = x;
x = y;
y = temp;
printf("a=%d b=%d\n", x, y);
}
int main()
{
int a = 3;
int b = 5;
exchange(a, b);
return 0;
}
執行結果:
方法2:
不用臨時變數交換兩個數的值
#include<stdio.h>
int main()
{
int a = 3, b = 5;
a = a^b;
b = a^b;
a = a^b;
printf("a=%d b=%d\n", a, b);
return 0;
}
執行結果;
此處通過巧用位操作符:^(按位異或)的方法,完成兩個數的轉化。
按位異或操作符的口訣:相異為1,相同為0;
三個按位異或的具體如下:
注:以下二進位制位為簡寫
a=3的二進位制位: 011
b=5的二進位制位: 101
第一個: a=a^b= 110=6;
第二個: b=a^b= 011=3;
第三個:a=a^b= 101=5;
就是通過這三次簡單的操作符,無需借外人之力,就可完成自身轉換;在那麼一瞬間讓我想起了,孔明先生的草船借箭。據說這種方法還出過面試題呢,第一種其實更方便,第二種其實更奧妙;學習的魅力就是,你在前行的路上不斷能發現新的看法和觀點,點點獲得就讓人些許高興起來,這種感覺很奇妙,但我想享有。晚安啦!2021/1/12