高级语言程序设计 答 案
一、填空题(每空1分,共14分)
1.当x≥0时,round(x)=trunc(__________)

3.若x为整数,当x=45时,表达式(pred(x)mod 10<=5)and(succ(x)div 10=4)的值为________。
4. __________、__________、__________、__________四种类型是PASCAL语言的构造类型。
5.设有类型定义和变量说明:
type rec=record a,b:integer
end;
var x:rec;
执行语句序列:
read(x.a,x.b);
if odd(x.a)and odd(x.b)
then writeln(x.a)
else writeln(x.b)
当输入数据2 7↙后输出结果是:__________
6.执行语句序列:
n:=8;
if n<=3
then a:=1
else if n<6 then a:=2 else a:=3
后,a的值是:__________
7.设有变量说明
var s1,s2:set of 1..10 i:1..10;
执行语句序列:
s1:=[1..5];s2:=[3,2,6,7];
s1:=s1-s2;
for i:=1 to 10 do
if i in s1 then write(i:3)
后的输出结果是__________。
8.过程首部参数、函数首部参数和__________、__________是四种类别的形式参数。
9.设有函数说明:
function f(a,b,c:integer):boolean;
begin f:=a+c>b-c end
请问函数命令符f(5,8,1)的值是__________
10.在标识符定义点区域内,除标识符定义性出现位置外的其它位置出现的该标识符都是__________
二、单项选择题(在下列每小题四个备选答案中选出一个正确答案,并将其字母标号填入题干后面的括号
内。第小题2分,共16分)
1.PASCAL语言中引入"类型相容"主要是为( )服务的。
A、表达式中运算
B、赋值语句中的赋值
C、过程与函数中的参数传递
D、构筑"构造类型"
2.对重复语句执行,其重复对象的语句可能一次也不做的是( )
A、当(while)语句、直到(repeat)语句
B、直到(repeat)语句
C、直到(repeat)语句、循环(for)语句
D、当(while)语句、循环(for)语句
3.一个操作(过程或函数)的目的是计算一个值,若这个值的类型是( )时,这操作应定义为过程。
A、简单类型
B、枚举类型或子域类型
C、构造类型
D、指针类型
4.请求一个过程操作(即过程语句),该过程操作的结果数据怎样返还给请求者?( )
A、通过值参数或变量参数返还
B、通过值参数返还
C、一般通过变量参数返还
D、不能用参数返还,只可用过程分程序中非局部量返还
5.程序中的"语义"错误,通常由( )检测出来。
A、编译
B、调试
C、测试
D、运行
6.程序中尽量多地使用局部对象可以( )
A、减少标识符个数
B、减少名的选择
C、减少标识符的定义点
D、减少标识符的应用性出现
7.数组和文件有很大不同,例如存放存储介质、成分的个数、访问成分的方式等,但是它们却有一个相似之
处,即( )
A、成分的表示方式
B、成分类型的限制
C、各成分的类型可不同
D、各成分的类型都相同
8.索引文件是以文件成分的某一子成分为索引项,按索引项递增(或递减)的次序( )的一个文件。
A、重新组织
B、进行排序
C、进行复制
D、在文件成分中增加"索引目录"一个子成分
三、改错题(指出下列程序中的错误及出错原因。每小题2分,共8分)
1.program er1(input,output);
var x:real;
begin read(x);
if odd(x)
then writeln('x is odd.')
else if x mod 3=0
then writeln('There is a factor of 3 in x')
else writeln(x:4)
end.
(1)____________________
(2)____________________
2.program er2(input,output);
var i,s:integer;
begin s:=0;
for i:='a' to ord('z')do
begin s:=s+i;i:=i+1 end;
writeln(s:4)
end.
(1)____________________
(2)____________________
3.program er3(input,output);
var a,b:integer;
function f(a,b:integer):char;
begin f:=ord('A')+(a-b)mod
26 end;
begin read(a,b);
if f(a-b)='c'
then writeln('O.K.')else
writeln('NOT')
end.
(1)____________________
(2)____________________
4.program er4(input,output);
type e=(a,b,c);
ta1=array[e,'A'..'C',0..0.9]
of integer;
var i:e;j:char;k:real;m:tal;
begin
for i:=a to c do
for j:='A' to 'C' do
read(m[i,j]);
(*下略*)
end.
(1)____________________
(2)____________________
四、阅读程序题:阅读下列程序,说明其功能(7分)(不需给出运行结果)
program calpro(output);
var i,m,s,k:integer;
begin
for i:=100 to 500 do
begin
s:=0;m:=i;
repeat
k:=m mod 10;s:=s+k;m:=m
div 10
until m=0;
writeln(s)
end
end.
五、计算题(每小题10分,共30分)
阅读如程序,将程序运行时的输出填写在相应答题栏内。
1.计算程序1如下:
program calc1(output);
var c:char;
procedure p(ch:char);
procedure p1;
var i:integer;
begin for i:=1 to 5 do write('*') end;
begin
p1;write(ch);p1;writeln
end;
begin
for c:='A' to 'D' do p(c)
end.
当程序运行时,其输出为:
2.计算程序2如下:
program calc2(input,output);
type st=set of 1..10;
var s1:st;
i:1..10;sum,k:integer;
begin
sum:=0;s1:=[];
for k:=1 to 5 do
begin read(i);s1:=s1+[i] end;
for i:=1 to 10 do
begin
if i in s1 then sum:=sum+i;
if(i in s1)and(i mod 2=0)then write(i:3)
end;
writeln;
writeln('sum=',sum)
end.
当程序运行输入2 5 7 8 4时,其输出为:
3.计算程序3如下:
program calc3(input,output);
type rec=record
a:=array [1..10] of integer;
end;
ptc=^rec;
var i:integer;p:ptc;
begin
new(p)
for i:=1 to 10 do
begin
read(p^.a[i]);
if p^.a[i]>0 then write(p^.a[i]:3)
end;
writeln;
dispose(p)
end.
当程序运行输入-2 -5 6 -4 -8 12 23 -32 9 -4时,其输出为:
六、编程题(第1题12分,第2题13分,共25分)

其中斜列上安排数的方向由up控制,即
[程序]
program prg2;
const m=20;
type ta=array[1..m,1..m]of integer;
var a:ta; i,j,k,n:integer; up:boolean;
begin
read(n);
i:=n;j:=1;a[n,1]:=1;up:=true;
for k:=( A )do
begin
if( B )
then begin i:=i-1;j:=j-1;end
else begin i:=i+1;j:=j-1;end;
if( C )
then begin i:=i+1;j:=j+2;up:=not
up end;
if( D )
then begin i:=i-2;j:=j-1;up:=not
up end;
if( E )then begin i:=i-1;up:=not
up end;
if( F )then begin j:=j+1;up:=not
up end;
a[i,j]:=k
end;
for i:=1 to n do
begin writeln;
for j:=1 to n do write(a[i,j]:3)
end
end.
A_______________________
B_______________________
C_______________________
D_______________________
E_______________________
F_______________________

[程序]
program prg2;
type link=^node;
node=record c:integer;next:link end;
var p,pod,pev,q,tod,tev:link;n:integer;
begin read(n);p:=nil;
while n<>0 do
begin new(q);q^.c:=n;q^.next:=p;
p:=q;read(n)
end;
writeln;write('Input
link');q:=p;
while q<>nil do
begin write(q^.c:4);q:=q^.next end;
pod:=nil;( A );
while p<>nil do
begin q:=p;( B );q^.next:=nil;
if odd(q^.c)
then begin
if pod=nil
then pod:=q
else( C )
tod:=q end
else begin
if( D )
then pev:=q
else( E );
( F )end
end;
writeln;write('Odd link');q:=pod;
while q<>nil do
begin write(q^.c:4);q:=q^.next end;
writeln;write('Even link:');q:=pev;
while q<>nil do
begin write(q^.c:4);q:=q^.next end
end.
A_______________________
B_______________________
C_______________________
D_______________________
E_______________________
F_______________________