不用額外變量交換兩個數的值

今天是去筆試,有一道題是:不用額外變量交換兩個數的值?

寫了半天沒寫也來,原來很簡單:(可能是前幾年就見過的題了)

a=a+b;
b=a-b;
a=a-b;

我一開始覺得就是應該用加減法,但是想了半天沒想出來,前兩步都想出來了,就是沒寫上,真是暈死,說不準寫出前兩步就可以看出第三步了,真是眼高手低啊,都怪當時沒有稿紙,主要還是怪自己沒寫!

還有一道題是這樣的

int functionm(int x)
{
 int count=0;
 while (x)
 {
  x=x&(x-1);
  count++;
  printf("%d/n",x);
 }

 return count;
}

問如果x=9999,返回多少?

原來這也是一道經典題,x=x&(x-1)的作用就是把二進制數的最低一位置0,如果以前看過這個,其實這個,需要做的只是將9999變爲二進制,再數一下1的個數就得了。

孤陋寡聞了吧?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章