1. 程式人生 > >[C語言]兩個數的交換

[C語言]兩個數的交換

簡介

  本文將介紹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:有什麼不對的地方還望大家批評指正,或者有什麼意見或者建議大家也可以提出來一起討論。