所有答案均为自己主观判断加上网络资料查阅,不保证答案完全正确。欢迎讨论
第一题:
题目:假设一个包含80个元素的选择排序已经迭代了32趟,那么有多少个元素的位置再也不会动?
A 16 ;B 31 ; C 32 ;D 39 ;E40
分析:选择排序的基本思想是:每一趟在n-i+1(i=1,2,...,n-1)个记录中选取待排序关键字最小的记录作为有序序列中的第i个记录。因此对于每一趟循环,均可确定待排序序列中个一个元素的位置,故本题答案为C。
第二题:
题目:下列哪个或哪些同步机制用于避免出现进程(线程)之间的竞争?
A Mutex ; B MailBox ; C Semaphore ; D Local procedure call ;
分析:基本的操作系统问题,答案AC不解释
第三题:
题目:有一包含n个数字的序列1,2,3,...n,和一个最大容量为m的栈。将n个数字按顺序随机进行入栈出栈操作。比如,假设n=2,m=3,那么输出序列可能为1,2或者2,1,此时我们得到两个不同的输出序列。假设n=7,m=5。请从下列序列中选择栈的输出序列:
A 1 2 3 4 5 6 7 ;B 7 6 5 4 3 2 1
C 5 6 4 3 7 2 1 ;D 1 7 6 5 4 3 2 ;E 3 2 1 7 5 6 4
分析:有点像考研数据结构的选择题,简单的栈入栈出栈与输出序列的问题,以P表示Push,Q表示Pop,下面给出正确答案的入栈出栈操作序列
A PQPQPQPQPQPQPQ
B 答案错误,7要第一个出栈的话,需要将所有元素入栈,但是m=5,所以7不可能是第一个出栈元素
C PPPPPQPQQQPQQQ
D 答案错误,原因类似B
E 答案错误,按序列进行入栈,PPPQQQ,此时输出序列为3,2,1,欲使得7为剩下4个元素最先出栈的,则需将剩下所有元素入栈,即PPPP,接着的出栈操作将产生的输出序列为7 6 5 4,而非7 5 6 4。
第四题:
题目:0101 1001 乘以0111001 然后加上1101110后等于多少?
A 0001 0100 0011 1111
B 0101 0111 0111 0011
D 0011 0100 0011 0101
分析:简单的计算机组成原理题目,两数相乘再相加即可,不解释。答案A。
第五题:
题目:下面一段C代码的输出是?
void main() { int i = 11; int const* p = &i; p++; printf("%d",*p); }
A 11 ;B 12 ;C Garbage value ;D Compiler error ;E None of above
分析:答案为C 直接放到Dev-c中验证,同时为了说明问题,另加一行输出,见下图:
第六题:
题目:下面哪段C++代码是正确的?(题目就不写了,看图片)
分析:都是基本的C++的语法问题,答案为D
A:应为int * a = new int[3];
B:返回了局部变量a的地址;
C:Dev提示有错
第七题:
题目:将一个数字A翻转180度后形成数字B,A和B之差为78633,问A是多少?
A 60918 ;B 91086 ;C 18609 ;D 10968 ;E 86901
分析:各项答案直接验证:
A :60918-81609 = -20691
B:91086 - 98016=
C: 18609 - 60981=
D: 10968-89601=78633
E:86901 - 10698=
故正确答案为:D,为节省时间,可以先验证最高位的情况,然后逐位排除。
第八题:
题目:下面那个句子是对的?
分析:答案为AD。AB考察的是二叉树的建立,AB中A正确,利用二叉树的前序和中序遍历可建立二叉树;
C明显错误,D正确。
第九题:
分析:答案为B。
第十题:
分析:答案为E。
当x<y时,y^((x^y)&(-(x<y))) = y^((x^y)&(-1)) = y^((x^y)&0xffffffff) = y^(x^y) = (y^y)^x = 0^x = x
当x>=y时,y^((x^y)&(-(x<y))) = y^((x^y)&(-0)) = y^((x^y)&0) = y^0 = y
第十一题:
分析:UTF8通常用3个字节对一个字符编码,比如'a',普通编码是2个字节,则UTF8中需要3个,因此使用UTF-8编码时,需要3*391 = 1173bytes,故C正确。
同时,UTF8使用BOM的时候,需要额外增加3个字节,故使用BOM时,UTF8编码需要3*391+3 = 1176bytes,故D正确。
而UTF-16使用双字节表示一个汉字,外加一个BOM两个字节,因此需要391*2+2 = 724,故B正确。
第十二题:
题目:填空:
分析:正确答案为:BC
典型的纠结于static,const,const static 和static const的问题。
首先,在C++中,const常量成员变量和static静态成员变量均不能在类内部定义处进行初始化。const常量成员变量只能通过够咱函数初始化列表进行,且必须有构造函数。
《Effective C++》中条款03:尽可能使用const中说:const的一件奇妙事情是,它允许你制定一个语义约束,二编译器会强制实施这种约束。它允许你告诉编译器和其他程序员某值应该保持不变。
其次,类中的static修饰成员变量的作用有:
1.对于静态的成员变量,连接器会保证它拥有一个单一的外部定义。静态成员变量按定义出现的先后顺序依次初始化,按逆序析构。
2.累的静态成员函数是属于整个类而非类的对象,因此它没有this指针,这就导致了它仅能访问类的静态数据成员和静态成员函数。
第十三题:
题目:一个3阶的B-树共有2047个关键字,请问这可树的最大高度为?
A 11; B12; C 13 ;D 14
分析:答案为A
B树即为二叉搜索树,二叉搜索树的特点有:
1.所有非叶子节点至多拥有两个儿子(Left和Right);2.每个节点存储一个关键字;4.非叶子节点的Left儿子的关键字小于其本身的关键字;Right儿子的关键字大于其本身的关键字。
B-树是一种多路搜索树。
定理9.1 若n≥1,m≥3,则对任意一棵具有n个关键字的m阶B-树,其树高h至多为:
logt((n+1)/2)+1。
这里t是每个(除根外)内部结点的最小度数,即
第十四题:
分析:答案为ACE
第十五题:
分析:答案为D
第十六-二十题
分析:答案为:ABDCE