今天是去笔试,有一道题是:不用额外变量交换两个数的值?
写了半天没写也来,原来很简单:(可能是前几年就见过的题了)
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的个数就得了。
孤陋寡闻了吧?