笔试题参考

时间:2018-12-31 12:00:00 资料大全 我要投稿

笔试题参考

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

3、堆栈R,从顶到底:{2,4,6,8,10},逐个取出放入队列Q中 ,再从Q中逐个取出放入R中,问现在堆栈R中从顶到底的顺序,

资料共享平台

笔试题参考》(https://www.unjs.com)。
【试题解析】
    这个也不用了吧,{10,8,6,4,2}

4、写出程序的结果:___________
int funa(int *a)
{
   a[0] ++;
}

int funb(int b[])
{
   b[1] += 5;
}

main()
{
   int a[5] = {2,3,4,5,6};
   int b[5] = {2,3,4,5,6};
   int *p;
   p = &a[0];
   (*p)++;
   funa(p);
   for(int i = 0; i<3; i++)
   printf("%d,",a);
   p = &b[1];
   funb(p);
   for(i = 0; i<3; i++)
   printf("%d,",b);
}
【题目解析】
结果是:
4,3,4,2,3,9

(*p)++; 也就是a[0]++;
funa(p);中的 a[0]++ 是将 main 中的数组 a[0]++,
数组 a 中只有第一个元素加了两次 1 ,

p = &b[1];把p指向了数组 b 的第二个元素
funb(p);中的 b[1]+=5 是将 main 中的数组 b[2]+=5
数组 b 中的第三个元素加了 5


5、找出下面程序的 BUG
int CopyStringAndCount(char * Str) ①
{
    int nCount = 0;
    char * pBuffer; ②
 
    pBuffer = new char[MAX_PATH_LENGTH];
    ③

    ④
    strcpy(pBuffer, Str);

    for ( ; pBuffer⑤; pBuffer++ )
        if ( pBuffer⑥=='\\' ) nCount ++;
   
    ⑦
    return nCount;
}

【笔试题参考】相关文章:

1.360笔试题目

2.360笔试题目

3.笔美国国家仪器试题目

4.广本09年笔试题目

5.腾讯笔试题参考

6.搜狐产品笔归分享笔试题目

7.面试题参考1

8.绿盟科技全国统一笔试题