国家计算机软考高级程序员历年真题1997
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1997年度高级程序员上午试卷
试题1
从供选择的答案中,选出应填入下面叙述中____?____内的最确切的解答,把相应编号写在答卷的对应栏内。
一种最早用于科学计算的程序设计语言是__A__;一种提供指针和指针操作且不存在布尔类型的、应用广泛的系统程序设计语言是__B__;一种适合在互联网上编写程序可供不同平台上运行的面向对象程序设计语言是__C__;一种在解决人工智能问题上使用最多的有强的表处理功能的函数程序设计语言是__D__;一种以谓词逻辑为基础的,核心是事实、规则和推理机制的实用逻辑程序设计语言是__E__。
供选择的答案
A~E:① PASCAL② ADA③ SMALLTALK④ SNOBOL⑤ C
⑥ ALGOL 68⑦ JAVA⑧ LISP⑨ PROLOG⑩ FORTRAN
试题2
从供选择的答案中,选出应填入下面叙述中___?___内的最确切的解答,把相应编号写在答卷的对应栏内。
在有一台处理机CPU和两台输入输出设备IO1和IO2,且能够实现抢先式多任务并行工作的多道程序内,投入运行优先级由高到低P1,P2,P3三个作业。
它们使用设备的先后顺序和占用设备时间分别是:
作业P1:I02(30毫秒) CPU(10毫秒) IO1(30毫秒) CPU(10毫秒)
作业P2:IO1(20毫秒) CPU(20毫秒) IO2(40毫秒)
作业P3:CPU(30毫秒) IO1(20毫秒)
在对于其它辅助操作时间可以忽略不计的假设下,作业P1,P2,P3从投入到完成所用的时间分别是__A__毫秒,__B__毫秒和___C___毫秒。
三个作业从投入运行到全部完成,CPU的利用率约为__D__%,IO1的利用率约为__E__%。
假定在系统中仅有这三个作业投入运行,各设备的利用率指该设备的使用时间同作业进程全部完成所占用最长时间的比率。
供选择的答案
A~E:① 60② 67③ 70④ 78⑤ 80
⑥ 89⑦ 90⑧ 100⑨ 110⑩ 120
试题3
从供选择的答案中,选出应填入下面叙述中__?__内的最确切的解答,把相应编号写在答卷的对应栏内。
当网络用户通过网络与另一台主机X通信,发现响应太慢时,可运行__A__程序,把一个分组发向主机X,通过查看所返回的分组首部的 __B__,发现问题的所在,并采取相应的措施。
对一个大中型网络,需要有一个网络管理系统进行管理。
当前流行的各类网管平台软件都支持__C__协议。
驻留在__D__上的网管平台软件可通过该协议软件调阅被管理的网络结点内的管理信息库中的内容。
有若干常用的网络平台软件,但__E__不是网管平台软件。
供选择的答案
A:① Browser② Bitware③ Ping④ Handshaking
B: ① 地址② 时戳③ 标识码④ 校验码
C:① MAP② SNMP③ MHS④ FTAM
D:① 数据库服务器② 通信服务器③ 主路由器④ 网络管理工作站
E:① NetManager② OpenView③ SunView④ NetView
试题4
从供选择的答案中,选出应填入下面叙述中__?__内的最确切的解答,把相应编号写在答卷的对应栏内。
设数据结构(D,R)由数据结点集合D={d i| 1≤ i ≤7 }及其上的关系R组成。
1、当R ={ < d i-1,d i > | d i-1 d i ∈D ,2≤ i ≤7 } 这个结构对应于__A__。
2、当R ={ < d1,d2 > ,< d1,d3 > ,< d2,d3 > ,< d4,d6 > ,< d6,d5 > ,< d6,d7 > }这个结构的图形是__B__;用__C__遍历法可以得到__A__的数据结构。
3、当R ={ < d4,d2> ,< d2,d1 > ,< d2,d4> ,< d3,d4 > ,< d4,d5> ,< d4,d6 > ,< d4,d7 > },这个结构的图形是__D__;用__E__遍历法可以得到__A__的数据结构。
供选择的答案
A、B、D:① 二叉树② 队列③ 二叉排序树④ 线性表⑤ 无向图⑥ 有向无回路图 C、E :① 前序② 中序③ 后序④ 深度优先⑤ 广度优先
试题5
从以下叙述中选出5条最确切的叙述,把相应编号依次写在答卷的A~E栏内。
①在数据库系统中,数据独立性指数据之间的相互独立,互不依赖。
②SQL语言的视图定义和视图操作功能不支持逻辑数据的独立性。
③SQL语言中不提供显式地使用索引的功能,支持了物理数据的独立性。
④用户对“脏数据”的读出是由于数据库完整性规则受到了破坏。
⑤在数据库系统中,数据的安全性是指保护数据以防止未被授权用户的蓄意或者无意使用。
⑥实体完整性规则指主关键字值的任何组成部分都不可以是空值;引用完整性规则则不允许引用不存在的实体(即元组)。
⑦在数据库系统中,数据的完整性是指数据的正确性和有效性。
⑧“授权”是数据库系统中采用的完整性措施之一。
⑨事务处理(Transaction)是数据库运行的基本单位。
如果一个事务处理成功,则全部数据行到更新和提交;如果失败,则已做的全部更新被恢复成原状,好象整个事务处理未进行过一样。
这样使数据库保持了一致性。
⑩对数据库的查找、增添、删除、修改等操作都需由数据库管理员进行完整性定义和安全性授权,由数据库系统具体执行。
试题6
从供选择的答案中,选出应填入下面叙述中 __?__ 内的最确切的解答,把相应编号写在答卷的对应栏内。
在设计测试用例时,__A__是用得最多的一种黑盒测试方法。
在黑盒测试方法中,等价类划分方法设计测试用例的步骤是:
1、根据输入条件把数目极多的输入数据划分成若干个有效等价类和若干个无效等价类;
2、设计一个测试用例,使其覆盖__B__尚未被覆盖的有效等价类,重复这一步,直至所有有效等价均被覆盖。
2、设计一个测试用例,使其覆盖__C__尚未被覆盖的无效等价类,重复这一步,直至所有无效等价均被覆盖。
因果图方法是根据__D__之间的因果关系来设计测试用例的。
在实际应用中,一旦纠正了程序中的错误后,还应选择部分或全部原先已测试过的测试用例,对修改后的程序重新测试,这种测试称为 __E__。
供选择的答案
A:① 等价类划分② 边值分析③ 因果图④ 判定表
B、C:① 1个② 7个左右③ 一半` ④ 尽可能少的⑤ 尽可能多的⑥ 全部
D:① 输入与输出② 设计与实现③ 条件与结果④ 主程序与子程序
E:① 验收测试② 强度测试③ 系统测试④ 回归测试
试题7
从供选择的答案中,选出应填入下面叙述中__?__内的最确切的解答,把相应编号写在答卷的对应栏内。
用高级语言编写程序时,子程序调用语名中的实在参数必须与子程序说明中的形式参数在__A__ 上保持一致。
在允许子程序递归调用的高级语言环境中,需用动态存储管理方法,它通常使用一个__B__存入子程序的调用记录,调用记录可包括(1)全局量存储区域的__C__;(2)调用点所在子程序的__D__;(3)调用点的__E__;(4)形式参数和实在参数的通信区域;(5)返回值;(6)本子程序的局部量和临时变量存储区域等。
供选择的答案
A:① 个数、类型② 个数、顺序③ 个数、格式、顺序④ 个数、类型、顺序
B:① 线性表② 队列③ 堆④ 下推栈
C~E:① 子程序首地址② 调用记录首地址③ 参数地址
④ 寄存器地址⑤ 返回地址⑥ 开始地址
试题8
从供选择的答案中,选出应填入下面叙述中__?__内的最确切的解答,把相应编号写在答卷的对应栏内。
某CPU的主振频率为100兆赫,平均每个机器周期包含4个主振周期。
各类指令的平均机器周期数和使用频度如下表所示,则该计算机系统的速度为平均约__A__兆指令/秒。
若某项事务处理工作所要执行的机器指令数是:控制程序(以访内、比较与转移等其它指令为主)220000条指令和业务程序(以包括乖除在内的算术逻辑运算为主)90000条指令,且指令使用频度基本如上表所示,则该计算机系统的事务处理能力约为__B__项/秒。
若其它条件不变,仅提高主振频率至150兆赫,则此时该计算机速度为平均约__C__兆指令/秒,对上述事务的处理能力约为__D__项/秒。
若主频仍为100兆赫,但由于采用了流水线和专用硬件等措施,使各类指令的每条指令平均机器周期数都变为1.25,此时,计算机的速度平均约__E__ 兆指令/秒。
供选择的答案
A ~E:① 1② 5③ 10④ 15 ⑤ 20
⑥ 33.3⑦ 50⑧ 66.7⑨ 100 ⑩ 200
试题9
从供选择的答案中,选出应填入下面叙述中__?__内的最确切的解答,把相应编号写在答卷的对应栏内。
SCSI是一种通用的系统级标准输入/输出接口,其口__A__标准的数据宽度16位,数据传送率达20MB/S。
大容量的辅助存贮器常采用RAID磁盘阵列。
RAID的工业标准共有六级。
其中__B__是镜象磁盘阵列,具有最高的安全性;__C__是无独立校验盘的奇偶校验码磁盘阵列;__D__是采用纠错海明码的磁盘阵列;__E__则是既无冗余也无校验的磁盘阵列,它采用了数据分块技术,具有最高的I/O性能和磁盘空间利用率,比较容易管理,但没有容错能力。
供选择的答案
A:① SC SI-I ② SCSI-II ③ FAST SCSI-II ④ FAST/WIDE SCSI-II
B~E:① RAID 0② RAID 1③ RAID 2④ RAID 3
⑤ RAID 4⑥ RAID 5
试题10
从供选择的答案中,选出应填入下面叙述中__?__内的最确切的解答,把相应编号写在答卷的对应栏内。
语言与文字输入技术是研究如何将计算机主要靠键盘输入文字数据的方式逐步改变成人们口述或写入的方式送入信息。
语言与文字输入的过程包含有__ A__、预处理、特征抽取、__B__与分类决策等环节。
__A__阶段通过传感器获得的模拟电信号要经过模数转换变成数字信号,它需要对模拟电信号抽样测量,将测量的值__C__, 以便用二进制数字信号来表示;预处理的主要任务是进行削弱无用信息和增强有用信息的工作;特征抽取将上述环节产生的输入样本以有利于决策的形式表示出来,典型的常用方法是__D__表示法;__B__又称为分类器学习;分类决策则通过比较和决策来完成对输入信息的 __E__。
从选择的答案
A~E:① 辨认识别② 特征向量③ 频谱分析④ 分级取整
⑤ 消除噪声⑥ 模型生成⑦ 数据合成⑧ 信息获取
试题11
从供选择的答案中,选出应填入下面叙述中__?__内的最确切的解答,把相应编号写在答卷的对应栏内。
计算机的发展已进入了网络计算的新时代。
Internet是目前世界范围内最大的互联网。
如此多的各种计算机之所以能通过Internet相互通信,是因为它们遵循一了套共同的Internet
协议。
这套协议的核心是__A__,在其上建立的无连接的运输层协议是__B__,万维网WWW上超文本传输遵循__C__,电子邮件传输遵循__D__, Ethernet与Internet连接时要用__E__。
供选择的答案
A~E:① TCP② IP③ EDIFACT④ HDLC⑤ ARP
⑥ UDP⑦ FTP⑧ ICMP⑨ SMTP⑩ HTTP
试题12
从供选择的答案中,选出应填入下面叙述中__?__内的最确切的解答,把相应编号写在答卷的对应栏内。
The relational database model requires the data be __A__ through programs that don't rely on the position of the data in the database. This is in direct __B__ to the other database mode, where the program has to follow a series of pointers to the data it seeks. A program __C__ a relational database simply asks for the data it seeks;
the DBMS performs the necessary searches and __D__ the information. The __E__ on how the search is done are specific to the DBMS and vary from product to product.
供选择的答案
A:① accessed② moved③ read④ wrote
B: ① conduct② contract③ contrast ④ construct
C: ① consulting② containing ③ querying ④ queuing
D: ① erases② provides③ proves④ values
E: ① details② documents③ tails④ tenants
试题13
从供选择的答案中,选出应填入下面叙述中__?__内的最确切的解答,把相应编号写在答卷的对应栏内。
When most people refer to multimedia, they generally mean the combination of two or more continuous media, usually with some user __A__. In practice, the two media are normally audio and video , this is ,__B__ plus moving __C__.
It should be obvious by now that transmitting multimedia material in uncompressed form is completely out of __D__. The only hope is that massive compression is possibe. Fortunately, a large body of research over the past few decades has led to many compression thchniques and algorithms that make multimedia transmission_ __E___.
供选择的答案
A~C:① display② games③ help④ interaction
⑤ pictures⑥ sound⑦ web
D、E: ① impossible ② fearful ③ feasible ④ program⑤ question ⑥ ting
试题14
从供选择的答案中,选出应填入下面叙述中__?__内的最确切的解答,把相应编号写在答卷的对应栏内。
包含3个命题变元的命题公式中,能够出现__A__个真值赋值。
包含3个命题变元的命题公式可以形成__B__个不同真值的命题公式。
公式__C__是矛盾式,公式__D__是非重言式的可满足式。
公式__E__是析取范式。
供选择的答案
A:① 3② 8③ 27④ 64
B:① 4② 16③ 64④ 256
C、D:① ┐(P→q)∧q∧r② p→(p∨q)
③ (p∧q) ∨(p∧┐q) ④ ┐(p∧q)→┐p∨┐q
E: ① ┐P∨(q∧-r) ∨(p∧r)q┐② (p∨┐q)∧(q∨r) ∧┐r
③ (p∨q) ∧┐(q∨┐r)④ (p→q) ∨(p∧r)
试题15
从供选择的答案中,选出应填入下面叙述中__?__内的最确切的解答,把相应编号写在答卷的对应栏内。
n个未知数的线性方程组的矩形式是
A x=b
其中A为n阶矩阵,b和x为n维列向量。
高斯一约当法是一种__A__。
它是把矩阵A变换成__B__的解法,计算量(乘法或除法)约为__C__。
若在计算过程中某对线(例如第K 行,第K列)上的元素是0或者接近于0,就无法求解或解的精确度很差,因此往往进行行或列交换,把比X大的行或列中__D__的元素交换到对角线上求解。
即使进行这种交换,对角线元素仍近似为0的矩阵称为 __E__。
供选择的答案
A:① 直接法② 间接法③ 迭代
法④ 牛顿法
B:① 上三角矩阵② 下三角矩阵③ 单位矩阵④ 三对角线矩阵
C:① n2/2 ② n2/3 ③
n3/2 ④ n3/3
D:① 绝对值最大② 绝对值最小③ 最大④ 最小
E:① 正定矩阵② 病态矩阵③ 奇异矩阵④ 希尔伯特矩阵
1997年度高级程序员级下午试卷
试题一
阅读以下说明和流程图,回答问题1至问题4,将解答写在答卷的对应栏内。
[说明]
某公司将其生产的商品通过若干个销售点进行销售。
销售点在收到商品后的规定时间内把货款汇给公司。
流程图描述了该公司发货、收款、催款的处理过程。
其中部分文件和单据的格式如下:商品文件:商品代号,商品名称,单价
销售点文件:销售点代号,销售点名称,地址
发货单:发货日期,销售点代号,商品代号,数量,金额
收款单:收款日期,销售点代号,商品代号,数量,金额,该商品的发货日期
处理 1~3 把当天的发货单合并到发货文件。
处理 4~6 把当天的收款单合并到收款文件。
处理 7 在发货文件中当天已收款的记录上加上已收款标记。
处理 8 和处理 9 在月末执行一次,主要用于输出月发货报告、催款通知单、月收款报告。
[问题1]
详细写出流程图中商品文件和销售点文件对处理1的作用。
[问题2]
说明处理 8 为何要写发货文件。
[问题3]
说明处理 9 除制作月收款报告外还对收款文件做什么操作。
[问题4]
为了提高处理效率,流程图需作何改动。
试题二
阅读以下说明和流程图,回答问题 1 至问题 3,将解答写在答卷的对应栏内。
[说明]
本流程图用来实现一组正整数的加权舍位平衡。
已知正整数组
A(a1,a2,…,an)
n
满足条件a1=∑ (n≥3)。
现将数组 A 中的每个数舍 P 位(P 为正整数)后,得到另一正整数数组
i=2
B(b1,b2,…,bn)
它满足如下条件:
1、b1是a1舍P位后四舍五入所得,即b1 = INT(a1/10P + 0.5)
n
2、b1 =∑bi
i=2
3、bi = INT(ai/10P) + ei(i = 2,3,…,n), 其中 ei 取值为 0 或 1,当 ei = 1时,称 ei 是第 i 项数据的进位
4、ei(i = 2,3,……,n)之值根据余数 MOD(ai,10P)乖上权fi(fi≥0) 后的数值大小来决定(其算法见流程图),权 fi 存放在数组 F 中。
其中 INT 是取整数函数,MOD 是余数函数。
例如正整数 78965 舍 P = 3 位,则
INT(78965/103)=78
MOD(78965,103)=965
[问题1]
填充流程图中①~④ ,把解答写在答卷纸的相应位置上。
[问题2]
若 N = 5,P = 1,A =(1586,985,26,247,328)
F =(1,1,1,1,1)
则数组B的值是多少?
[问题3]
若 N = 3,P = 1,A =(41,16,25),F =(1,0,0),则数组 B 的值是多少?
试题三
阅读以下说明和流程图,回答问题1至问题3,将解答写在答卷的对应栏内。
[说明]
下面给出的是某房产管理系统的一套分层数据流图。
其功能描述如下:
(1)系统随时根据住房送来的入信单更新信户基本信息文件;
(2)每月初系统根据物业管理委员会提供的月附加费(例如清洁费、保安费、大楼管理费等)表和房租调整表,计算每家住户的月租费(包括月附加费),向住户发出交费通知单。
住户交费时,系统输入交费凭证,核对后输出收据给住户;
(3)系统定期向物业管理委员会提供住房分配表和交费情况表;
(4)住户因分户或换房,在更新住户基本信息文件的同时,系统应立即对这些住户做月租费计算,以了结分户或换房前的房租。
假定题中提供的顶层图是正确的,请回答下列问题:
[问题1]
指出哪张图中的哪些文件可不必画出。
[问题2]
指出在哪些图中遗漏了哪些数据流。
回答时请用如下形式之一:
1)×× 图中遗漏了×× 加工(或文件)流向×× 加工(或文件)的×× 数据流;
2)×× 图中加工×× 遗漏了输入(或输出)数据流×× 。
[问题3]
指出加工 2 图中加工 2.3 能检查出哪些不合格交费凭证。
[流程图]
顶层图
试题四
在 COMET 型计算机上可以使用试卷上所附的 CASL 汇编语言。
阅读下列程序说明和 CASL 程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
[程序说明]
本子程序将一个非负二进整数翻译成五位十进整数字符。
进入子程序时,在GR0 中给出被翻译的非负二进整数,在 GR2 中给出存放五位十进整数数字字符的起始地址。
十进制数字字符用 ASCII 码表示。
当结果小于五位时,左边无空白符替换;当二进整数为零时,在(GR2)+4中存放 0 的 ASCII 码。
数字字符 0 至 9 的 ASCII 码是 48 至 57,空白符的 ASCII 码是 32。
[程序]
START
LEA GR1,0
LEA GR3,32
L1 ____(1)____
JPZ L2
ST GR3,0,GR2
LEA GR2,1,GR2
LEA GR1,1,GR1
LEA GR4,-4,GR1
JNZ L1
L2 ___(2)___
L3 ___(3)___
JMI L4
SUB GR0,SN0,GR1
LEA GR3,1,GR3
___(4)___
L4 ST GR3,0,GR2
LEA GR2,1,GR2
LEA GR1,1,GR1
___(5)___
JNZ L2
RET
SON DC 10000
DC 1000
DC 100
DC 10
DC 1
END
试题五
阅读以下程序说明和 FORTRAN 程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
[程序说明]
对称矩阵通常只需存储其下三角部分,例如,下列对称矩阵
| 1 2 3 4 |
| 2 5 6 7 |
| 3 6 8 9 |
| 4 7 9 11 |
可用一维数组(1,2,3,4,5,6,7,8,9,10)存储其下三角部分。
N 阶对称矩阵下三角部分的元素个数为 ( N * N + N ) / 2 。
本子程序用来计算 N 阶对称矩阵 A 的平方 B,B 也是一个 N 阶对称矩阵。
程序中 X,Y 是分别存入 A,B 下三角部分的一维数组。
[程序]
SUBROUTINE P(X,Y,N)
INTEGER X(N*N+N)/2,Y(N*N+N)/2),S
M=1
DO 10 JJ=__(1)__
DO 10 II =__(2)__
I=II
J=JJ
L=__(3)__
S=0
DO 30 K=1,N
S=S+X(I)*X(J)
IF(____(4)____) THEN
I=I+L
ELSE
I=I+1
ENDIF
IF(____(5)____) THEN
J=J+L
ELSE
J=J+1
ENDIF
L=L-1
30 CONTINUE
Y(M)-S
M=M+1
10 CONTINUE
END
试题六
阅读以下程序说明和 C 程序,将应填入__(n)__ 处的字句,写在答卷的对应栏内。
[程序说明]
某系统由 n 个部件组成,这些部件被物理地分成若干个分离的部件组。
同一组内的两件部件 i 和 j,它们或直接相连,或间接相连(部件 i 和部件 j 间接相连是指在这两件部件之
间有一个部件相连序列,其中部件 i 和 j 分别与这相连序列中的某个部件直接相连)。
系统的n 个部件被统一编号为 0,1,…,n-1。
本程序输入所有直接相连的部件号对,分别求出系统各分离部件组中的部件号并输出。
程序根据输入的直接相连的两件部件号,建立 n 个链表,其中第 i 个链表的首指针为s[i],其结点是与部件 i 直接相连的所有部件号。
程序依次处理各链表。
在处理 s[i] 链表中,用 top 工作链表重新构造 s[i] 链表,使s[i] 链表对应系统中的一个部件组,其中结点按部件号从小到大连结。
[程序]
# include
#define N 100
typeef struct node{
int data;
struct node *link;
} NODE;
NODE * s[N];
int i,j,n,t;
NODE *q,*p,*x,*y,*top;
main()
{ printf(“Enter number of parts.”);
scanf(“%d”,&n);
for(i=0; i<n; i++) printf(“Enter pairs.\n”);
white (scanf(“%d%d”,&i,&j) == 2)
{ /*输入相连部件对,生成相连部件结点链表*/
p = (NODE *)malloc(sizeof(NODE));
p->data = j; p->link = s[i]; s[i] = p;
p = (NODE *)malloc(sizeof(NODE));
P->data = i; p->link = s[j]; s[j] = p;
}
for(i = 0;i < n; i++) /* 顺序处理各链表 */
for(top = s[i],____(1)____;top != NULL;)
{ /*将第 i 链表移入top工作链表,并顺序处理工作链表的各结点*/
q = top; ____(2)____;
if (s[j = q->data] != NULL)
{ /将 j 链表也移入工作链表*/
for(p = s[j]; p->link != NULL; p = p->link);
p->link = top; top = s[j];____(3)____;
}
/* 在重新生成的第 i 链表中寻找当前结点的插入点 */
for(y = s[i]; ____(4)____; x = y,y = y->link);
if(y != NULL && y->data == q->data)
free(q);/*因重新生成的第i链表已有当前结点,当前结点删除* / else { /* 当前结点插入重新生成的i链表*/
____(5)____;
if(y == s[i]) s[i] = q;
else x->link = q;
}
}
for(i = 0;i < n; i++)
{ /* 输出结果 */
if (s[i] == NULL) continue;
for(p = s[i]; p != NULL;)
{ printf(“\t%d”,p->data);
q = p->link; free(p); p = q;
}
printf(“\n”);
}
}
试题七
阅读以下程序说明和 FORTRAN 程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
[程序说明]
本子程序实现地图的着钯。
在地图上,一个国家所着的颜色必须与所有相邻的国家所着的颜色不同。
现已证明,仅需四种不同的颜色就能解决地图的着色
若地图上有 N 个国家,分别用 1 至 N 编号。
子程序中用数组 INDEX(N,2)和 BORDER (M)存放 N个国家的相邻情况。
INDEX(I,1)和 INDEX(I,2)分别表示与第 I 国相邻的国家编号在数组 BORDER中的起始位置和终止位置,即这些邻国的编号存放在 BORDER(INDEX(I,1))至 BORDER(INDEX(I,2))中。
例如,对应于图 1 所示的地图,数级 INDEX 和 BORDER 具有如下值:
| 1 4 |
| 5 6 |
INDEX= | 7 10 |
| 11 13 |
| 14 16 |
BORDER =(2,3,4,5,1,3,1,2,4,5,1,3,5,1,3,4)
子程序中分别用 1,2,3,4 代表四种不同颜色,着色结果存放在数组 COLOR 中,即数组元素 COLOR(I)的值为第 I 个国家所着的颜色。
子程序采用试控法找解。
首先从第 I 个国家着第一种颜色开始,顺序为各个国家寻找着色方案。
对第 I 个国家,当为它找到一种未被它的相邻国家着色的颜色时,就用该颜色对此国家着色,并准备处理下一国家;当不能为它找到一个未被它的相邻国家着色的颜色时,就回溯——即改变第 I-1 个国家的着色方案。
直至最终为全部国家找到着色方案。
[程序]
SUBROUTINE P(INDEX,BORDER,COLOR,N,M)
INTEGER INDEX(N,2),BORDER(M),COLOR(N)
DO 10 I=1,N
10 COLOR(I)=0
I=1
40 IF(__(1)__)THEN
K=COLOR(I)+1
30 IF(__(2)__)THEN
J=INDEX(I,1)
20 IF(J.LE.INDEX(I,2)) THEN
IF(__(3)__) THEN
J=J+1
GOTO 20
ELSE
K=K+1
____(4)____
ENDIF
____(5)____
I=I+1
GOTO 40
ENDIF
COLOR(I)=0
_____(6)_____
GOTO 40
ENDIF
IF(I.EQ.0)THEN
WRITE(*,*)’NO SOLUTION’
ENDIF
END
试题八
阅读以下程序说明和 C 程序,将应填入__(n)__处的字句,写在答卷的对应栏内。
[程序说明]
一个相连的区域被不规则地分割成 n 个不同的小区域;每个小区域与若干其它小区域相邻接。
现用 cn 种不同颜色为该区域着色,要求每个小区域着同一种颜色,相邻小区域着不同颜色。
设小区域被顺序编号为 0,1,…,n-1。
每个小区域与其它小区域的邻接关系用两维数组bordering 表示,元素 bordering[i][j] 表示 i 号小区域与 j 号小区域之间的邻接关系:
0 j 小区域与 i 小区域不邻接
bordering[i][j]=
1 j 小区域与 i 小区域相邻接
程序中,把计算结果存入于两维数组 colored 中,颜色编号为0,1,…,cn-1,元素 colored[coler][j] 的含义是:
0 j 小区域不用颜色 color 着色
colored[color][j]=
1 j 小区域用颜色 color 着色
函数 colorcountry(bordering,colored,n,cn) 根据所给的小区域邻接关系数组bordering、小区域个数 n 、颜色数 cn,将找到的着色方案记录在数组 colored 中。
函数采用试探法找解。
首先从第一个小区域着第一种颜色开始顺序为各小区域找着色方案。
对某个小区域,当为它找到一种未被它的相邻小区域着色的颜色时,就用该颜色对该小区域着色,并准备处理下一个小区域。
当不能为某个小区域找到一个未被它的相邻小区域着色的颜色时,就回溯。
如最终为全部小区域找到着色方案,函数返回 1;否则,函数返回0。
程序假定小区域个数不超过 20,颜色数为 4。
[程序]
#include
#define n 20
#define CN 4
int colorcountry(int bordering[][N], int colored[][N], int n,int cn)
{ int color,used,i,c;
for(color = 0; color < cn; color++) /* 设置所有区域均未着色 */
for(i = 0;i < n; i++) colored[coler][i] = 0;
c = 0; /*从第1个小区域开始*/
color = 0; /*从着第1种颜色开始试控*/
while (c < n)
{ /*还未对全部小区域着色时循环*/
while(___(1)___)/*顺序对每种颜色作试探*/
{/*检查当前颜色是否已被某相邻小区域着色*/
for (i = 0, used = 0; !used && i<c; i++)
if(____(2)____) used = 1;
if (!used) break; /*当前颜色未被相邻小区域着色*/
color++
}
if (!used)
{ /* 找到一种可用颜色,用此色着色,并准备处理下一个小区域 */
____(3)____ = 1; color = 0;
}else{ /* 未找到一种可用颜色,回溯 */
c--; if (c < 0) return 0; /*发现没有解的情况*/
for(color = 0; ____(4)____; color++);
____(5)____ = 0
}
}
return 1;
}
print(int colored[][N],int n,int cn) /* 输出结果 */
{ char *colortbl[] = {“RED”,”BLUE”,”GREEN”,”YELLOW”};
int color,i;
for(color = 0; color < cn; color++)
{ printf(“\n%s;\n”,colortb1[color]);
for(i = 0;i<n; i++)
if (colored[color][i]) printf(“\t%d”,i);
printf(“\n”);
}
}
int colored[CN][N],bordering[N][N];
main()
{ int c,i,j,n;
printf(“Enter number of areas.”); scanf(“%d”,&n);
printf(“Enter bordering:\n”);
for (i = 0;i < n; i++)
for (j = 0;j < n; j++) bordering[i][j] = 0
for(i = 0;i < n; i++)
{ printf(“Enter areas to link %d area(<0 to next).\n”,i);
scanf(“&d”,&j);
while (j >= 0)
{ if(i != j) bordering[i][j] = bordering[j][i] = 1;
scanf(“%d”,&j);
}
}
if(colorcountry(bordering,colored,n,CN))
print(colored,n,CN);
else printf(“No Solution.\n”);
}
1997年度高级程序员试题答案
上午答案
注:*表示可交换
下午答案
试题一(15分)
(1)(3分) 检查发货单中非法销售代号、非法商品代号、数量*单价≠金额等错误。
答“检查发货单的合法性”得 2 分
(2)(4分) “删除发货文件中已做收款标记的所有记录”
或“将未收到款的记录重新组成新发货文件”。
(3)(4分) “删除收款文件中的所有记录”
或“删除已收到款的记录”
或“对收款文件初始化”。
(4)(4分) 从收款文件到处理 7 的连线改成从日收款分类文件到处理 7 的连线。
试题二(15分)
(1) (9分)
① (2分) i : n
② (2分) i :n
③ (2分) i :n
④ (3分) k :G 或 K :b1-E
答K : G-1 给2分。
(2)(4分) 159,98,3,25,33
注:错 1 个扣 1 分,错4、5个不给分。
(3)(2分) 4,1,3
注:错 1 个不给分。
试题三(15分)
(1)(3分) 0 层图中的房租文件和交费文件是局部文件,可不必画出。
注:多写一个文件扣 1 分,少 1 个文件扣 2 分。
(2)(8分)
①加工 1 子图中,遗漏了从住户基本信息文件到加工 1.1 (入住单校验)的数据流。
②加工 1 子图中,加工 1.6(制作住房分配报告)遗漏了输出数据流:住房分配表。
③加工 2 子图中,加工 2.1(计算月租费)遗漏了输入数据流:月附加费表。
④加工 2 子图中,加工 2.4(制作收据)遗漏了输出数据流:收据。
注:答对 1 点得 3 分,答对 2 点得 6 分,答对3或4点得8分。
未答下划线部分的内容时,另共扣 1 分。
(3)(4分)
①(2分)交费凭证中有非法字符
②(2分)交费文件中不存在与之对应的交费凭证
试题四(15分)
(1)(3分) CPL GRO,SNO,GR1 (用 CPA 指令也可)
(2)(3分) LEA GR3,48。