|
[计算机信息管理专业]
[本试题分为两部分,第一部分为选择题,1页至2页,第二部分为非选择题,3页至14页,共14页;选择题10分,非选择题90分,满分100分,考试时间150分钟。]
第一部分 选择题
一、单项选择题(本大题共10小题,每小题1分,共10分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题干的括号内。
1、下面( )是标准数据类型。
A、实型、整型、字符型和布尔型
B、子界型、枚举型、数组和指针型
C、数组型、记录型、文件型和指针型
D、实型、字符型、布尔型和数组
2、表达式(16 div 2)/2的值是( )
A、16
B、4
C、4.0
D、16.0
连续执行下列三条语句后,x的值是( )readln;readln;readln(x)
A、31
B、45
C、28
D、10
4、设ch、out都为字符型变量,ch:=’D’;执行语句:if(ch>=’A’)or(ch<=’Z’)
then out:=chr(ord(ch)+ord(‘a’)-ord(‘A’)
out的值是( )。(其中A,a,D,d的ASCⅡ码分别为:65,97,68,100)
A、’D’
B、’d’
C、’A’
D、’a’
5、下面各程序段中,( )是计算1到100之间所有奇数之和。
A.sum:=0;
for N:=1 to 50
do sum:=sum+(2*N+1);
B.sum:=0;
for N:=1 to 50
do sum:=sum+(2*N-1);
C.sum:=0;
for N:=1 to 50
do sum:=sum+N+1;
D.sum:=0
for N:=1 to 50
do sum:=sum+N-1
6、过程与函数中的形式参数种类有( )
A、整型、实型,字符型,布尔型四种参数
B、标准型,自定义型,构造型,指针型四种参数
C、值参型,变量参数型,过程参数型和函数参数型四种
D、无参型,变量参数型,过程参数型和函数参数型四种
7、设定义和说明如下:
TYPE M=1..100;
N=101..150
K=0..250
VER X:M;
Y:N;
Z:K;
I:INTEGER
下列( )语句是不正确的。
A.I:=X+Y;
B.Z:=X+Y;
C.I:=X+Y+Z
D.X:=Y+Z;
8、二维数组定义中,使用“ARRAY[下标类型1,下标类型2]OF元素类型”,其中下标类型1和下标类型2分别说明了( )
A、数组元素的顺序和个数
B、数组的行和列
C、数组的列和行
D、数组的维数和元素个数
9、若变量A 的类型为T,则在程序中( )
A、可以通过NEW(A),得到指向A且类型为T的指针
B、可以有多个类型为T的指针变量指向A
C、只能有一个类型为T的指针变量指向A
D、可以通过NEW(A),得到指向T类型变量的指针A
10、使用FILE定义的文件,其基类型可以是( )
A、除了文件类型之外的任何类型
B、任何类型
C、除了指针类型之外的任何类型
D、文件类型
第二部分 非选择题
二、填空题(本大题共15小题,每小题1分,共15分)
11、在求解复杂问题应遵循由粗到细,由抽象到具体的思想方法和工作过程,一直具体到能被计算机理解为止,这种设计方法称为__________________。
12、在PASCAL中,构造类型包括四种数据类型:集合数据类型,________________记录类型和文件类型。
13、表达式odd(8 mod 3)的值为________________。
14、表达式true < false的值为________________。 15、设有以下说明:
var j,x,y,i:integer;
当输入数据为:
8 3 4
时,下面程序段的输出是________________。
readln(i,x,y);j:=10;
case i mod 5 of
1: j:=x+y
2: j:=x-y
3: j:=x*y
4: j:=x div y
end;
writeln(j);
16、设m,n为整型变量,则下列条件(m<1)OR(m>10)OR(n<1)OR(n>10)用集合表示_________________________________。
17、FOR循环语句中的循环控制变量数据类型必须是__________________________。
18、设有以下说明:
var cl,c2:char;
x:integer
则下面程序段的输出是________________。
x:=200;c1:=’a’;c2:=’f’
repeat
x:=x+2
c1:=succ(c1)
until c1=c2;
writeln(x);
19、根据形式参数的种类,下面过程说明中的形式参数y称为______________参数。
procedure s1(var x1:integer;y:boolean);
• • •
20、自己调用自己的函数称为________________函数。
21、在枚举类型定义中的枚举元素只能是________________。
22、设有以下说明:
var m:-5..5:
则变量m至多可取________________个不同的值。
23、设有以下说明:
type scr=(x,y,z)
index=x..z;
var a:array[index,index]of real;
则数组a的元素个数为________________个。
24、对任何文件,在同一时期只有当前一个元素被直接处理,该元素存放于____中。
25、若要描述指针r不指向任何数据,可执行语句________________。
三、改错题(本大题共5小题,每小题4分,共20分)指出所给程序中的错误,在错误位置处打上横线标记,并注明其错误原因。
27、程序功能:已知三角形三边长a、b、c的值,判别其是否为等腰三角形。是则输出如下信息:
It is isosceles triangle!
程序:PROGRAM IsosTri(input,output);
VAR a,b,c,s:INTEGER;
BEGIN
readln(a,b,c); s:=round((a+b+c)/2;
IF s<=a OR s<=b OR
s<=c
THEN writeln(‘Nontriangle!’);
(*表示不能构成三角形*)
IF a=b OR b=c OR a=c THEN
writeln(‘It
is isosceles triangle!’)
END.
28、程序功能:计算X取值从0.0开始,每次增加0.1,到1.0为止的SIN(X)之和。即求:
S=sin(0.0)+sin(0.1)+……+sin(1.0)
并每步输出当前的和及SIN(X)的值。
程序:PROGRAM sumsin(input,output);
VAR sx,sum,x:REAL;
BEGN
FOR x:=0.0 TO 1.0 DO
BEGIN
sum:=0.0
sx:=sin(x);writeln(sx:6:2);
sum:=sum+sx;writeln(sum:8:2);
END
END.
29、程序功能:用自定义的函数计算一个任意整数的随机数,然后再将计算出的随机数与测试数据test运算后输出。整数r的随机数x可用如下公式计算:x=((r*168+2159)MOD32767)/32767
(设机器最大正整数为32767)
程序:PROGRAM calc(input,output)
CONST test=200;
VAR a,b:INTEGER;
FUNCTION rnd(VAR r:INTEGER):REAL;
BEGIN
r:=(r*168+2159)MOD MaxInt;
rnd:=r/MaxInt
END;
BEGIN
a:=rnd(40)*test+test;
b:=rnd(60)*test-test;
writeln(‘a=’a,’b=’,b);
END
30、程序功能:找出n个大于O的实型数据中的最大者及其序号。
程序:PROGRAM findmaximum(input,output);
VAR n,i,idx,max:INTEGER
num:ARRAY[1..n]OF REAL;
BEGIN
max:=O;readln(n)
FOR i:=1 TO n DO
BEGIN
read(num[i]);
IF num[i]>max THEN
BEGIN max:=num[i];idx:=i END
END;
writeln(‘MAXIMUM
IS’,max:4);
writeln(‘THE
INDEX IS’,idx:4)
END.
33、program p34(output);
const n=5;
var i:integer;
c:char;
procedure p(n:integer;c:char);
var i:integer;
begin
for i:=1 to n do
write(c);
writeln
end;
begin
for i:=1 to n do
begin
c:=chr(ord(‘a’)+i-1);
p(i,c)
end
end.
执行该程序,其输出为:_____________________________________
34、阅读下列程序
PROGRAM lstexample(input,output);
TYPE link=^litem;
litem=RECORD
vals:integer;
poit:link
END;
VAR lhead,p0,p1:link;
PROCEDURE lstbuilt(head:link);
VAR next:link;
BEGIN
new(head);lhead:=head;
next:=head:read(next^.vals);
WHILE next^.vals<>-1 DO
BEGIN new(next^.poit);
next:=next^.poit;
read(next^.vals)
END;
next^.poit:=nil
END;
BEGIN
lhead:=nil; lstbuilt(lhead);
p0:=lhead;
WHILE NOT(p0=nil)and(p0^.vals<>-1)DO
BEGIN
p1:=p0^.poit;
IF IF (p1^.vals p0 ^ . vals ) THEN
write(p0^.vals:4);
p0:=p1
END
END.
执行该程序,当输入值的顺序为6,8,4,6,4,2,-1时
①画出过程lstbuilt产生的单链表结构
②写出程序打印结果
35、program p37(output);
const n=3
type t=1..n;
var i,j,k,s:integer;
a,b,c:array[t,t]of integer;
begin
for i:=1 to n do
for j:=1 to n do
a[i,j]:=(i div j)*(j div i);
for i:=1 to do
for j:=1 to do
b[i,j]:=10*i+j;
for i:=1 to n do
for j:=1 to n do
begin
s:=0;
for k:=1 to n do
s:=s+a[i,k]*b[k,j];
c[i,j]:=s*2
end;
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:3);
writeln
end;
for i:=1 to n do
begin
for j:=1 to n do write(b[i,j]:3;)
writeln
end;
for i:=1 to n do
begin
for j:=1 to n do write(c[i,j]:3);
writeln
end
end.
执行该程序,其输出为:______________________________________________
五、编程题(本大题共5小题,第1、2题各4分,第3题10分,第4、5题各6分,共30分)阅读给出的程序,在横线是填入适当的语句、表达式或其它成分,以完善程序。
36、读入一列整数,此数列以一个负数结束,分别输出该数列奇数之和与偶数之和。
program prog44(input,output);
var num,oddsum,evensum:integer;
begin
oddsum:0;evensum:=0;
①____________;
while②____________ do
begin
if③____________
then oddsum:=oddsum+num
else evensum:=evensum+num;
④____________
end;
writeln(‘The
oddsum of sequence is:’,oddsum:4);
writlen(‘The
evensum of sequence is:’,evensum:4)
end.
37、找出在1000以内使p,p+10,p+22都是素数的p的值,所谓素数:只能被1和它本身整除的数,称为素数,例如:2,3,5,7…。
program prog52(output);
var n,p,i:integer;
function isprime(i:integer):boolean:{求素数函数}
var j:integer;
b:boolean;
begin
b:= ①____________ ;
for j:=round(sqrt(i))downto 3 do
if②____________ then b:=false:
③____________
end;
begin
writeln;
for i:=1 to 499 do
begin
p:=2*i+1;
if④____________
then write(‘p=’,p:6)
end
end.
38、本题给出的是将数组a元素a[0],a[1],a[2]…,a[n]的值从小到大排序的程序。
算法 :第i项与其余项进行比较,统计比它小的个数,以决定该项的最后位置,引进辅助数组c,如果
比ai小的元素有ti个,则放在c的c[ti+1],即c[ti+1]:=a[i]。
program sort(input,output);
const n=100;
type tindex=1..n;
at=array[tindex]of integer;
var i,j,t:integer;
a,c:at
begin
for i:=1 to n do read(a[i]);
for i:=①____________ do
begin
t:=1;
for j:=1②____________ do
if i<>j
then begin
if③____________ then t:=t+1
else if④____________ then t:=t+1
end;
c[t]=a[i]
end;
for i:=1 to n do
begin
⑤____________;
if i mod 10=0 then writeln
end
end.
39、设某公司人员情况文件f1的基类型是记录类型,其成分包括姓名(name)、性别(sex)、年
龄(age,18岁到65岁),本程序功能是删除f中所有达到退休年龄(男60,妇55岁)职员信息(提示:标准PASCAL中,使用顺序文件,为删除一文件中的部分信息,可将不符合删除条件的信息取出,再写回原文件)
PROGRAM modify(f,q);
TYPE
workers=RECORD
name:ARRAY[1..10]OF char;
sex:ARRAY[1..6]OF char;
age:18..65
END;
workefile=FILE OF workers;
VAR
f,g:workefile; x:workers;
BEGIN
assign(f,’f1’);assign(g,’g1’);
reset(f); rewrite(g);
WHILE NOT①____________ DO
BEGIN
read(②____________ );
WITH③____________
IF((age<60)AND(sex=’male’))
OR((age<55)AND(sex=’female’))
THEN write(g,x)
END;
close(f);close(g);
assign(g,’g1’);
assign(f,’f1’);
reset(g);
rewrite(f);
WHILE NOT eof(g) DO
BEGIN read(g,x);write(④____________)END;
close(g);close(f)
END

推荐给我的朋友
|