今天是去筆試,有一道題是:不用額外變量交換兩個數的值?
寫了半天沒寫也來,原來很簡單:(可能是前幾年就見過的題了)
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的個數就得了。
孤陋寡聞了吧?