中国科学技术大学 一九九一年招收硕士学位研究生入学考试试题 试题名称:程序设计 选择题(20分) (从可供选择的答案中选出一个正确的,标上“√”记号.其中:1—4题每题1分,5—12题每题2分) 递归过程结构清晰,程序易度,正确性也容易证明,又不需要附加空间,运行效率亦高.因此,递归是一种很有用的工具. 这种说法完全正确. 这种说法不完全正确. 这种说法完全错误. 二进制数1101100与100110的和,用十进制数表示为: (1) 74 (2) 75 (3) 82 (4) 83 汇编程序的输出不包括: 目标程序. 浮动模块. 问题程序的结果. 机器语言程序. 用随机算法存取数据记录的方法是: (1) 顺序 (2) 相对 (3) 交替 (4) 直接 栈的输入序列是1,2,…,n,输出序列是,,…,,若 (1 i  n),则有:>>…>. 这种说法正确. 这种说法错误. 平衡二叉树中,若某个节点的左、右孩子的平衡银子为零,则该节点的平衡因子一定是零. 这种说法正确. 这种说法错误. 只要散列表的存贮单元数大于关键字的个数,对于任意取值的关键字,总能找到一个一对一的散列函数表来避免冲突. 这种说法正确. 这种说法错误. 设广义表为L=((a,b,c)).下列的哪个运算能将c分离出来? tail(L) tail(tail(L)) tail(head(L)) head(tail(tail(head(L)))) 在下列三种次序的线索二叉树中,哪种次序的线索数对查找指定节点在该次序下的后继节点效果较差? 前序线索数 中序线索数 后序线索数 用单循环链表表示的队列,若仅设一个指针,但要求出队和入队操作方便,应当选用 (1) 头指针 (2) 尾指针 对二叉排序数进行从右到左的中根遍历,则所得的节点序列是按关键字 无序排列. 非递减有序排列. 非递增有序排列. ISAM文件和VSAM文件属于 顺序文件. 索引非顺序文件. 索引顺序文件. 散列文件. 选择填空(8分) (从可供选择的答案中,选择合适的答案,把号码填入相应的_____中,每空0.5分) ____是适用于描述操作系统等控制程序的语言,贝尔研究所开发UNIX时使用这种语言;____是访问数据库所使用的语言,当初是特定厂家的RDB专用语言,现在可适用于多种RDB;____是初学者会话型语言,是80年代前期个人计算机的主要语言;____是50年代开发的语言,其特征之一是程序和数据都以相同的表示形式进行描述.它广泛的运用于符号处理领域;____是主要面向科学技术计算的语言,可以用近似一般数学式的形式进行描述,它是在计算机发展史上最先在实用领域获得成功的编译语言. (1) ALGOL (2) BASIC (3) C (4) COBOL (5) FORTRAN (6) LISP (7) PASCAL (8) PL/1 (9) PROLOG (10) SQL 用汇编语言开发软件时,首先用______编写______程序,在用汇编程序将其变成_____,在变换后的程序中,有效地址尚未分配,任意存贮空间均可再分配的这种程序称为______目标程序.利用____把几个程序连结在一起,有效地已经分配的形式的程序,称为____目标程序.编写好的程序可以用___进行追踪和修改. (1) 机器语言 (2) 绝对 (3) 浮动 (4) 调试程序 (5) 翻译机 (6) 源 (7) 文本编辑程序 (8) 连结程序 在内部排序方法中,设初始的已排序序列为空,从未排序序列中一次取出元素,与已排序序列中元素作比较,将其放入已排序序列的正确位置上,这种排序方法叫_____,基于交换的排序方法是______和______;利用某种算法,根据记录的关键字值计算出排序位置的方法是______. (1) 选择排序 (2) 插入排序 (3) 杂凑排序 (4) 冒泡排序 (5) 堆排序 (6) 基数排序 (7) 快速排序 (8) 归并排序 解答下列问题(10分) 对长度为10的有序表进行折半查找,在等概率的假设下,其查找成功的平均查找长度是多少? 一颗深度为h的满k叉树有如下性质:第h层上的节点都是叶子节点,其余各层上每个节点都有k颗非空子树.如果按层次顺序从1开始对全部节点编号.(根为第一层).问: 第i层的节点数目是多少? 编号为n的节点,它的双亲节点(若存在)的编号是多少? 编号为n的节点,它的第i个孩子节点(若存在)的编号是多少? 编号为n的节点,满足什么条件下有右兄弟,其右兄弟的编号是多少? 写出下面程序的运行结果(10分) program priout(input,output); procedure print(f1,f2:integer); var f3:integer; begin if f1<=f2 then begin if f2 mod f1 =0 then f3:=f1+1 else f3:=f1+3; print(f3,f2-1); end writeln(f1, ' ',f2); end begin printf(4,16); end. 有52张扑克牌,开始它们全部正面朝上.从第2张牌开始,把凡是2的倍数位置上的牌翻成正面朝下;接着从第3张牌开始,把凡是3的倍数位置上的牌正面朝上的翻成正面朝下, 正面朝下的翻成正面朝上;接着从第4张牌开始,把凡是4的倍数位置上的牌按此规律翻转.依此类推,直到第1张要翻的牌是第52张牌为止.试用高级语言编出你的程序.要求程序中具备统计最后有几张牌正面朝上,并打印出它们的位置. 写一算法将向量A[1..n]中的元素循环右移k位,且要求算法的时间和空间代价分别是O(n)和O(1). 已知G=(V,E)是连通图,V={1,2,…,n}.写一算法求G的一颗广度优先生成树T.要求G和T均用邻接表表示.邻接表的类型定义如下: TYPE link=^node node=RECORD vex:1..n; next:link END adjlist=ARRAY[1..n] OF link; 注:算法中若用到队列操作,可直接调用. (20分)