一、选择题
1、D,考察信息学基础-常见的编程语言,C++, Python, Java都是典型的面向对象语言,C是典型的面向过程语言
2、B,基础题,考察信息学基础-计算机常识,图灵奖是计算机领域的最高荣誉
3、A,考察信息学基础常识-数据存储格式,二进制
4、C,考察排序问题,基于比较的排序过程中,要找出最大数,最坏情况就是逐个遍历所有数,先假定第一个数是最大数,然后依次与剩余的N-1个数比较,得出最大数,需要比较N-1次
5、D,简单数据结构,考察栈的先进后出的特点,观察D选项,c,d先出栈,则表示c,d已入栈,所以a,b必然也已经入栈,根据先进后出的特点,那a不可能在b的前面出栈,故选D
6、D,简单数据结构-图和树,考察图的连通性和树的边数和结点数的关系,一个n个顶点的树,边数是n-1,所以要将m条边变成n-1条边,需要删掉m-(n-1)=m-n+1条边
7、C,信息学基础-进制转换
8、A,树的基本结构,完全二叉树最底下那层的节点至少1个,至多全部排满,并且只能从左至右排列,本题中,高度为5的完全二叉树,前4层必然是排满的,第5层可以有1~16个结点,故有16种可能的形态
9、B,考察中缀-后缀表达式转换,已知中缀的话,可以快速画出二叉树结构,然后树的后缀遍历即是后缀表达式。
根据运算符为根节点,操作数为叶子结点的规则,以及运算优先级和结合性,先计算b+c,再计算 a ∗ a* a∗,最后计算 ∗ d *d ∗d,得到二叉树,然后对树做后续遍历即可。
10、B,排列组合,首先考虑区分队伍编号的情况,第1个队,有 C 6 2 C^2_6 C62种选法,第2队,第3队依次有 C 4 2 , C 2 2 C^2_4, C^2_2 C42,C22种选法,总共是 C 6 2 ∗ C 4 2 ∗ C 2 2 = 90 C^2_6*C^2_4*C^2_2=90 C62∗C42∗C22=90 种,如果不区分队伍编号,则需要除以掉3个不同队伍的全排列 A 3 3 A_3^3 A33
结果是 90 / ( 3 ∗ 2 ∗ 1 ) = 15 90/(3*2*1)=15 90/(3∗2∗1)=15
11、B,哈夫曼编码算法是贪心算法的经典应用
12、A,排列组合,此题数据量很小,可以直接枚举得到:
1、不重复的3个数字,有 3 ∗ 2 ∗ 1 = 6 3*2*1=6 3∗2∗1=6种
2、两个重复数字,有 < 1 , 1 , 2 > , < 1 , 1 , 3 > , < 2 , 2 , 1 > < 2 , 2 , 3 > <1,1,2>,<1,1,3>,<2,2,1><2,2,3> <1,1,2>,<1,1,3>,<2,2,1><2,2,3>,4种情况,每种可以组成3个不同的数,总共12种
结果是:6+12=18
13、C,考察递归算法,阅读程序可得,当n小于5时,函数计算的是n的阶乘,大于5时递归计算n*solve(n-2),所以:
s o l v e ( 7 ) = 7 ∗ s o v l e ( 5 ) = 7 ∗ 5 ∗ s o l v e ( 3 ) = 7 ∗ 5 ∗ 3 ! = 210 solve(7)=7*sovle(5) =7*5*solve(3) =7*5*3!=210 solve(7)=7∗sovle(5)=7∗5∗solve(3)=7∗5