1. 程式人生 > 其它 >多種方法交換兩個數的值

多種方法交換兩個數的值

技術標籤:#+初識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