NOIP初赛练习之三阅读程序写出程序运行结果.docx

上传人:b****6 文档编号:8699856 上传时间:2023-02-01 格式:DOCX 页数:17 大小:19.35KB
下载 相关 举报
NOIP初赛练习之三阅读程序写出程序运行结果.docx_第1页
第1页 / 共17页
NOIP初赛练习之三阅读程序写出程序运行结果.docx_第2页
第2页 / 共17页
NOIP初赛练习之三阅读程序写出程序运行结果.docx_第3页
第3页 / 共17页
NOIP初赛练习之三阅读程序写出程序运行结果.docx_第4页
第4页 / 共17页
NOIP初赛练习之三阅读程序写出程序运行结果.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

NOIP初赛练习之三阅读程序写出程序运行结果.docx

《NOIP初赛练习之三阅读程序写出程序运行结果.docx》由会员分享,可在线阅读,更多相关《NOIP初赛练习之三阅读程序写出程序运行结果.docx(17页珍藏版)》请在冰豆网上搜索。

NOIP初赛练习之三阅读程序写出程序运行结果.docx

NOIP初赛练习之三阅读程序写出程序运行结果

NOIP初赛练习之三(阅读程序写出程序运行结果)

前言:

如何做阅读程序题

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

因为程序的运行结果只有输出语句才有输出,所以只写出输出语句的结果。

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

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

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

x1:

=3;x2:

=8;

fori:

=1to5do

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;

fori:

=kdownto2doa[i]:

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

k:

=k+1;

untilk>=10;

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

programexp1(input,output);

vari,s,nax:

integer;

a:

array[1..10]ofinteger;

begin

fori:

=1to10doread(a[i]);

max:

=a[1];s:

=a[1];

fori:

=2to10do

begin

ifs<0thens:

=0;

s:

=s+a[i];

ifs>maxthenmax:

=s;

end;

writeln('max=',max);

end.

{初中输入:

-213-1478-1-18246}

{输出:

max=}

{高中输入:

89-124651115-289}

{输出:

max=}

{4.1998年初中组写程序运行结果第2题}

programexp2(input,output};

constn=5;

vari,j,k:

integer;

a:

array[1..2*n,1..2*n]ofinteger;

begin

k:

=1;

fori:

=1to2*n-1do

ifi<=nthen

ifodd(i)then

forj:

=idownto1do

begina[i-j+1,j]:

=k;k:

=k+1end

else

forj:

=1toidobegina[i-j+1,j]:

=k;k:

=k+1;end

else

ifodd(i)then

forj:

=ndowntoi-n+1dobegina[i-j+1,j]:

=k;k:

=k+1end

else

forj:

=i-n+1tondobegina[i-j+1,j]:

=k;k:

=k+1;end;

fori:

=1tondo

beginforj:

=1tondowrite(a[i,j]:

3);writeln;end;

end.

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

programexp3(input,output);

constn=10;

vars,i:

integer;

functionco(i:

integer):

integer;

varj1,s1:

integer;

begin

s1:

=n;

forj1:

=(n-1)downto(n-i+1)dos1:

=s1*j1div(n-j1+1);

co:

=s1;

end;

begin

s:

=n+1;

fori:

=2tondos:

=s+co(i);

writeln('s=',s);

end.

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

programexp4(input,output);

constn=3;

vari,j,s,x:

integer;

p:

array[0..n+1]ofinteger;

g:

array[0..100]ofinteger;

begin

fori:

=0to100dog[i]:

=0;

p[0]:

=0;p[n+1]:

=100;

fori:

=1tondoread(p[i]);readln;

fori:

=0tondo

forj:

=i+1ton+1do

g[abs(p[j]-p[i])]:

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

s:

=0;

fori:

=0to100do

ifg[i]>0thenbeginwrite(i:

4);s:

=s+1;end;

writeln;

writeln('s=',s);

writeln('inputdata:

');readln(x);

writeln(g[x]);

end.

{输入:

102065}

{inputdata:

10}

{输出:

}

{7.1998年高中组第3题}

programexp3(input,output);

vari,j:

integer;

b:

array[0..5]ofinteger;

begin

s:

=1;

fori:

=1to5fob[i]:

=i;

j:

=1;

whilej>0do

begin

j:

=5;

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

=j-1;

ifj>0then

begin

s:

=s+1;b[j]:

=b[j]+1;

fori:

=j+1to5dob[i]:

=b[j]+i-j

end;

end;

writeln('s=',s);

end.

{81998年高中组第4题}

programexp4(input,output);

constn=4;

typese=array[1..n*2]ofchar;

vari,j,i1,j1,k,s,t,s1,l,swap:

integer;

temp:

char;a:

se;

begin

fori:

=1ton*2doread(a[i]);readln;

s:

=0;t:

=0;

fori:

=1ton*2do

ifa[i]='1'thens:

=s+1elseifa[i]='0'thent=t+1;

ifs<>nort<>nthenwriteln('error')

elsebegin

s1:

=0;

fori:

=1to2*n-1doifa[i]<>a[i+1]thens1:

=s1+1;

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

=0;

fori:

=1to2*n-1do

forj:

=i+1to2*ndo

ifa[i]<>a[j]then

begin

temp:

=a[i];a[i]:

=a[j];a[j]:

=temp;

s:

=0;

forl:

=1to2*n-1doifa[l]<>a[l]+1thens:

=s+1;

ifs>swapthenbeginswap:

=s;i1=i;j1:

=jend;

temp:

=a[i];a[i]:

=aj]:

a[j]:

=temp;

end;

ifswap>0thenwriteln('maxswap=',swap-s1,'i=',i1,'j1=',j1);

end

end.

{输入:

10101100}

{9.1999年初中组第1题}

programexp1;

varx,y,y1,jk,j1,gme:

integer;

a:

array[1..20]of0..9;

begin

x:

=3465;y:

=264;jk:

=20;

forj1:

=1to20doa[j1]:

=0;

whiley<>0do

begin

y1:

=ymod10;y:

=ydiv10;

whiley1<>0do

begin

g:

=x;

fore:

=jkdownto1do

begin

g:

=g+a[e];a[e]:

=gmod10;g:

=gdiv10;

end;

y1:

=y1-1;

end;

jk:

=jk-1;

end;

j1=1;

whilea[j1]=0doj1:

=j1+1;

forjk:

=j1to20dowrite(a[jk]:

4);

writeln

end.

{10.1999年初中组第2题}

programexcp1;

vari,j:

integer;

a:

array[1..14]ofinteger;

proceduresw(i1,j1:

integer);

vark1:

integer;

begin

fork1:

=1to(j1-i1+1)div2do

begin

a[i1+k1-1]:

=a[i1+k1-1]+a[j1-k1+1];

a[j1-k1+1]:

=a[i1+k1-1]-a[j1-k1+1];

a[i1+k1-1]:

=a[i1+k1-1]-a[j1-k1+1];

end;

end;

begin

j:

=211;

fori:

=1to14dobegina[i]:

=i;j:

=j-i;end;

sw(1,4);sw(5,10);sw(11,14);sw(1,14);

fori:

=1to14do

begin

ifjmodi=1thenwrite(a[i]:

3);

j:

=j-a[i];

end;

writeln

end.

{11.1999年高中组第2题}

设数组a[1],a[2],……a[N],已存放了数据,调用不同的排序程序,则数据比较的次数会不同。

试计算分别调用下列不同的排序过程的比较运算的次数。

其中swap(i,j)表示a[i]与a[j]交换。

(1)proceduresort1(n:

integer);

vari,j:

integer;

begin

fori:

=1ton-1do

forj:

=1tondo

ifa[i]

end;

调用该过程的语句为sort1(n),比较运算的次数为:

________

(2)proceduresort2(i,n:

integer);

varj:

integer;

begin

ifi=nthenwrite(a[n])

elseforj:

=i+1tondoifa[j]

write(a[i]);

sort(i+1,n);

end;

调用该过程的语句为sort2(0,n),比较运算的次数为:

________

(3)proceduresort3(i,j:

integer);

varm:

integer;

begin

ifi<>jthen

begin

m:

=(i+j)div2;

sort3(i,m);

sort3(m+1,j);

merge;{假设合并的元素分别为P、Q个,需要比较P+Q次}

end;

end;

调用该过程的语句为sort3(0,n),比较运算的次数为:

________

{12.2000年初中组第1题}

programnoi_002;

vari,j,m,n,k,s,t:

integer;

b:

array[1..10]of0..9;

begin

readln(m,n);

s:

=m;k:

=1;t:

=m;

whiles

=k+1;t:

=t*m;s:

=s+tend;

s:

=s-t;n:

=n-s-1;

fori:

=1to10dob[i]:

=0;

j:

=11;

whilen>0do

begin

j:

=j-1;b[j]:

=nmodm;n:

=ndivm;

end;

fori:

=10-k+1to10dowrite(chr(ord('a')+b[i]));

end;

输入:

4167输出:

{13、2000年初中组第2题}

programnoi_004;

vari,j,j1,j2,p,q:

integer;

p1:

boolean;

b,c:

array[1..100]ofinteger;

begin

readln(p,q);j:

=1;p1:

=true;b[j]:

=q;j1:

=0;

while(q>0)andp1do

begin

j1:

=j1+1;c[j1]:

=q*10divp;q:

=q*10-c[j1]*p;

ifq>0then

begin

j2:

=1;

while(b[j2]<>q)and(j2<=j)doj2:

=j2+1;

ifb[j2]=qthen

begin

p1:

=false;write('0.');

fori:

=1toj2-1dowrite(c[i]:

1);

write('{');

fori:

=j2toj1dowrite(c[i]:

1);

writeln('}');

end

elsebeginj:

=j+1;b[j]:

=qend;

end;

end;

ifq=0then

begin

write('0.');

fori:

=1toj1dowrite(c[i]:

1);

writeln

end;

readln

end.

输入:

18输出:

输入:

27输出:

{14、2000年高中组第1题}

progarmnoi_003;

constn=7;m=6;

vari,j,x0,y0,x1,x2,y1,y2:

integer;

d:

real;p:

boolean;g:

array[0..n,0..m]of0..1;

functiondisp(x1,y1,x2,y2:

integer):

real;{计算两点间距离}

begin

disp:

=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));

end;

begin

fori:

0tondoforj:

=0tomdog[i,j]:

=0;

readln(x1,y1,x2,y2);

g[x1,y1]:

=1;g[x2,y2]:

=1;p:

=true;

whilepdo

begin

p:

=false;

d:

=disp(x1,y1,x2,y2);

x0:

=x1;y0:

=y1;

fori:

=4tondo

forj:

=0tomdo

if(d>disp(i,j,x2,y2))and(g[i,j]=0)then

begin

d:

=disp(i,j,x2,y2);x0:

=i;y0:

=j;

end;

if(x0<>x1)or(y0<>y1)then

begin

x1:

=x0;y1:

=y0;P:

=true;g[x1,y1]:

=1;

end;

d:

=disp(x1,y1,x2,y2);x0:

=x2;y0:

=y2;

fori:

=0to3do

forj:

=0tomdo

if(d

begin

d:

=disp(x1,y1,i,j)x0:

=i;y0:

=j;

end;

if(x0<>x2)or(y0<>y2)then

beginx2:

=x0;y2:

=y0;p:

=true;g[x2,y2]:

=1;end;

end;

writeln(x1,y1,x2,y2);

end.

输入:

7600输出:

{15、2003高中组第一题}

programProgram1;

vara,b,c,d,sum:

longint;

begin

read(a,b,c,d);

a:

=amod23;b:

=bmod28;c:

=cmod33;

sum:

=a*5544+b*14421+c*1228-d;

sum:

=sum+21252;sum:

=summod21252;

if(sum=0)thensum:

=21252;

writeln(sum);

end.

输入:

28310223320输出____________

{16、2003高中组第二题}

programProgram2;

constu:

array[1..4]ofinteger=(0,5,3,1);

v:

array[1..4]ofinteger=(0,7,6,5);

vara,b,c,d,e,f,x,y,z:

integer;

begin

read(a,b,c,d,e,f);

z:

=f+e+d+(c+3)div4;y:

=5*d+u[cmod4];

if(b>y)then

begin

z:

=z+(b-y+8)div9;

x:

=((b-y+8)div9*9-(b-y))*4+11*e+v[cmod4];

end

elsex:

=(y-b)*4+11*e+v[cmod4];

if(a>x)thenz:

=z+(a-x+35)div36;

writeln(z)

end.

输入:

479205647输出____________________

{17.2003高中组第三题}

programprogram3;

varm,n:

integer;mark:

boolean;

functiontest(m,n:

integer):

integer;

vari,p:

integer;flag:

boolean;

begin

m:

=m-1;i:

=0;flag:

=false;

forp:

=2*ndownton+1do

begin

i:

=(i+m)modp;

ifi

=0;flag:

=true;break;end

end;

ifnotflagthentest:

=1;

end;

begin

read(n);m:

=1;mark:

=false;

repeat

iftest(m,n)=1thenbeginwriteln(m);break;end;

m:

=m+1;

untilmark;

end.

输入:

7输出_________

{18.2003年高中组第四题}

varm,n,i,j:

integer;

p,w,a,b:

array[0..19]ofinteger;

begin

read(n);m:

=0;

fori:

=0ton-1dobeginread(p[i]);b[i]:

=1;end;

fori:

=0ton-1do

begin

ifi>0thena[m]:

=p[i]-p[i-1]elsea[m]:

=p[i];

m:

=m+1;

while(m>1)and(a[m-1]=0)dobeginm:

=m-1;b[m]:

=1;end;

ifm>0thenw[i]:

=b[m-1]elsew[i]:

=b[0];

a[m-1]:

=a[m-1]-1;

forj:

=0tom-1dob[j]:

=b[j]+1;

while(m>1)and(a[m-1]=0)dobeginm:

=m-1;b[m]:

=1;end;

end;

fori:

=0ton-1do

begin

write(w[i]);write('');

end;

writeln('');

end.

输入:

9

4666689999

输出:

____________________

{19、2003初中组第一题}

vara,x,y,ok1,ok2:

integer;

begin

a:

=100;x:

=10;y:

=20;ok1:

=5;ok2:

=0;

if(x>y)or((y<>20)and(ok1=0))and(ok2<>0)thena:

=1

elseif(ok1<>0)and(ok2=0)thena:

=-1elsea:

=0;

writeln(a);

end.

{20、2003初中组第三题}

vara,b,c,d,sum:

longint;

begin

read(a,b,c,d);

a:

=amod23;b:

=bmod28;c:

=cmod33;

sum:

=a*5544+b*14421+c*1288-d;

sum:

=sum+21252;

sum:

=summod21252;

ifsum=0thensum:

=21252;

writeln(sum);

end.

输入:

3986输出:

_____________

{21、2003初中组第四题}

vara:

array[0..5]ofinteger;

sum,n,max,i,j,k:

integer;

cover:

array[0..22000]ofboolean;

begin

read(a[5],a[4],a[3],a[2],a[1],a[0]);

if(a[5]=0)and(a[3]=0)and(a[1]=0)then

begin

a[5]:

=a[4];a[4]:

=a[2];a[3]:

=a[0];a[2]:

=0;a[0]:

=0;

end;

fori:

=0to5doifa[i]>10thena[i]:

=10+a[i]mod2;

sum:

=0;

fori:

=0to5dosum:

=sum+a[i]*(6-i);

ifsummod2<>0thenbeginwriteln('Can''tbedivided.');exit;end;

sum:

=sumdiv2;max:

=0;cover[0]

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

当前位置:首页 > PPT模板 > 国外设计风格

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

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