淘宝春季实习生笔试题和面试题答案(二)
11. 假定x=9999, 下面函数的返回值是 8
统计1 的个数
-------------------------------------
int func(int x)
{
int countx = 0;
while(x)
{
countx++;
x = x&(x-1);
}
return countx;
}
假定x = 9999
10011100001111
答案: 8
思路: 将 x 转化为 2 进制,看含有的 1 的个数。
注: 每执行一次 x = x&(x-1) ,会将 x 用二进制表示时最右边的一个 1 变为 0 ,因为 x-1 将会将该位 (x 用二进制表示时最右边的一个 1) 变为 0 。
12. 有以下定义和语句
Int a[3][2]={1,2,3,4,5,6},*p[3]