笔试题
微软 2004-10-16 笔试题解析
作 者:杨延庆
E-mail:blankmanATtomDOTcom
出 处:http://blog.csdn.net/blankman/archive/2004/11/14/WE_MS_20041016.aspx
(微软2004-11-13的笔试题解析,如果有侵犯微软版权的话请来信告知,立即删除)
1、求函数返回值,输入x=9999;
int func(x)
{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}
【试题解析】
解这道题的时候,如果拿出一个二进制数来分析就会容易的多了,x=x&(x-1)实际上就是把x的二进制形式的最后一个“1”变成“0”,x的二进制形式有多少个“1”循环就执行多少次。
9999/256 = 39 余 15,把这两个数分别转化一下就很快了
39 = 32 + 4 + 2 +1 = 00100111
15 = 0F = 00001111
所以 9999=0010011100001111,共有8个1,答案就是 8 了
2、实现以下程序,以方便binary search.
.要有处理错误语句
.队列的分配的大小是固定的MAX_LEN,由第二个参数输入
.不能复制队列
insert (int *arr, //队列
size_l len, // 队列大小
size_l count, //队列元素的数目
int varl //要处理的数据
)返回插入数据的索引
remove(int *arr,size_l len,size_l count,int varl)返回删除元素的索引
search(int *arr,size_l len,size_l count,int varl)返回搜索道元素的索引
【试题解析】
略。数据结构书上都有的。