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

类别:编程语言 点击:0 评论:0 推荐:
笔试题

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

本文地址:http://com.8s8s.com/it/it25404.htm