【笔试卷】SHANGYOU

来源:互联网 发布:寒窑赋 知乎 编辑:程序博客网 时间:2024/06/16 23:36

基础题

1.unsigned short取值范围为();
2.一棵二叉树上第6层的节点数最多是();
3.下列结构的sizeof大小为()

struct sl_t{    int x;    bool y;    float z;    unsigned long long w;}

4.int a[10],*p=a;则p+6表示什么意思?
5.对绝对值地址0x100000赋值0x5A,用C语言代码片段表示
6.char w;int x;float y,z;则表达式w*x+z-y的结果为什么数值类型()
7.下面叙述正确的是
A.算法的执行效率与数据的储存结构无关。
B.算法的空间复杂度是指算法程序中的指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤后终止
D.以上三种描述都不对
8.下面针对链表的说法,哪个是正确的
A.需要实现估计存储空间
B.可随机访问任一元素
C.所需空间与链表长度成正比
D.插入删除需要移动元素
9.已知一颗二叉树的前序遍历和中序遍历分别为HACIDGBEF和CADIHBEGF,则后序遍历为
A.GEDHFBCA
B.CDIAEBFGH
C.DBCAEFGH
D.DCBFEAHG
10.请写出下列代码片段执行结果为()

union{    int i;    char c[2];}a;a.i=512;a.x[0]=4;a.x[1]=1;printf("%d",a.i);

11.无符号整型变量a,将第3bit和第5bit位清零的表达式为
12.阅读下列代码片段,最终sh的值为()

char arr[8]={0x00};char* p=arr;for(int i=0;i<8;i++){    p[i]=i;}short* psh=(short*)(++p);short sh=*(++psh);

逻辑推理

1.只有两个舀酒的勺子,分别能舀7两和11两酒,请问如何通过这2个勺舀出2两酒

2.有200个球,2人轮流拿,能拿到最后一个球的人为胜利者。要求:每次至少要拿2个,但最多不能超过6个。问:如果你是先拿球的人你该拿几个?以后怎么拿才能保证你赢?

算法题

1.判断链表是否有环,并求出环的长度

2.判断一个字符串中所有的字符全都不同,不允许使用额外存储,时间复杂度不超过O(n)

3.小明上楼梯,楼梯有n阶台阶,可以上1阶,2,3.请编码实现有多少种上楼方式?如果n非常大,无法使用递归,又如何实现

4.在二维空间中的一组气球,给出每个气球的横向直径的起始横坐标和结束横坐标,保证起始横坐标小于结束横坐标。不需要考虑气球的纵坐标,因此横坐标区间可以互相重叠。气球最多有10000个。一支箭可以选定一个横坐标纵向射击一个气球的横向直径两端横坐标为xbegin,xend,一支箭射击的横坐标为x,如果有xbegin<=x<=xend则这支箭可以刺破该气球,没有箭的使用数量限制,并且一支箭可以刺破相应坐标上的所有气球
求出刺破所有气球所需要的最少的箭的数量
例子:
输入[10,16],[2,8],[1,6],[7,12]
输出2
说明:
一种方案是在坐标x=6射一支箭(可以刺破气球[2,8]和[1,6]),
在坐标x=11射另一支箭(刺破剩下的两个气球)
请写出详细思路和算法

原创粉丝点击