微软 2004-10-16 笔试题解析

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

笔试题

微软 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)返回搜索道元素的索引

【试题解析】

略。数据结构书上都有的。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航