1. 程式人生 > >曾經的華為C面試題,一點就通

曾經的華為C面試題,一點就通

printf content html 沒有 ati 記得 clas style 我們

學習編程可以鍛煉你的思維,幫助你更好地思考,創建一種我認為在各領域都非常有用的思維方式。 比爾蓋茨

曾經的華為C面試題,一點就通


【問題區】

有兩個變量x和y, x=10; y = 20; 請使用C語言代碼實現兩個變量的交換,要求至少使用3 種辦法!


【提示區】

如果使用一個臨時變量,來交換兩個x和y的值,這是初學者都會的事情,如果不用臨時變量,我們有沒有辦法實現呢?

大家還記得初中代數中的公式嗎?

x + y = z ; 那麽 x= z - y 或是 y = z - x ;

x * y = z ; 那麽 x = z / y 或是 y = z / x;

上面這個公式說明: 如果我們知道兩個數,以及兩個數經過某種運算得到的結果,我們就可以通過三者中的任意兩者得到第三者的結果!


【C代碼實現區】

#include <stdio.h>

int main(void){

  int x = 10;

  int y = 20;

  //第一種方法 臨時變量交換

  int z = 0;

  z = x;

  x = y;

  y = z;

  //第二種方法 加法

  x = x + y; //執行後 x=30,y=20

  y = x - y; //執行後 x=30,y=10

  x = x - y; //執行後 x=20,y=10

  //第三種方法 乘法

  x = x * y; //執行後 x=200,y=20

  y = x / y; //執行後 x=200,y=10

  x = x / y; //執行後 x=20,y=10

  //第四種方法 異或運算

  x = x ^ y;

  y = x ^ y;

  x = x ^ y;

  printf("x=%d, y=%d\n", x, y);

  return 0;

}


【視頻講解】

地址:https://v.qq.com/x/page/v08145k1qdr.html

曾經的華為C面試題,一點就通