牛客网(搜狗2015 C++工程师笔试题)

共36题,对16题(机器学习和windows内核部分错题未做解答)

题2:以下代码的输出是()

int a[5]={1,2,3,4,5};
int *ptr=(int*)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1));
答案:A:1,2   B:2,5   C:2,1   D:1,5

解析:注意*(a+1)与&a+1的区别,a 代表的是int * 每次步长为一个int,&a 代表的是 int[]* 每次步长为所指向的数组的大小,ptr 指向的是数组a最后一个元素的下一个元素,ptr-1指向的是数组a的最后一个元素,而a+1指向的是数组a的第二个元素


题8:函数fun的声明为int fun(int *p[4]),以下哪个变量可以作为fun的合法参数()

答案:A:int a[4][4];           B:int **a                 C:int **a[4]                 D:int (*a)[4];
解析:fun函数的形参是一个指针数组,也就是指针指向一个地址,地址中存放的内容也是指针。


题24:若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别0和3。当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为()
答案: A:2和4             B:1和5           C:4和2                 D:5和1
解析:注意是循环队列。删除一个元素后,队首指针要加1, front=(front+1)%6,结果为4,每加入一个元素队尾指针加一,即real=(real+1)%6,加入两个元素后变为2


题26:假设某算法的计算时间可用递推关系式T(n)=2T(n/2)+n表示,则该算法的时间复杂度为()

答案:A:O(logn)                 B:O(n*logn)                C:O(n)                 D:O(n^2)

解析:T(n)=2[2T(n/4)+n\2]+n,

           故 T(n)=2^k*(T(n/(2^k)))+k*n
           令2^k = n,k = log(n)   (以2为底)
           T(n)= n*T(1)+n*log(n)<= c*n*log(n)  (c为常数)
           所以是O(n*logn)


题32:圆内接三角形是锐角三角形概率是多少()

答案:A:1/4          B:1/3             C:1/2              D:2/3 

解析:三角形三点在圆上的位置是等概率的。使得最大的那个角必定大于等于60度,三角形是锐角的变化范围是60-90度,钝角的范围是90-180度(90-60)/(180-60)=1/4


题36:下列排序算法的常规实现中,哪些空间复杂度是O(1)

答案:A:冒泡                B:选择                    C:归并                D:快排                   E:堆排序

解析:归并排序的时间复杂度为O(n),快排的空间复杂度为O(n*logn)


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值