复赛试题(二)pascal语言
说明:请将答案填在答题卡上,只交答题卡,
一、选择题:(每题1分,共10分)
1、计算机内部,对数据进行加工处理都是以( )形式进行的。
A、十进制数 B、二进制数 C、十六进制数 D、八进制数
2、不同的计算机所用的指令也不同,这主要取决于( )。
A、所用的操作系统 B、系统的总体结构 C、所用的CPU D、所用的语言
3、下面不是程序设计语言的有( )。
A、PASCAL B、BASIC C、C++ D、DOS
4、下列五进制数中,不合法的数( )。
A、310(5) B、401(5) C、250(5) D、300(5)
5、计算机病毒破坏的是( )。
A、软盘 B、硬盘 C、打印机 D、程序和数据
6、下面几个不同进制的数中,最小的是( )
A、102(5) B、65(10) C、78(8) D、110110(2)
7、1字节在计算机中用 位二进制来表示( )
A、2位 B、8位 C、10位 D、16位
8、1个汉字在计算机中占 个字符的位置( )
A、2个 B、8个 C、10个 D、1个
9、断电后保存在下面哪个设备中的数据会丢失( )
A、硬盘 B、光盘 C、ROM D、RAM
10、下列设备中,既是输入设备,又是输出设备的是( )
A、显示器 B、打印机 C、磁盘 D、扫描仪
二、填空题(每小题5分,共15分)
1、求144的约数有多少个?(所谓144的约数,就是指能整除144的数)
2、从1到99的自然数中,不含数字3的自然数有多少个?
3、100个青年人中,会骑自行车的有83人,会游泳的有75人,两样都不会的有10人,两样都会的有多少人?
2、program f2_302;
var
i,j,n,w,s:integer;
a:array[1..10] of integer;
begin
a[1]:=4; a[2]:=2; a[3]:=5;
a[4]:=7; a[5]:=5; a[6]:=1;
a[7]:=6; a[8]:=7; a[9]:=4;
a[10]:=7;
for i:=1 to 9 do
for j:=i+1 to 10 do
if a[i]>a[j] then
begin
w:=a[i]; a[i]:=a[j];
a[j]:=w;
end;
i:=1; n:=0;
while i<=10 do
begin
n:=n+1;
s:=s+((10 div 2)+1-n)*(a[i]+a[i+1]);
i:=i+2;
end;
writeln('s=',s);
end.
1、program f2_301;
var
i,m:integer;
a,t:array[1..10] of integer;
begin
a[1]:=3; a[2]:=6; a[3]:=4;
a[4]:=10; a[5]:=7; a[6]:=3;
a[7]:=1; a[8]:=3; a[9]:=6;
a[10]:=5;
for i:=1 to 8 do
t[i]:=a[i]+a[i+1]+a[i+2];
t[9]:=a[9]++a[10]+a[1];
t[10]:=a[10]+a[1]+a[2];
m:=0;
for i:=1 to 10 do
if t[i]>m then m:=t[i];
writeln(m);
end.
三、运行结果:(每小题6分,共36分)
3、program f2_303;
var
k,i,s,bj:integer;
a:array[1..21] of integer;
begin
for i:=1 to 21 do a[i]:=1;
k:=21;
bj:=1;
while bj=1 do
begin
s:=0;
for i:=1 to 21 do
begin
s:=s+a[i];
if s=1 then
begin
s:=-1;
k:=k-1;
a[i]:=0;
end;
if k>1 then bj:=1 else bj:=0;
end;
end;
for i:=1 to 21 do
if a[i]<>0 then
begin writeln(i);break; end;
end.
4、program f2_304;
var
i,j,t,w:integer;
x,y:real;
a,b:array[1..5] of integer;
begin
a[1]:=1;b[1]:=2; a[2]:=2;b[2]:=1;
a[3]:=3;b[3]:=1; a[4]:=2;b[4]:=3;
a[5]:=1;b[5]:=2;
for i:=1 to 4 do
for j:=i+1 to 5 do
begin
x:=a[i]/b[i]; y:=a[j]/b[j];
if (a[i]>=a[j]) or (x>=y) then
begin
t:=a[i]; w:=b[i];
a[i]:=a[j]; b[i]:=b[j];
a[j]:=t; b[j]:=w;
end;
end;
for i:=1 to 5 do
write(a[i],b[i]);
end.
5.program f2_305;
var
n,m,a,b,i,j:integer;
d:array[1..20] of integer;
begin
n:=381; m:=n; b:=0;
WHILE m > 0 do
begin
a:=m MOD 10;
m:=m div 10;
b:= b * 10 + a;
end;
writeln(b);
j:=0;
WHILE b > 0 do
begin
a:= b MOD 2;
b:= b div 2;
j:= j + 1;
d[j]:=a;
END;
FOR i:= j downto 1 do
write(d[i]);
END
6.program f2_306;
var
n,x,y,p,bj:integer;
begin
n:=26;
x:=1;
repeat
bj:=1;
x:=x+1;
if x>2 then
begin
for p:=2 to x-1 do
if x mod p=0 then bj:=0;
end;
y:=n-x;
if y>2 then
begin
for p:=2 to y-1 do
if y mod p=0 then bj:=0;
end;
if bj=1 then writeln(n,'=',x,'+',y);
until bj=1;
end.
四、程序填空:(每空3分,共39分)
1、从键盘输入两个字符串A和B,下面程序能找出它们最长的公共子串,请完善程序。
分析:所谓公共子串,就是两个字符串中含有相同的子字符串。
program f2_401;
var a,b,temp,d:string;
la,lb,len,j,k:integer;
begin
write('input the string 1:');
readln(a);
write('input the string 2:');
readln(b);
if length(a)>=length(b) then
begin
temp:=a;
a:=b;
b:=temp;
end;
la:=length(a);
lb:=length(b);
for len:=la downto 1 do
for j:=1 to la+1-len do
begin
d:= (1) ;
for k:=1 to lb+1-len do
if (2) then
begin
writeln( (3) );
halt;
end;
end;
writeln('no fint!');
end.
2、面程序的功能是:读入N个数,用折半插入法进行从小到大排序。请完善程序。
分析:所谓的折半插入法是在确定插入位置时先将插入数据与已有序数据的中间数据比较,以确定插入位置是在中间位置前还是后,然后再与前或后半部数据的中间数据比较,直到这部分数据只有一个即找到应插入的位置,再将数据插入。
program f2_402;
var
n,m,j,k,g,h,temp:integer;
a:array[1..100] of integer;
begin
write('n='); readln(n);
for j:=1 to n do
readln( (4) );
for j:=2 to n do
begin
temp:=a[j]; g:=1; h:=j-1;
repeat
m:=(g+h+1) div 2;
if (5) then h:=m-1 else g:=m+1;
until g>=h;
for k:=j-1 downto g do
(6) ;
(7) ;
end;
for j:=1 to n do
writeln( (8) );
writeln;
end.
3、输入2个整数K,N,将K分成N个全不相同的整数的和,并使此N个整数的乘积为最大。请完善程序。
例如:输入16,3,则输出4,5,7,因为4+5+7=16,而且4*5*7=140乘积最大。
注意,当这N个数越平均(即越接近),它们的乘积越大。如:5与7的和为12,乘积为35,4与8的和也为12,它们的乘积为32。下面程序中数组A存入N个数且N小于200,K大于N*(N+1)/2。
program f2_403;
var
n,k,s,j,h,h1:integer;
a:array[1..200] of integer;
begin
write('k='); readln(k);
write('n='); readln(n);
s:= (9) ;
for j:=1 to n do
(10) ;
k:=k-s;
h:= (11) ;
h1:=k-h*n;
for j:=1 to n do
a[j]:=a[j]+h;
j:=n;
while (12) do
begin
a[j]:=a[j]+1;
h1:=h1-1;
(13) ;
end;
for j:=1 to n do
write(a[j],' ');
writeln;
end.
2005年东莞市小学生计算机程序设计竞赛
pascal语言 决赛试题(二)答题卡
学校 姓名 年级 辅导老师
------------○-------○--------○----------封装线----------○-----------○----------○----------------
总分 评卷者
一、选择题(每题1分,共10分)
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
答案 |
1、
2、
3、
三、写出下列程序的运行结果(共36分,每题6分)
1. 2. 3. 4.
5. 6.
四、程序填空(每空3分,共39分)
(1) (2)
(3) (4)
(5) (6)
(7) (8)
(9) (10)
(11) (12)
(13)
2005年东莞市小学生计算机程序设计竞赛试题(二)
pascal语言 参
一、选择题(每题1分,共10分)
题号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
答案 | B | C | D | C | D | A | B | A | D | C |
1、 144=24*32,5*3=15个 2、 8+8*9=80个
3、10+83+75-X=100,X=68人
三、写程序结果,每小题6分,共36分
1、 21 2、 s=117 3、 16
4、 1212232131 5、183 6、 26=3+23
10110111
四、程序填空,每空3分,共39分
(1) copy(a,j,len) (2) d=copy(b,k,len) (3) d(或copy(b,k,len) )
(4) a[j] (5) temp<=a[m]
(6) a[k+1]:=a[k] (7) a[g]:=temp
(8) a[j] (9) n*(n+1) div 2
(10)a[j]:=j
(11) k div n (12) h1<>0
(13) j:=j-1