2014 年计算机学科专业基础综合试题参考答案
一、单项选择题
1. C 2.
9. D
10.
17. A 18.
25. D 26.
33. C 34.
1. 解析:
内层循环条件 j<=n 与外层循环的变量无关,每次循环 j自增 1, 每次内层循环都执行 n次。
外层循环条件为 k<=n, 增量定义为 k*=2, 可知循环次数为 2k<=n, 即 k<=log2n 。所以内层循环
的时间复杂度是 O(n), 外层循环的时间复杂度是 O(log2n) 。对千嵌套循环,根据乘法规则可知,
该段程序的时间复杂度 T(n) = T1(n)T2(n) = O(n)O(log2n) = O(nlog2n), 选 C。
2. 解析:
将中缀表达式转换为后缀表达式的算法思想如下:
从左向右开始扫描中缀表达式;
遇到数字时,加入后缀表达式;
遇到运算符时:
a. 若为'(',入栈;
b. 若为')',则依次把栈中的运算符加入后缀表达式中,直到出现'(',从栈中删除'(';
C. 若为除括号外的其他运算符,当其优先级高于除'('以外的栈顶运算符时,直接入栈;
否则从栈顶开始,依次弹出比当前处理的运算符优先级高和优先级相等的运算符,直到一个比
它优先级低的或者遇到了一个左括号为止。
当扫描的中缀表达式结束时,栈中的所有运算符依次出栈加入后缀表达式。
3.
11.
19.
27.
35. 4.
12.
20.
28.
36.
5.
13.
21.
29.
37. 6.
14.
22.
30.
38.
7. 15.
23.
31.
39.
DAACB DABAA CCDBB DDCCC ACCAD BBCAB 8.
16.
24.
32.
40.
DD
BDD
待处理序列 栈 后缀表达式 当前扫描元素 动作
alb+(c*d-e*f)/g a a加入后缀表达式
lb+(c*d-e*t)/g a / /入栈
b+(c*d-e*f)/g / a b b加入后缀表达式
+(c*d-e*f)/g I ab + +优先级低千栈顶的/, 弹出/
+(c*d-e*f)/g ab/ + +入栈
(c*d-e*f)/g + ab/ ( (入栈
c*d-e*f)/g +( ab/ C c加入后缀表达式
*d-e*f)/g +( able * 栈顶为(,*入栈
d-e*t)/g +(* able d d加入后缀表达式
-e*f)/g +(* ab/cd -优先级低于栈顶的*,弹出*
-e*f)/g +( ab/cd* 栈顶为(,-入栈
6 * @ B D - / $ 1 4 ! >
T
T T
&