泉州五中信息技术兴趣小组PASCAL语言测试题.docx

上传人:b****9 文档编号:26185583 上传时间:2023-06-17 格式:DOCX 页数:24 大小:24.85KB
下载 相关 举报
泉州五中信息技术兴趣小组PASCAL语言测试题.docx_第1页
第1页 / 共24页
泉州五中信息技术兴趣小组PASCAL语言测试题.docx_第2页
第2页 / 共24页
泉州五中信息技术兴趣小组PASCAL语言测试题.docx_第3页
第3页 / 共24页
泉州五中信息技术兴趣小组PASCAL语言测试题.docx_第4页
第4页 / 共24页
泉州五中信息技术兴趣小组PASCAL语言测试题.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

泉州五中信息技术兴趣小组PASCAL语言测试题.docx

《泉州五中信息技术兴趣小组PASCAL语言测试题.docx》由会员分享,可在线阅读,更多相关《泉州五中信息技术兴趣小组PASCAL语言测试题.docx(24页珍藏版)》请在冰豆网上搜索。

泉州五中信息技术兴趣小组PASCAL语言测试题.docx

泉州五中信息技术兴趣小组PASCAL语言测试题

2008年泉州五中信息技术兴趣小组PASCAL语言测试题

班级座号姓名

一.判断题(每小题1分,共10分)

()1.……

a:

=3;b:

=5;ifa=3andb=5thenwrite(’true’);

……

()2.varn:

integer

……

casenof

1,3,5:

writeln(’odders’);

2,4,6:

writeln(’evener’);

3,4,7:

writeln(’other’)

end;

……

()3.varb:

boolean;i,n:

integer;

……

b:

=true;

fori:

=2ton/2do

ifnmodi=0thenb:

=false;

……

()4.procedurepa(n:

integer):

integer;

()5.vara,b:

record

x,y:

real

end;

……

ifa=bthenwriteln(’allvalueisequal’);

……

()6.constc=100or50;

()7.vari,j,k=integer;ch1:

char;ch1:

boolean;

()8.functionpa(n:

integer);

()9.consta=20;a,b=20;

()10.varflag:

boolean;

……

read(flag);

……

二.不定项选择题(每小题1分,共15分)

()1.假设变量b、c的声明情况如下,选出下面正确的赋值

varc:

char;b:

boolean;

a.c:

=’1998’;b.c:

=1;c.b:

=’true’;d.c:

=’1’;

()2.选出下面正确的表达式。

a.3<>5and5-3=2b.‘5’+’3’

c.chr(ord(‘b’))d.ord(‘2’)/2mod2

()3.已知有数组说明:

 var  a:

array[1..10]ofinteger;

 a中的值如下表所示:

a[1]

a[2]

a[3]

a[4]

a[5]

a[6]

a[7]

a[8]

a[9]

a[10]

1

12

4

3

7

7

14

10

4

2

执行语句writeln(a[a[7]diva[3]])后的输出是

a.4b.7 c.1d.12

()4.假设变量p、q、r、s的声明情况如下所述,且p、q、r、s都已赋值,选出下面正确的表达式。

varp,q:

integer;r,s:

real;

a.p:

=qb.p<>rc.p:

=rd.q<>s

()5.假设变量a和s按如下情况声明,且a和s已赋值,选出正确的表达式。

vars:

setof1..5;a:

setof‘a’..’e’;

a.a<>sb.a∩s=[]c.a<>[]d.not‘a’ins

()6.设有过程首部:

procedure  f(var  x:

integer;y:

real);

若a,b:

integer;c:

real;  则合法的调用语句是

a.f(2,3) b.f(2,3.0)  c.f(a+b,c)d.f(b,2)

()7.设有一函数定义如下:

functionhigh(x,y:

integer):

integer;

    begin

        high:

=x-(x+y)div(x-y)

    end;

执行语句t:

=high(4,high(6,high(4,1)))后,变量t的值是

a.3 b.-3c.1d.0

()8.分析下面的程序,判断a,b,c,d对应的4种语句中,正确的是

program  pro(input,output);

type  day=(mon,tue,wed,thu,fri);

 var 

a.h:

(x1,x2,x3,wed);

 w1,busy:

day;

begin

b.busy:

=mon;

c.readln(w1);

d.writeln(w1)

          end.

()9.设a,  b,  c,d均为整型变量,有下面的程序段:

a:

=10;b:

=0;

read(a,b);

readln(c);

readln(d);

若从键盘输入:

654

321(注:

表示回车)

则a、b、c、d中的数是。

a.7  0  6  3b.7  6  5  4 c.7  6  3  2 d.7  6  5  3

()10.已知有说明varx:

real;下列程序段中错误的是。

casex<=2.0of

0:

x:

=0;

1:

x:

=1;

end;

a.情况表达式中有常数b.情况常量与情况表达式类型不一致

c.情况表达式为关系d.赋值语句两边类型不一致

()11.有下列程序

program  print(input,output);

var  ch1,ch2,ch3:

char;

 begin

readln(ch1);    readln(ch2,ch2);      readln(ch3,ch3,ch3);

writeln(ch1,ch2,ch3)

end.

若运行时输入

red

yellow

blue

则正确的输出是

a.rybb.reuc.rdld.blu

()12.下列程序段中,循环体执行的次数为

i:

=1;

repeat

 n:

=i*i; i:

=i+1

until  n>i;

a.1b.2c.3d.4

()13.下图为某链表的一部分,下列程序段可以实现释放q所指向的结点是

a.p^.next:

=r;dispose(q);b.p^:

=r;dispose(q);

c.p^.next:

=q^.next;dispose(q);d.p^:

=q^.next;dispose(q);

()14.执行后a的值与其他三个程序段不相同的是

a.a:

=0;                                        b.a:

=0;i:

=1;

i:

=1;                                                    whilei<=5do

repeat                                             begin

      i:

=i+1;                                                  a:

=a+1;

      a:

=a+1                                                  i:

=i+1

untili>6;                                          end;

c.a:

=0;                                        d.a:

=0;i:

=1;

fori:

=1to5do                           repeat

a:

=a+1;                                        i:

=i+1;

                                                                    a:

=a+1

                                                              untili>5;

()15.设有说明:

typearr=array[1..10]ofinteger;

ptr=^arr;

varp:

ptr;

若已执行了new(p),下面合法的赋值语句是

a.p^[2]:

=10;b.p[2]^:

=10;c.p^:

=10;d.p[2]:

=10;

三、填空题(每空1分,共15分)

1.vara:

array[1..10,’a’..’e’]ofchar;a中有_________个元素,每个元素是_________类型。

2.vartool:

(bike,car,motor,bus);pred(car)=__________;succ(car)=______________。

3.varp,q:

^integer;

……

new(p);q:

=nil;

表达式p<>q的值是_____________,表达式p=q的值是_____________。

4.input是freepascal默认的输入设备,默认指向键盘,现要更改input的指向,欲让它指向文本文件pas.in,则需用语句来实现;打开被input关联的实际文件pas.in,准备读取pas.in文件的内容需用语句实现。

5.随机产生150-200之间的整数的表达式是。

6.如果x:

=’’,y:

=copy(x,4,5),那么y的结果为;length(x)的结果是。

7.设有集合a=[1,2,3,4],b=[1,3,5,7],c=[3],那么(a*b)=c的值是,c*a+b的值是。

8.设整型变量i和j的值分别为2和3,布尔变量b的值为true。

表达式b=(j—i>2) AND NOT (i>j) 0R (i<>3= AND b的值

9.写出将字符6转换成数字6的Pascal表达式

四、简答题(2分+2分+3分+3分,共10分。

1.写一个表达式,若x满足10-7<|x|<107,则表达式取值true,否则,取值false。

(3分)

2.写一个程序片段,计算1至100中能被3整除的所有整数之和。

(2分)

3.设有一函数子程序定义如下:

function  f(x,y,z:

integer):

integer;

begin

f:

=z-ydivx;

end;

执行语句cal:

=f(f(2,4,6),6,8)后,变量cal的值。

(2分)

4.vara:

array[1..4,1..4]ofreal;写一程序片段,用赋值语句(即不用read过程),将下面的矩阵赋给a中元素。

(3分)

1.15.29.313.4

2.16.210.314.4

3.17.211.315.4

4.18.212.316.4

 

五.阅读程序,写出输出结果(每小题4分,共20分)

1.(4分)

programexam_51;

vari,j:

integer;

a,b:

array[1..5]ofinteger;

begin

fori:

=1to5do

begin

a[i]:

=2*i-1;

b[i]:

=i

end;

fori:

=1to5do

forj:

=1to5do

ifa[i]=b[j]thenwrite(a[i]:

4)

end.

输出:

2.(4分)

programexam_52;

varn,i,tem,t:

longint;

s:

string;

begin

readln(n);

s:

='1';

repeat

i:

=length(s);

whiles[i]='1'do

begin

s[i]:

='0';dec(i);

end;

ifi>0thens[i]:

='1'

elses:

='1'+s;

val(s,t,tem);

untiltmodn=0;

writeln(n,'*',tdivn,'=',s);

end.

输入:

6

输出:

3.(4分)

programexam_53;

vara,b,c:

integer;

procedurep(varx:

integer;y:

integer);

vartemp:

integer;

begin

temp:

=xdivy+c;x:

=temp;

writeln(x:

4,y:

4,temp:

4)

end;

begin

a:

=9;b:

=2;c:

=3;p(a,b);

writeln(a:

4,b:

4,c:

4)

end.

输出:

4.(4分)

programexam_54;

typepointer=^node;

node=record

n:

integer;

next:

pointer

end;

vari:

integer;

head,p,q:

pointer;

proceduremake(varhead:

pointer;key:

integer);

varp,q,r:

pointer;

begin

p:

=head;

while(key>=p^.n)and(p^.next<>nil)do

begin

q:

=p;p:

=p^.next

end;

new(r);r^.n:

=key;

ifkey

thenbeginr^.next:

=head;head:

=rend

elseifkey

thenbeginr^.next:

=p;q^.next:

=rend

elsebeginp^.next:

=r;r^.next:

=nilend

end;

procedurewlink(head:

pointer);

varp:

pointer;

begin

p:

=head;

whilep<>nildo

begin

write(p^.n:

4);

p:

=p^.next;

end;

end;

begin

head:

=nil;i:

=1;

whilei<=5do

begin

new(p);p^.n:

=2*i;

ifhead=nil

thenhead:

=p

elseq^.next:

=p;

q:

=p;i:

=i+1

end;

q^.next:

=nil;

wlink(head);

make(head,20);

wlink(head)

end.

输出:

5.(4分)

programexam_55;

vara,b:

array[1..32]ofinteger;

i:

integer;

proceduressort(i,j:

integer);

varm,k,x:

integer;

begin

ifj-i>1then

begin

m:

=(i+j)div2;

ssort(i,m);

ssort(m+1,j);

k:

=i;

forx:

=itomdo

begin

b[k]:

=a[x];b[k+1]:

=a[m+x-i+1];

k:

=k+2;

end;

forx:

=itojdo

a[x]:

=b[x];

end;

end;

begin

fori:

=1to16doa[i]:

=i;

ssort(1,16);

fori:

=1to16dowrite(a[i]:

3);

end.

输出:

六、程序填空(每空2分,共44分)

1.(12分),降序组合。

给定两个自然数n,r(n>r),输出从数1到n中按降序顺序取r个自然数的所有组合。

例如,n=5,r=3时,输出的结果是:

543

542

541

532

531

521

432

431

421

321

程序中用a1,a2,……ar表示一个降序排列的r个数的组合,要求a1>=r。

为了能够穷举出全部降序排列的r个数的组合,按递减顺序调整前一个组合的部分元素生成下一个组合,调整时,当a1=1就要回朔。

上例由回朔生成下一个组合的情况,有541→532,531→521,521→432(二次回朔),431→421,421→321(二次回朔)。

上述过程,当a1=r-1时结束。

[程序]

programexam_61;

varn,r,i,j:

integer;

a:

array[1..20]ofinteger;

begin

write('n,r=');

repeat

readln(n,r);

untiln>r;

i:

=1;

a[1]:

=n;

writeln('result:

');

repeat

ifi<>r

thenif___①_______

thenbegin

a[i+1]:

=___②_________;i:

=i+1;

end

elsebegin

_____③______;______④________;

end

elsebegin

forj:

=1tordowrite(a[j]:

3);

writeln;

ifa[r]=1

thenbegin

i:

=i-1;a[i]:

=a[i]-1;

end

else______⑤__________;

end

until_______⑥__________;

end.

2.(14分)

以下程序是将一组整数按从小到大的顺序排列。

排序的方法是将长度为n的数a分为两个长度分别为(ndiv2)与(n-ndiv2)的子数组a1,a2。

然后递归调用过程,将a1,a2分别排序,最后将a1,a2归并成数组a。

例如a=(3,1,2,4),那么a1=(3,1),a2=(2,4)。

调用排序过程将a1,a2排序,得到a1=(1,3),a2=(2,4)然后进行合并排序。

从键盘输入数的长度n以及n个整数,存在数组a中,调用子过程sort进行排序,最后输出排序结果。

programexam_62;

constmaxn=100;

typearr=array[1..maxn]ofinteger;

varn,i:

integer;a:

arr;

proceduresort(n:

integer;vara:

arr);

vari,p1,p2,n1,n2:

integer;

a1,a2:

arr;

begin

ifn=1thenexit;

fillchar(a1,sizeof(a1),0);

fillchar(a2,sizeof(a2),0);

n1:

=0;

n2:

=0;

n1:

=ndiv2;

n2:

=①;

fori:

=1ton1doa1[i]:

=a[i];

fori:

=1ton2doa2[i]:

=②;

③;

sort(n2,a2);

p1:

=1;p2:

=1;

n:

=0;

while(p1<=n1)and④do

begin

n:

=n+1;

if⑤

thenbegina[n]:

=a1[p1];inc(p1);end

elsebegin⑥;inc(p2);end;

end;

ifp1<=n1

thenfori:

=⑦ton1dobeginn:

=n+1;a[n]:

=a1[i];end

elsefori:

=p2ton2dobeginn:

=n+1;a[n]:

=a2[i];end;

end;

begin

write('n=');

readln(n);

fori:

=1tondoread(a[i]);

readln;

sort(n,a);

fori:

=1tondowrite(a[i],'');

writeln;

end.

3.(8分)

有(1<=n<=100)个同学种m(1<=n<=m<=100)种小树苗,例如:

4个同学每小时种4种树苗的数量估算如下表所示,编程输出每人种1种苗所用的总时间最少的安排方案和所花费的时间。

学生苗树

a

b

c

d

1

5

2

4

5

2

4

3

5

3

3

5

2

4

2

4

3

2

3

3

programexam_63;

constmaxn=100;maxm=100;

vara:

array[1..maxn,1..maxm]ofinteger;

m,n:

integer;

i,j,t:

integer;

procedurework(k,t1:

integer);

vari:

integer;

begin

if①then

begin

ift1

=t1;

exit;

end;

fori:

=②to③do

work(k+1,④);

end;

begin

readln(n,m);

fori:

=1tondo

begin

forj:

=1tomdoread(a[i,j]);

readln;

end;

t:

=maxint;

work(1,0);

writeln(t);

end.

4.(10分)

程序的任务是用0..9中的数字填入如下乘法运算的*处,数字可重复使用,且所用的数字至少有一个是素数,要求输出满足下列算式的方案数。

输入:

n,10≥n≥1

输入:

n个0..9的不同数字t

输出:

方案数

***

╳**

———————

***

***

———————

****

programexam_64;

constp:

setof0..9=[2,3,5,7];

vars:

setof0..9;

n:

integer;

ans:

longint;

procedureinit;

vari:

integer;

t:

byte;

begin

readln(n);

s:

=[];

fori:

=1tondo

begin

read(t);

s:

=s+[t];

end;

end;

functionok(x,l:

integer):

boolean;{此函数判断x是否符合条件}

vart:

byte;

begin

ok:

=false;

if①<>lthenexit;

whilex<>0do

begin

t:

=xmod10;

ifnot(tins

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1