1.下面的( )是pascal中有效的用户自定义标识符
A. Program
B. prog#2
C. 2ndone
D. prog2
2.在ASCII码字符集中,字符'A'的序数是65,字符'B'的序数是66。变量A='B',则ord('A')和ord(A)的值分别是(
)
A. 65和65
B. 65和B
C. 65和66
D. A和66
3.假设要通过read语句分别给变量a和b赋值5和7,数据键入的顺序是:57。则(
)的格式是正确的(表示空格)
A. read(ab)
B. read(b,a)
C. read(ab)
D. read(a,b)
4.下面程序段当x的值为9.95时,下面语句输出的内容是(
)
if x>7.5 then
begin
x:=90.0;
writeln('x is',x:4:2)
end
else x:=25.0;
writeln('x is',x:3:1);
A. x is 90.00
B. x is 90.00 x is 90.0
C. x is 90.00 x is 25.0
D. x is 25.0
5.下面各程序段中,( )能在一行中输出五个'*'
A.I:=0;
repeat
write('*');
I:=I+1
until I=5
B.I:=0;
repleat
write('*')
until I=5
C.I:=0;
repeat
write('*');
I:=I-1
until I=5
D.I:=0;
repeat
writeln('*')
I:=I+2
until I=5
6.函数的结果类型可以是( )
A. 数组类型和简单类型
B. 记录类型和简单类型
C. 文件类型和简单类型
D. 指针类型和简单类型
7.设定义和说明如下:
TYPE COLORTYPE=(READ,BLUE,YELLOW,WHITE,BLACK);
PERSON=(MAN,WOMAN);
VAR COLOR:COLORTYPE;
STUDENT:PERSON;
下列( )语句是不正确的
A. FOR COLOR:=RED TO BLACK DO write('MAN');
B. WHILE COLOR=BLACK DO write('MAN');
C. IF COLOR<>YELLOW THEN WRITE('YES');
D. IF WOMAN>RED THEN WRITE('NO');
8.若有定义:TYPE AR=ARRAY[-2..2,-1..2]OF REAL;它表示AR类型是具有(
)的二维数组
A. 4行5列
B. 4行3列
C. 3行4列
D. 5行4列
9.动态变量的撤消必须使用标准过程( )
A. NOT NEW(P)
B. DELETE(P)
C. DISPOSE(P)
D. ERASE(P)
10.记录变量进行赋值运算时,要求这两个记录变量类型(
)
A. 相同
B. 相容
C. 一致
D. 赋值相容
二、填空题(每空1分,共15分)
1.程序的功能模块设计是指程序模块应该按照程序执行的功能来划分。这种程序模块应具有简单性、___________和完整性。
2.在PASCAL中,四种标准类型是:整型,实型,___________和布尔类型。
3.表达式odd(succ (pred(5)))的值为___________。
4.表达式5 * 2 div 4 * 4的值为___________。
5.下面程序段的输出结果是___________。
if succ(6)=pred(4) then writeln ('red')
else if pred(7)=succ(5) then writeln('yellow')
else writeln('blue');
6.设ch为字符型变量,则条件(ch<>'x')and(ch<>'y')and(ch<>'z')用集合表示___________。
7.标准PASCAL规定,FOR语句执行完毕后,其循环控制变量的值___________。
8.设有以下说明:
var a,b,c:integer;
则下面程序段的输出是___________。
a:=5;b:=8;c:=1;
while b-a>c do
begin
a:=b-a;b:=b-a
end;
writeln(b);
9.下面程序的输出结果是___________。
program pp(output);
const m=10;n=5;
var x,y:integer;
procedure p1;
var y:integer;
begin
y:=m+n;x:=m
end;
y:=m*n;
pl;
writeln(y)
end.
10.形式参数有___________,变量参数,过程参数和函数参数四种。
11.子界类型属于有序类型,上,下界属于同一有序类型,且要求上界___________下界。
12.设有以下说明:
type weekday=(sun,mon,tue,wed,thu,fri,sat);
var day;weekday;
以下赋值语句:
day:=succ(wed);
使用函数pred()来实现与上述语句等价的赋值语句是:______________________。
13.在各种类型的数组变量中,只有___________数组变量可以作为输出语句的参数。
14.使用标准函数___________,可以判断是否读到文本文件一行的行尾字符。
15.设var p:^T;则p是指针变量,而___________是类型为T的动态变量。
三、改错题(指出所给程序中的错误,在错误位置处打上横线标记,并注明其错误原因。每题4分,共20分)
1.程序功能,求绝对值小于100的任意两个非零整型数据的积和商。
程序:PROGRAM calcA(input,output);
VAR a,b:INTEGER;
multi,div:REAL;
BEGIN
readln(a,b);
multi=a*b; div=a/b;
writeln(a:4,b:4,multi:8:2,div:8:2)
END.
2.程序功能,找出任意三个整型数据x、y、z中的最小者。
程序:PROGRAM findmin(input,output);
VAR x,y,z,min:INTEGER;
BEGIN
readln(x,y,z);
IF x
IF y
IF z
writeln(x:4,y:4,z:4);
writeln('MINIMUM IS',min:4)
END.
3.程序功能:使用尝试法检验任一自然数是否为素数。
检验方法:任一自然数n,如果从2开始到根号n为止的所有自然数都不能整除(除尽)n,则n即为素数(也称质数)。
程序:PROGRAM prime2(input,output);
VAR i,n: INTEGER;
isprime: BOOLEAN;
BEGIN
readln(n);
FOR i:=2 TO trunc(sqrt(n)) DO
IF nMOD i=0
THEN isprime:=FALSE
ENDDO;
IF isprime
THEN writeln(n,'is a prime!')
ELSE writeln(n,'is not a prime!')
END.
4.程序功能:用自定义的过程计算一个任意整数的随机数,然后再将计算出的随机数与测试数据test运算后输出,整数r的随机数x可用如下公式计算:
x=((r*168+2159) MDO 32767)/32767
(设机器正整数为32767)
程序:PROGRAM calc(input,output);
CONST test=200.88;
VAR a,b: REAL;
PROCEDURE random(VAR r,rnd:INTEGER);
BEGIN
rnd:=(r*168+2159) MOD MaxInt
md:=trunc(rnd/MaxInt)
END;
BEGIN
random(400+test,a);
random(400-test,b);
writeln('a=',a,'b=',b);
END.
5.程序功能:将数组A中的数据复制到数组B中。
程序:PROGRAM copyarray2(input,output);
VAR a,b: ARRAY[10..1] OF INTEGER;
BEGIN
readln(a);
b:=a;
write(b);
END.
四、阅读程序(阅读给出的程序,将其运行结果写在横线上。第1、2题各4分,第3、4题各5分,第5题7分,共25分)
(以下↙表示回车换行符)
1. program p5(input,output);
var ch:char;
n:integer;
begin
n:=0;
read(ch);
repeat
n:=n*2+ord(ch)-ord('0');
read(ch)
until ch='#';
write(n)
end.
执行该程序,当输入1011#↙时,其输出为:______________________
2.program p6(output)
var n,k,i,s:integer;
begin
for n:=9 to 10 do
begin
s:=0;
k:=1;
for i:=1 to n do
begin
s:=s+i*k;
k:=-k
end;
writeln(s)
end
end.
一.单项选择题(每小题1分,共10分)
1.D
2.C
3.D
4.B
5.A
6.D
7.D
8.D
9.C
10.A
二.填空题(每空1分,共15分)
1.独立性
2.字符型
3.TRUE(不区分大小写字母)
4.8
5.yellow(大写字母不给分)
6.not(ch in ['x','y','z']或not (ch in [‘x.'..'z'])
7.已无定义(或无确定的值,或等价的文字说明)
8.3
9.50
10.值参数
11.必须大于(或大于等于)
12.day:=pred(fri)(不区分大小写字母)
13.字符(或紧凑字符)
14.eoln或eoln()(不区分大小写字母)
15.p↑(不区分大小写字母)
三.改错题(每题4分,共20分)
注:①错误原因说明除这里给出的外,可为其他等同含义的描述。
②错误位置指明除这里标明的外,可视具体程序灵活考虑。
评卷时要根据以上两面三刀点恰当评分。
1.错误位置:PROGRAM calcA(input,output);
VAR a,b: INTEGER;
multi,div: REAL;
(1)
BEGIN
readln(a,b);
multi=a*b; div=a/b;
writeln(a:4,b:4,multi:8:2,div:8:2)
END.
错误说明:(1)div为(系统)保留字,不能用作变量名。
(2)赋值语句的赋值号应为“:=”,不是“=”。
评分标准:指出错误位置每处及错误原因说明每个各1分。
2.错误位置:PROGRAM findmin (input,output);
VAR x,y,z,min: INTEGER;
BEGIN
readln(x,y,z);
(1) (2) If x(1) (2) If y(1) (2) If z writeln(x:4,y:4,z:4);
writeln('MINIMUM IS',min:4)
END.
错误说明:(1)各个关系式中的小于号(<)应该为小于等于号(<=)否则,对于相等的特殊情形将找不出最小数。
(2)THENIF应改为 THEN IF。
评分标准:指出错误位置每种及错误原因说明每个各1分。
*其他形式的正确程序段参考:
形式一 IF x<=y THEN IF x<=z THEN min:=x;
IF y<=x THEN IF y<=z THEN min:=y;
IF z<=x THEN IF z<=y THEN min:=z;
形式二 IF x THEN IFx<=z
THEN min:=x
ELSE min:=z
ELSE IF y<=z
THEN min:=y
ELSE min:=z;
3.错误位置:PROGRAM prime2(input,output);
VAR i,n: INTEGER;
isprime:BOOLEAN;
BEGIN
(1)→readln(n);
FOR i:=2TO trune(squr(n))DO
IF n MOD i=0
THEN isprime:=FALSE
(2)→ENDDO;
IF isprime
THEN writeln(n,'is a prime!')
ELSE writeln(n,'is not a prime!')
END.
错误说明:(1)循环语句之前缺少对变量isprime赋初值的语句:isprime:=TRUE;
(2)ENDDO应划去(为非法、多余成分)。
评分标准:指出错误位置每种及错误原因说明每个各1分。
4.错误位置: PROGRAM calc(input,output);
CONST test=200.88;
VAR a,b: REAL;
PROCEDURE random(VAR r,rnd:INTEGER);
BEGIN
random(400+test,a);(1)(2)
random(400-test,b);(1)(2)
writeln(‘a=',a,'b=',b);
END
错误说明:(1)赋值不相容(形参为整型,实参为实型)。
(2)形参为变量参数时实参不能为表达式。
评分标准:指出错误位置每种及错误原因说明每个各1分。
5.错误位置:PROGRAM copyarray2(input,output);
VAR a,b: ARRAY[10..1]OF INTEGER;
(1)
BEGIN
Readln(a); (2)
b:=a;
write(b); (2)
END.
错误说明;(1)数组下标的上下界必须符合下界<上界。
(2)数值型数组变量不能作为输入、输出语句参数。或说:“数值型数组不能直接整体输入、输出。”
评分标准;错误(1)指出位置及说明各1分。
错误(2)指出位置每处0.5分,说明1分。
四.阅读程序(第1、2、题各4分,第3、4题各5分,第5题7分,共25分)
1.11
2.5(2分) -5(2分)
3.5 2 7
2.7 (每个数字各1分)
1.head→(4)()→(2)()→(4)()→(6)()→(8)(nil)
(各结点值的顺序及值正确,每一结点1分,共5分)
2.3 5 7 11 13 17
每个数字各1分
五.编程题(第1、2、题各4分,第3题10分,第4、5题各6分,共30分)
1.①100 to 999(1分)
②i div 100;(1分)
③(a=b)and (a< >c)or(a=c)and(a< >b)or(b=c)and(a< >b)(2分)
2. ①n>0(或n< >0)(1分)
②n:=n div 10 (或 n:=trunc(n/10));(1分)
③inverse:=t(1分)
④inverse(n)(1分)
3. ①w:=b[i](1分)
②1 to 5(1分)
③a[j]:=w mod 10(或a[b-j]:=w mod 10)(1分)
④s:=s+a[j](1分)
⑤writeln(‘',s)(1分)
4. ①file of integer;(1分)
②eof(f1)\ 可交换次序(1分)
③eof(f2)/ (1分)
④num1< >num2(1分)
⑤eof(f1)\可交换次序(1分)
⑥eof(f2)/(1分)
5.①p∧.next< >nil(1分)
②j+1(1分)
③find:=p(1分)