浙江省西店中学NOIP初赛练习题之三(程序阅读题)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

NOIP初赛练习之三(阅读程序题)

前言:如何做阅读程序题

阅读程序题是得分的关键,因为不是让你上机去运行程序,所以要一步步地读程序,记录相关变量的值,最好以画表的形式来记录相关变量值的变化情况。因为程序的运行结果只有输出语句才有输出,所以只写出输出语句的结果。

有时要找出规律才能写出结果,特别是循环次数多的情况,另外要注意边界值,不能多算一步也不能少算一步。

这几年的初赛题一般是四道阅读程序题,每道题8分总分为32,因此阅读程序题最能拉开分差。

{1.1996年初中组基础题第4题}{写出程序运行后变量X的值}

x1:=3;x2:=8;

for i:=1 to 5 do

begin

x:=(x1+x2)*2; x1:=x2;x2:=x;

end;

writeln('x=',x);

{2.1996年初中组第5题高中组第3题}{写出程序段运行后数组元素a1,a2...,a11的值}

a[1]:=1;a[2]:=1;k:=1;

repeat

a[k+2]:=1;

for i:=k downto 2 do a[i]:=a[i]+a[i-1];

k:=k+1;

until k>=10;

{3.1998年写程序运行结果初中组第1题高中组第1题}

program exp1(input,output);

var i,s,nax:integer;

a:array[1..10] of integer;

begin

for i:=1 to 10 do read(a[i]);

max:=a[1];s:=a[1];

for i:=2 to 10 do

begin

if s<0 then s:=0;

s:=s+a[i];

if s>max then max:=s;

end;

writeln('max=',max);

end.

{初中输入:-2 13 -1 4 7 8 -1 -18 24 6}

{ 输出:max= }

{高中输入:8 9 -1 24 6 5 11 15 -28 9}

{ 输出:max= }

{4.1998年初中组写程序运行结果第2题} program exp2(input,output}; const n=5;

var i,j,k:integer;

a:array[1..2*n,1..2*n] of integer;

begin

k:=1;

for i:=1 to 2*n-1 do

if i<=n then

if odd(i) then

for j:=i downto 1 do

begin a[i-j+1,j]:=k;k:=k+1 end

else

for j:=1 to i do begin a[i-j+1,j]:=k;k:=k+1; end

else

if odd(i) then

for j:=n downto i-n+1 do begin a[i-j+1,j]:=k;k:=k+1 end

else

for j:=i-n+1 to n do begin a[i-j+1,j]:=k;k:=k+1; end;

for i:=1 to n do

begin for j:=1 to n do write(a[i,j]:3); writeln; end;

end.

{5.1998年初中组写程序运行结果第3题高中组第

2题}

program exp3(input,output);

const n=10;

var s,i:integer;

function co(i:integer):integer;

var j1,s1:integer;

begin

s1:=n;

for j1:=(n-1) downto (n-i+1) do s1:=s1*j1 div (n-j1+1);

co:=s1;

end;

begin

s:=n+1;

for i:=2 to n do s:=s+co(i);

writeln('s=',s);

end.

{6.1998年初中组写程序运行结果第4题}

program exp4(input,output);

const n=3;

var i,j,s,x:integer;

p:array[0..n+1] of integer;

g:array[0..100] of integer;

begin

for i:=0 to 100 do g[i]:=0;

p[0]:=0;p[n+1]:=100;

for i:=1 to n do read(p[i]); readln;

for i:=0 to n do

for j:=i+1 to n+1 do

g[abs(p[j]-p[i])]:=g[abs(p[j]-p[i])]+1;

s:=0;

for i:=0 to 100 do

if g[i]>0 then begin write(i:4);s:=s+1; end; writeln;

writeln('s=',s);

writeln('input data:');readln(x);

writeln(g[x]);

end.

{ 输入: 10 20 65}

{ input data: 10}

{输出: }

{7.1998年高中组第3题}

program exp3(input,output);

var i,j:integer;

b:array[0..5] of integer;

begin

s:=1;

for i:=1 to 5 fo b[i]:=i;

j:=1;

while j>0 do

begin

j:=5;

while (j>0) and (b[j]=10+j-5) do j:=j-1;

if j>0 then

begin

s:=s+1;b[j]:=b[j]+1;

for i:=j+1 to 5 do b[i]:=b[j]+i-j

end;

end;

writeln('s=',s);

end.

{8 1998年高中组第4题}

program exp4(input, output);

const n=4;

type se=array[1..n*2] of char;

var i,j,i1,j1,k,s,t,s1,l,swap:integer;

temp:char; a:se;

begin

for i:=1 to n*2 do read(a[i]);readln;

s:=0;t:=0;

for i:=1 to n*2 do

if a[i]='1' then s:=s+1 else if a[i]='0' then t=t+1;

if s<>n or t<>n then writeln('error')

else begin

s1:=0;

for i:=1 to 2*n-1 do if a[i]<>a[i+1] then s1:=s1+1;

writeln('jamp=',s1); swap:=0;

for i:=1 to 2*n-1 do

for j:=i+1 to 2*n do

if a[i]<>a[j] then

begin

temp:=a[i];a[i]:=a[j];a[j]:=temp;

s:=0;

for l:=1 to 2*n-1 do if a[l]<>a[l]+1 then s:=s+1;

if s>swap then begin swap:=s;i1=i;j1:=j end;

temp:=a[i];a[i]:=aj]:a[j]:=temp;

end;

if swap>0 then writeln('maxswap=',swap-s1,'i=',i1,'j1=',j1); end

end.

{输入:10101100}

{9. 1999年初中组第1题}

program exp1;

var x,y,y1,jk,j1,gme:integer;

a:array [1..20] of 0..9;

begin

x:=3465;y:=264;jk:=20;

for j1:=1 to 20 do a[j1]:=0;

while y<>0 do

begin

y1:=y mod 10; y:=y div 10;

while y1<>0 do

begin

g:=x;

for e:=jk downto 1 do

begin

g:=g+a[e]; a[e]:=g mod 10; g:=g div 10; end;

y1:=y1-1;

end;

jk:=jk-1;

end;

j1=1;

while a[j1]=0 do j1:=j1+1;

for jk:=j1 to 20 do write(a[jk]:4);

writeln

end.

{10.1999年初中组第2题}

program excp1;

var i,j:integer;

a:array[1..14] of integer;

相关文档
最新文档