历年计算机软件水平考试程序员笔试真题
试题1
从下列叙述中,选出5条准确的叙述,把编号依次写在答卷的A-E栏内.
1.在有些操作系统中,外部设备通常被作为文件处理.
2.递归算法的程序结构比迭代算法的程序结构更为清晰.
3.在软件开发过程中,编程作业的代价.
4.数组是同类型值的集合.
5.树是一种线性表.
6.良好的程序设计风格应以缩小程序占用的存储空间和提升程序的运行速度为原则.
7.为了提升程序的运行速度,有时采用以存储空间换取运行速度的办法.
8.对同一算法,用高级语言编写的程序比用低极语言编写的程序运行
速度快.
9.数据是计算机系统的一种资源.
10.COBOL是一种非过程型语言.
11.LISP是一种逻辑型程序设计语言.
12.UNIX是一种交互的分时操作系统.
试题2
选出应填入下列叙述中的____内的准确答案,把编号写在答卷的对应
栏内.
线性表的表元存储方式有_A__和链接两种.试指出下列表中使用的是何种存储方式:
表1是_B__存储方式;表2是_C___存储方式;表3是__D__存储方式;表4是_E___存储方式.
表左的S指向起始表元
表1 表2
┏━━━━┳━━┳━━┳━━━━━┓
┏━━━━┳━━┳━━┳━━━━━┓
┃表元编号┃货号┃数量┃表元间联系┃ ┃表元编号┃货号┃数量┃表元间联系┃
┣━━━━╋━━╋━━╋━━━━━┫
┣━━━━╋━━╋━━╋━━━━━┫
S→┃ 1 ┃ 618┃ 40┃ 2 ┃ ┃ 1 ┃ 618┃ 40┃ 5 ┃
┃ 2 ┃ 205┃ 2┃ 3 ┃S→┃ 2 ┃ 205┃ 2┃ 1 ┃
┃ 3 ┃ 103┃ 15┃ 4 ┃ ┃ 3 ┃ 103┃ 15┃ 4 ┃
┃ 4 ┃ 501┃ 20┃ 5 ┃ ┃ 4 ┃ 501┃ 20┃ 0 ┃
┃ 5 ┃ 781┃ 17┃ 6 ┃ ┃ 5 ┃ 781┃ 17┃ 6 ┃
┃ 6 ┃ 910┃ 24┃ 0 ┃ ┃ 6 ┃ 910┃ 24┃ 3 ┃
┗━━━━┻━━┻━━┻━━━━━┛
┗━━━━┻━━┻━━┻━━━━━┛
表3 表4
┏━━━━┳━━┳━━┳━━━━━┓
┏━━━━┳━━┳━━┳━━━━━┓
┃表元编号┃货号┃数量┃表元间联系┃ ┃表元编号┃货号┃数量┃表元间联系┃
┣━━━━╋━━╋━━╋━━━━━┫
┣━━━━╋━━╋━━╋━━┯━━┫
┃ 1 ┃ 618┃ 40┃ 5 ┃ ┃ 1 ┃ 618┃ 40┃ 5 │ 2 ┃
S→┃ 2 ┃ 205┃ 2┃ 1 ┃S→┃ 2 ┃ 205┃ 2┃ 1 │ 0 ┃
┃ 3 ┃ 103┃ 15┃ 4 ┃ ┃ 3 ┃ 103┃ 15┃ 4 │ 6 ┃
┃ 4 ┃ 501┃ 20┃ 2 ┃ ┃ 4 ┃ 501┃ 20┃ 0 │ 3 ┃
┃ 5 ┃ 781┃ 17┃ 6 ┃ ┃ 5 ┃ 781┃ 17┃ 6 │ 1 ┃
┃ 6 ┃ 910┃ 24┃ 3 ┃ ┃ 6 ┃ 910┃ 24┃ 3 │ 5 ┃
┗━━━━┻━━┻━━┻━━━━━┛
┗━━━━┻━━┻━━┻━━┷━━┛
供选择的答案
A,B,C,D,E: 1.连续 2.单向链接 3.双向链接 4.不连续 5.循环链接
6.树状
7.网状
8.随机
9.顺序 10.顺序循环
试题3
根据其服务对象,常用的单处理机的操作系统可分为以下3种类型:
1)允很多个用户在其终端上同时交互的使用计算机的操作系统,称为_A__,通常*
采用_B__策略为用户服务.
2)允许用户把若干个作业提交计算机系统集中处理的操作系统,称为_C__.
3)在_D__的控制下,计算机系统能即时处理由过程控制反馈的数据并作出响应.
设计_D__时,首先要考虑系统的_E__.
供选择的答案
A,C,D: 1.网络操作系统 2.分布式操作系统 3.分时操作系统 * 4.实时操作系统 5.单用户操作系统 6.批处理操作系统
B,E: 1.可靠性和灵活性 2.实时性和可靠性 3.优先权分配
4.时间片轮转
5.短作业优先
6.时间片加权分配
试题4
根据文件的内部结构,能够把文件分为记录式文件和流式文件两类.记录式*
文件是一个有相同类型记录的有序集合.流式文件内部没有记录概念.最常见的*
流式文件是字符流文件,可看成是_A__的有序集合.一般来说文件名及其属性可*
以收纳在_B__中,以便查找._B__本身也是一种_C__.用户能够通过键盘命令和系*
统调用两种方式,使用文件系统.当用户通过键盘命令修改文件时,应使用_D__命
令;在程序内使用文件之前,需先使用_E__语句.
供选择的答案
A: 1.字符串 2.数组 3.记录 4.页面
B: 1.目录 2.索引 3.字典 4.作业控制块
C: 1.数组 2,记录 3.文件 4.数据集合
D: 1.创建 2.修改 3.改名 4.编辑
E: 1.打开 2.读 3.建立 4.写
试题5
人们在使用高级程序设计语言编程时,首先可通过编译程序发现源程
序中的*
全部_A__及部分_B__.然后可采用_C__来发现程序中的运行错误和采
用_D__来确
定错误的位置._E__是泛指用户在验收中发现的结果于需求不符的错误.
供选择的答案
A,B,E: 1.符号错误 2.逻辑错误 3.语法错误 4.通路错误
5.语义错误
6.溢出错误
7.设计错误
C,D: 1.诊断 2.测试 3.校验 4.排错 5.普查 6.试探
试题6 2 3
右面流程图用于找出不定方程X+2=Y (10和b>0
是系数,则Y(n)=aX(n)+bY(n-1)是___D___型滤波,Y(n)=aX(n)-bY(n-1)是___E___
型滤波.
供选择的答案
A,C:①电磁②交流③直流④脉冲⑤共模⑥串模⑦地线⑧相关
B:① N ②N ③N ④N/2
D,E:①低通②高通③带通④带阻
下午试题
试题一
[说明]
流程图1.1实现了一个将一组无序数列a1,a2,...,an排成递增序列的算法.
该算法在s-1到r(初值为1到n)的区间内,先冒泡后实行排序,直到该区间为空.图
中变量K用来指出一次冒泡或下沉后a1--ak或ak--an已排序.
试题3
阅读下列程序说明和PASCAL程序,把应填入其中_______处的字句,写在答卷的
对应栏内.
[程序说明]
本题给出的子程序用来寻找第一个均出现在三个整数链表中的相同整数.假定
在调用该子程序前,这三个整数链表已按从小到大的次序排序.相关的类型定义如下:
type pt=^elem;
elem=record
int:integer;
link:pt
end;
[程序]
procedure lookint (f1,f2,f3:pt; var found:boolean; var val:integer);
var exit:boolean;
begin found:=false;
while ____________ and not found do
begin
if __________________
then f1:=f1^.link
else if _______________
then f2:=f2^.link
else found:=true;
if found
then begin found:=false; exit:=true;
while (f3<>nil) and not found and exit do
if f3^.int=f1^.int
then found:=true
else if ___________________
then f3:=f3^.link
else begin _______________;
exit:=false
end
end
end;
if found then val:=f1^.int
end;
试题7
[程序说明]
本子程序用来建立一个已知文件的索引文件.建立索引的关键字段名为key.
设有类型:
seqelement=record ..., key:simpletype, ... end;
tmpelement=record {工作文件的成分类型}
key : simpletype; {存贮关键字值}
no : integer {对应的已知文件成分的序号}
end;
tseqfile = file of seqelement; {已知文件的类型}
tindxfile = file of integer; {索引文件类型}
其中 simpletype 是某简单顺序类型名.
为建立索引文件,子程序引入一个数组a与两个工作文件g,h.
建立索引文件的方法是:
首先重复执行以下步骤,直至已知文件读完:
1. 从已知文件读出多至100个记录,将记录中关键项的值及该记录的
序号
送到数组a;
2. 对a按关键字值从小到大排序;
3. 将a与文件g(或h)合并于文件h(或g).合并时,使文件h(或g)是
按关键字
值排序的.
然后由文件h(或g)生成索引文件.
[程序]
procedure indexed (var seqfile : tseqfile; var index file :tindxfile);
const arsize = 100;
type tmparray = array [1..arsize] of tmpelement;
tmpfile = file of tmpelement;
var a : tmparray;
g,h : tmpfile;
n,recno : integer;
s : boolean;
procedure sort(var a : tmparray; n : integer); {将数组a的
前n个元素
按key递增排序,本过程的过程体省略}
procedure combi(var f1,f2 : tmpfile); {将文件f1与数组a按
关键字值从
小到大合并于文件f2}
var i,j : integer;
begin i:=1; reset(f1); rewrite(f2); while ________________ do
begin
if f1^.key <= a[i].key then
begin f2^:=f1^; get(f1) end
else
begin ___________ ; __________ end;
put (f2);
end;
while not eof(f1) do
begin f2^:=f1^; get(f1); put(f2) end; for j:= i to n do
begin f2^:=a[j]; put(f2) end
end;
procedure gindex (var f:tmpfile);
begin rewrite (indexfile); reset(f); while not eof(f) do
begin indexfile^:=f^.no;
put (indexfile); get(f)
end
end;
begin reset(seqfile); recno:=0;s:=true;
repeat n:=0 ;
while ____________ do
begin n:=n+1; a[n].key:=seqfile^.key;
recno:=recno+1;a[n].no:=recno;
get(seqfile)
end;
sort(a,n);
if s then combi(g,h)
else combi(h,g);
_______________________
until eof (seqfile);
if ________________ then gindex(g)
else gindex(h)
end;
试题11
[程序说明]
本程序能从1至n(n<1000)的自然数中取r个数的所有组合,并按指定的格
式输出其结果.例如,n=5,r=3时,共有10种组合(见下面左边列表),而程序将按
下面右边列表形式输出(每一行前有一空格).
10种组合程序输出形式
combinations:
1,2,3 1 2 3
1,2,4 4
1,2,5 5
1,3,4 3 4
1,3,5 5
1,4,5 4 5
2,3,4 2 3 4
2,3,5 5
2,4,5 4 5
3,4,5 3 4 5
[程序]
program comnr(input,output);
var n,r:integer;
blank:boolean;
proecdure combination(s,j:integer);
var i:integer;
begin
for i:= _____________ to n-j+1 do
begin
if ____________ then write (' ':______________*3+1); write (i:3); blank:=false;
if ___________________ then
combination (______________)
else begin
writeln;
______________________
end
end
end;
begin writeln('ENTER N,R.');
readln(n,r); blank:=true;
writeln('combinations:');
combination(1,r)
end.