"竞赛阅读程序测试"试题及其答案|知识竞赛答案
“竞赛阅读程序测试”试题及其答案
第1题(6分)
program yd;
var d, p: integer;
begin
p:=1;
d:=11;
while d>1 do
begin
p:=2*(p+1);
d:=d-1
end;
writeln (p)
end.
输出:______
答案:
3070
第2题(6分)
program yd;
var
g,m: integer;
k,t: real;
begin
k:=0; g:=0;
for m:=1 to 49 do
begin
g:=g+1;
k:=k+1/(g*(g+1))
end;
writeln ( k: 10: 2 )
end.
输出:______
答案:
0.98
第3题(6分)
program yd;
var
n, i, t: longint;
tem: integer;
s: string;
begin
write("Input n: "); readln(n);
s:="1";
repeat
i:= length(s);
while s[i] ="1" do
begin
s[i]:= "0" ;dec(i);
end;
if i>0 then s[i]:="1"
else s:= "1" +s;
val(s,t,tem);
until t mod n = 0;
writeln(n,"*",t div n,"=",s);
end.
输入:6
输出:______
答案:
6*185=1110
第4题(6分)
program yd;
const n = 5;
var
i,j,m,s:integer;
begin
m:=0;
for i:=1 to n do
begin
m:=m+i;
s:=m;
for j:=1 to 2*i do write(""); {""
for j:=1 to n do
begin
write(s mod 10:2);
s:=s+j;
end;
writeln;
end;
end.
输出:______
答案:
1 2 4 7 1
3 4 6 9 3
6 7 9 2 6
0 1 3 6 0
5 6 8 1 5
第5题(7分)
program yd; 中间是一个空格}
var
a:array[0..8] of char;
i: integer;
begin
for i:= 1 to 8 do a[i]:=char(i * 2 +ord("A")); for i:= 1 to 4 do begin
a[0]:=a[i];
a[i]:=a[9-i];
a[9-i]:=a[0];
end;
for i:= 1 to 8 do write(a[i]);
writeln;
end.
输出:______
答案:
QOMKIGEC
第6题(7分)
Program yd;
var
n, i, x: integer;
d:array[0..10] of integer;
begin
readln(n);
fori:=1 to n do
begin
read(x);
d[x]:=d[x] +1;
end;
d[0]:=0;
for i:=1 to 10 do d[i]:=d[i-1]+d[i];
for i:=1 to 10 do
if d[i] d[i-1] then writeln(i:3,d[i-1]+1:4); end.
输入:
20
3 4 6 1 7 6 9 4 10 7
6 6 3 3 8 7 9 10 6 7
输出:_______
答案:
1 1
3 2
4 5
6 7
7 12
8 16
9 17
10 19
第7题(7分)
program yd;
var
a,b:array[1..32] of integer;
i: integer;
procedure ssort( i ,j: integer);
var
m, k, x: integer;
begin
if j-i>1 then
begin
m:=(i+j) div 2;
ssort(i,m);
ssort(m+1,j);
k:=i;
for x:=i to m do
begin
b[k]:=a[x]; b[k+1]:=a[m+x-i+1];
k:=k+2;
end;
for x:=i to j do a[x]:=b[x];
end;
end;
begin
for i:=1 to 16 do a[i]:=i;
ssort(1,16);
for i:= 1 to 16 do write(a[i]:3);
writeln;
end.
输出:______
答案:
1 9 5 13 3 11 7 15 2 10 6 14 4 12 8 16 第8题(6分)
program yd;
var
a,d:array[1..100] of integer;
n ,i ,j ,k,x ,s :integer;
begin
n:=5;a[1]:=1;d[1]:=1;
for i:=1 to n do
begin
s:=i+1;x:=0;
for j:=1 to n+1-i do
begin
k:=s+x;x:=x+1;a[j+1]:=a[j]+k;
write(a[j]," ");
end;
writeln("...");d[i+1]:=d[i]+i;a[1]:=d[i+1]; end;
end.
输出:_________
答案:
1 3 6 10 15 ...
2 5 9 14 ...
4 8 13 ...
7 12 ...
11 ...
第9题(7分)
program yd;
const
d: array [0..3,1..4] of integer
=((4,7,10,13),(1,8,11,14),(2,5,12,15),(3,6,9,16)); var
i ,j ,a,x,k ,bj :integer;
y,u,v:real;
begin
for i:=1 to 4 do
begin
a:=3-i;bj:=0;
for j:=0 to 3 do
for k:=1 to 4 do
begin
x:=d[j,k];u:=(x+a)/4;v:=(x+trunc(u))/4; y:=4*(v-trunc(v));
if yj then begin k:=4;j:=3;bj:=1;end; end;
if bj=0 then
begin
write("U = (X");
if a>0 then write("+");
writeln(a,")/4");
end;
end;
end.
输出:_________
答案:
U = (X-1)/4
第10题(7分)
program yd;
const
a:array[1..10] of integer
= (8 ,2,7,4,6,9,3,5,3,8);
type point = ^nod;
nod = record
w: integer; right,left: point
end;
var first,head :point;
j,i,k:integer;
procedure hyt ( d: integer; var p: point);
begin
if p = nil then
begin
new(p);
if k = 1 then begin first:=p;k:=2;end;
with p^ do
begin w:=d; right:=nil; left:=nil end; end
else with p^ do
if d >= w then hyt(d,right) else hyt(d,left); end;
procedure hyt1(p: point);
begin
with p^ do
begin
if left nil then hyt1(left);
write(w:4);
if right nil then hyt1(right);
end;
end;
begin
i:=10;
first:=nil;k:=1;
for j:=1 to i do hyt(a[j] ,first);
hyt1(first);writeln
end.
输出:_________
答案:
2 3 3 4 5 6 7 8 8 9
第11题(7分)
program yd;
var m,n,i,p,k:integer;
r:array[1..200] of integer;
b: boolean;
begin
m:=6;n:=2;
for i:=1 to m-1 do r[i]:=i+1;
r[m]:=1;i:=0;p:=1;b:=true;
while b do
begin
i:=i+1;k:=p;p:=r[p];
if k=p then begin writeln(p) ;b:=false end else if i=n+1 then
begin
write(p," ");i:=0;p:=r[p];r[k]:=p; end
end
end.
输出:________
答案:
4 2 1 3 6 5
第12题(7分)
program yd;
var n,k,s:longint;
begin
n:=1000000000;
k:=0;
s:=1;
while s
begin
k:=k+1;
n:=n-s;
s:=s+6*k
end;
writeln (k)
end.
输出:_______
答案:
1000
第13题(7分)
program yd;
const
a: array[1..14] of longint
=(94,32,40,90,99,80,46,21,69,28,64,73,85,54); var
i, j, k, m,left, right, temp: longint; begin
m:=8;
left:= 1;
right:= 14;
while left
begin
k:=a[m];
i:=left;
j:=right;
repeat
while k
while k > a[i] do i:=i+1;
if i
begin
temp:=a[i];
a[i]:=a[j];
a[j]:=temp;
i:=i+1;
j:=j -1
end
until i > j;
if j
if i > m then right:=j
end;
writeln(a[m])
end.
输出:_______
答案:
69
第14题(7分)
program yd;
var
m ,n,s: longint;
procedure pl(n: longint);
begin
if n0 then
begin
pl(n div 2);
s:=(s*2+n mod 2 *m) mod 1023
end
end;
begin
m:=2002;
n:=5871;
s:=0;
pl(n);
writeln(s);
end.
输出:_______
答案:
495
第15题(7分)
program yd;
const
maxn =10000;
var
i,j,k ,n,r,p,g:longint;
a:array [1..maxn] of longint;
function gcd(m, n: longint): longint; var r: longint;
begin
while n0 do
begin
r:=m mod n;
m:=n;
n:=r
end;
gcd:=m
end;
begin
n:= 1000;
r:=202;
for i:=1 to n-r do a[i]:=n-i+1; for i:=2 to r do
begin
k:=i;
for j:=1 to n-r do
if gcd(k,a[j]) > 1 then begin
g:= gcd(k,a[j]);
k:=k div g;
a[j]:=a[j] div g;
if k = 1 then peak
end
end;
p:= 1 ;g:=0;
for i:=1 to n-r do begin
p:=p*a[i];
while p mod 5 = 0 do begin
p:=p div 5; g:=g+1
end;
p:= p mod 5 end;
writeln(g)
end.
输出:________ 答案:
151