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

来源:互联网 发布:邻家女孩服饰淘宝网 编辑:程序博客网 时间:2024/06/06 17:24

共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 0
原创粉丝点击