2012 年计算机学科专业基础综合试题参考答案
一、单项选择题
1. B 2. A 3. A 4. B 5. C 6. C 7. C 8. A
9. D
10. A 11. D 12. D 13. B 14. D 15. D 16. A
17. C 18. C 19. C 20. D
21. D 22. B 23. C 24. B
25. B 26. A 27. D 28. A 29. B 30. C
31. A 32. B
33.
B 34. C 35. A 36. B 37. C 38. A 39. D 40. D
1. 解析:
本算法是一个递归运算,即算法中出现了调用自身的情形。递归的边界条件是 n~l, 每调
用一次 factO, 传入该层 facto 的参数值减 l。采用递归式来表示时间复杂度有
0(1) n~1
T(n) ={T(n-1)+1 n > 1
则 T(n) = T(n-1) + 1 = T(n-2) + 2 =…= T(l) + n-1 = O(n), 故时间复杂度为 O(n) 。
2. 解析:
表达式求值是栈的典型应用。中缀表达式不仅依赖千运算符的优先级,而且要处理括号。
后缀表达式的运算符在表达式的后面且没有括号,其形式已经包含了运算符的优先级。所以从
中缀表达式转换到后缀表达式需要用运算符进行处理,使其包含运算符优先级的信息,从而转
换为后缀表达式的形式。转换过程如下表:
运算符栈 中缀未处理部分 后缀生成部分 说明
# a+b-a*((c+d)/e-t)+g
# +b-a*((c+d)/e-f)+g a
+ b-a *((c+d)le-f)+g a "+"入栈
+ -a*((c+d)/e-f)+g
ab
a*((c+d)/e-f)+g ab+ "+"出栈,"-”入栈
*((c+d)/e-f)+g ab+a
一* ((c+d)/e-f)+g ab+a "*"入栈
一*(( c+d)/e-f)+g ab+a 两个"("依次入栈
-•(( +d)/e-f)+g ab+ac
一*((+ d)/e-f)+g
ab+ac "+"入栈
一*((+ )/e-f)+g ab+acd
一*( /e-f)+g ab+acd+ "+"和"("依次出栈
一*(/ e-f)+g ab+acd+ "I" 入栈
1 Å