[C語言]兩個數的交換
阿新 • • 發佈:2019-02-14
簡介
本文將介紹c語言中一個最基本的問題:關於兩個數的交換:
- 第一種:建立變數完成交換;
- 第二種:通過加減運算完成交換;
- 第三種:通過二進位制數的異或運算完成交換。
正文
c語言中兩個數字的交換方法有很多種,我將列出來三種最為常用辦法。
廢話不多說,先看第一種(附上程式碼如下):
#include<stdio.h>
int main()
{
int a=1;
int b=2;
int c=0;//建立第三個臨時變數
printf("a=%d,a=%d\n",a,b);
c=a;
a=b;
b=c;//將三個數進行交換
printf("a=%d,b=%d",a, b);
return 0;
}
這種方法就是最基本,也是最常用的方法,建立一個新變數c,先將一個數a放進這個空變數c,再將另一個數b放進變數a中,最後將c中的數字放入b中,這樣就完成了數字的交換。
接下來就是第二種方法(程式碼如下):
#include<stdio.h>
int main()
{
int a=2;
int b=4;
printf("a=%d,b=%d\n",a,b);
a=a+b;
b=a-b;
a=a-b;
printf("a=%d,b=%d",a,b);
return 0;
}
這種方法相對於上一種方法最大的優化就是隻建立了兩個變數,用兩個數之間的加減運算來代替第三個變數,使程式碼的效率提高了不少。但是這種方法有一個致命的缺點,就是沒有考慮到溢位的情況,如果兩個數字的值超過了它的承受範圍,那麼它計算出來的結果當然也就是錯誤的。
接下來是第三種辦法 ,這種辦法相對於前兩種更加的高(you)大(bi)上(ge)(程式碼如下):
#include<stdio.h>
int main()
{
int a=1;
int b=2;
printf("a=%d,b=%d\n",a,b);
a=a^b;
b=a^b;
a=a^b;
printf("a=%d,b=%d",a,b);
return 0;
}
這種方法是採用二進位制數中異或的辦法,這種方法相對於第一種優化了不少,程式碼看起來也更加的高階簡練,一般的小新是絕對想不到的,如果你能使出這種辦法,一定會讓周圍人對你刮目相看!!!
總結
本文介紹了三種c語言中關於兩個整數交換的方法,希望大家可以從中提取出自己想要的相關知識。
PS:有什麼不對的地方還望大家批評指正,或者有什麼意見或者建議大家也可以提出來一起討論。