笔试题
微软 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)返回搜索道元素的索引 【试题解析】 略。数据结构书上都有的。

|