1. 程式人生 > >C語言中用不同的方法交換兩個數的值

C語言中用不同的方法交換兩個數的值

  在開始學習C語言的過程中,我們一定都做過這樣一道題,交換兩個數的值。可能大部分人都會這道題,但今天我想試試用不同的方法做這道題。   1、建立臨時變數

#include<stdio.h>
int main()
{
      int a = 10;
      int b = 20;
      int c = 0;     //建立臨時變數c來暫時儲存a的值
      printf("交換前的兩數為: %d %d",a,b);
      c = a;
      a = b;
      b = a;
      printf("交換後的兩數為: %d %d",a,b);
  return
0; }

  運算結果如下所示 在這裡插入圖片描述   2、在不建立臨時變數的情況下交換兩個數的值

#include<stdio.h>
int main()
{
     int a = 10;
     int b = 20;
     a = a + b;    
     b = a - b;     //這裡利用了一個小小的數學關係解決了交換問題
     a = a - b;
  return 0;
}

  運算結果如下: 在這裡插入圖片描述   3、還是在不建立第三個變數的情況下,利用異或關係,將兩個十進位制數用二進位制數表示出來,異或是指參與運算的兩個數,相對應的位相同用0表示,不同用1表示,異或的符號為“^”。程式碼如下:

#include<stdio.h>
int main()
{
     int a = 6;     //          a = 000000110
     int b = 7;     //          b = 000000111
     printf("交換前的兩數為%d,%d\n",a,b);
     a = a^b;     // a = a^b = 000000001
     b = a^b;     // b = a^b = 000000110
     a = a^b;     // a = a^b = 000000111
     printf("交換後的兩數為%d,%d\n",a,b);
 return 0;
}

  運算結果如下 在這裡插入圖片描述

小結 以上就是用三種不同方法交換兩個數的值,大家有興趣的可以自己下去試試實踐一下,不過需要注意的是在取值時一定要考慮數的範圍,小心造成溢位。如果大家有不同的方法也歡迎留言評論,我們可以一起討論。