搜索
您的当前位置:首页正文

阅读程序(1999-2007)

来源:欧宁财经
历届联赛阅读程序写结果

(1)noip2007 (2)noip2006 (3)noip2005 (4)noip2004 (5)noip2003 (6)noip2002 (7)noip2001 (8)noip2000 (9)noip1999

Noip2007

阅读程序写结果(共4 题,每题8 分,共计32 分) 1.program s401;

var p,q:array[0..5] of integer;

i,x,y:integer; begin

y:=20;

for i:=0 to 4 do read(p[i]); readln;

q[0]:=(p[0]+p[1])+(p[2]+p[3]+p[4]) div 7; q[1]:=p[0]+p[1] div ((p[2]+p[3]) div p[4]); q[2]:=p[0]*p[1] div p[2]; q[3]:=q[0]*q[1];

q[4]:=q[1]+q[2]+q[3];

x:=(q[0]+q[4]+2)-p[(q[3]+3) mod 4]; if (x>10) then

y:=y+(q[1]*100-q[3]) div (p[p[4] mod 3]*5) else

y:=y+20+(q[2]*100-q[3]) div (p[p[4] mod 3]*5); writeln(x,',',y);

end.

/*注:本例中,给定的输入数据可以避免分母为0 或数组元素下标越界。输入:6 6 5 5 3 输出:129,43

2.program s402; var a,b:integer;

x,y:^integer;

procedure fun(a,b:integer); var k:integer;

begin k:=a; a:=b; b:=k; end; begin

a:=3; b:=6;

x:=@a; y:=@b; fun(x^,y^);

write('No.1:',a,',',b,' '); fun(a,b);

writeln('No.2:',a,',',b); end.

输出: No.1:6,3 No.2:6,3

*/ 3.program S403;

var a1:array[1..50] of integer; var i,j,t,t2,n,n2:integer; begin

n:=50;

for i:=1 to n do a1[i]:=0; n2:=round(sqrt(n)); for i:=2 to n2 do if(a1[i]=0) then begin

t2:=n div i;

for j:=2 to t2 do a1[i*j]:=1; end; t:=0;

for i:=2 to n do if (a1[i]=0) then

begin

write(i:4); inc(t);

if(t mod 10=0) then writeln; end; writeln; end. 输出:

________________________________________

4.program S404; const n=12;

ch2:array[0..12] of char

=('q','A','S','O','R','T','E','X','A','M','P','L','E');

var k:integer;

ch:array[0..12] of char; procedure shift(k,n:integer); var v:char;

j:integer; begin

v:=ch[k]; j:=k+k;

while (j<=n) do

begin

if (jch[j div 2]:=v;

end; end;

procedure hpsrt; var k:integer;

tmp:char; begin

for k:=n div 2 downto 1 do shift(k,n); write('No.1: ');

for k:=1 to n do write(ch[k]); writeln;

for k:=n downto 1 do begin

tmp:=ch[1]; ch[1]:=ch[k]; ch[k]:=tmp; shift(1,k-1); end; end;

begin

for k:=0 to n do ch[k]:=ch2[k]; hpsrt;

write('No.2: ');

for k:=1 to n do write(ch[k]); writeln;

end.

输出:__________________________________________ ___________________________________________

Noip2006

1. Program ex401; var

u,v:array[0..3] of integer; i,x,y:integer; begin

x:=10; y:=10; for i:=0 to 3 do read(u[i]);

v[0]:=(u[0]+u[1]+u[2]+u[3]) div 7; v[1]:=u[0] div ((u[1]-u[2]) div u[3]); v[2]:=u[0]*u[1] div u[2]*u[3]; v[3]:=v[0]*v[1];

x:=(v[0]+v[1]+2)-u[(v[3]+3) mod 4];

if (x>10) then

y:=y+(v[2]*100-v[3]) div (u[u[0] mod 3]*5) else

y:=y+20+(v[2]*100-v[3]) div (u[v[0] mod 3]*5);

writeln (x,',',y);

end. {*注:本例中,给定的输入数据可以避 0或下标越界。 ) 输入:9 3 9 4 输出:-13,57

2.Program ex402;

const

m:array[0..4] of integer=(2,3,5,7,13); var i,j:integer; t: longint; begin

for i:=0 to 4 do begin t:=1;

for j:=1 to m[i]-1 do t:=t*2; t:=(t*2-1)*t; write (t,' '); end; writeln;

end.

输出:6 28 496 8128 33550336

3. Program ex403; Const NN=7; Type

Arr1=array[0..30] of char; var

s:arr1;

k,p:integer;

function fun1(s:arr1; a:char;n:integer):integer; var

j:integer; begin j:=n;

while (a0) do dec(j); fun1:=j; end;

Function fun2(s:arr1; a:char; n:integer):integer; var j:integer; begin j:=1;

while (a>s[j])and(jfor k:=1 to NN do

s[k]:=chr(ord('A')+2*k+1); k:=fun1(s,'M',NN)+fun2(s,'M',NN); writeln(k); end.

输出:11

4. program ex404; var

x,x2:longint;

procedure digit(n,m:longint); var n2:integer; begin

if(m>0) then begin

n2:=n mod 10; write(n2:2);

if(m>1) then digit(n div 10,m div 10); n2:=n mod 10; write(n2:2); end; end; begin

writeln('Input a number:'); readln(x); x2:=1;

while(x2输入:9734526 输出: Input a number: 6 2 4 3 7 9 9 7 3 4 2 6

Noip2005

阅读程序(共4题,每题8分,共计32 分) 1. var

a, b, c, p, q : integer; r : array[0..2] of integer;

begin

read(a, b, c);

p := a div b div c; q := b - c + a + p; r[0] := a * p div q * q;

r[1] := r[0] * (r[0] - 300);

if (3 * q - p mod 3 <= r[0]) and (r[2] = r[2]) then r[1] := r[r[0] div p mod 2] else r[1] := q mod p; writeln(r[0] - r[1]); end.

输入:100 7 3

输出:-7452

2. var

a : array [1..50] of integer; n, i, sum : integer;

procedure work(p, r: integer); var

i, j, temp : integer; begin

if p < r then begin i := p - 1;

for j := p to r - 1 do if a[j] >= a[r] then begin inc(i);

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

temp := a[i + 1]; a[i + 1] := a[r]; a[r] := temp; work(p, i); work(i + 2, r); end; end; begin read(n);

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

work(1, n);

for i := 1 to n - 1 do sum := sum + abs(a[i + 1] - a[i]); writeln(sum);

end.

输入:10 23 435 12 345 3123 43 456 12 32 -100 输出:3223

3. var

str : string;

len, i, j : integer;

nchr : array [0..25] of integer; mmin : char; begin mmin := 'z'; readln(str); len := length(str); i := len;

while i >= 2 do begin

if str[i - 1] < str[i] then break; dec(i); end;

if i = 1 then begin writeln('No result!'); exit; end;

for j := 1 to i - 2 do write(str[j]); fillchar(nchr, sizeof(nchr), 0);

for j := i to len do begin

if (str[j] > str[i - 1]) and (str[j] < mmin) then mmin := str[j];

inc(nchr[ord(str[j]) - ord('a')]); end;

dec(nchr[ord(mmin) - ord('a')]); inc(nchr[ord(str[i - 1]) - ord('a')]); write(mmin); for i := 0 to 25 do

for j := 1 to nchr[i] do write(chr(i + ord('a')));

writeln; end.

输入:zzyzcccbbbaaa

输出:zzzaaabbbcccy

4. var

n : longint;

function g(k : longint) : longint; begin

if k <= 1 then g := k

else g := (2002 * g(k - 1) + 2003 * g(k - 2)) mod 2005; end;

begin

read(n);

writeln(g(n)); end.

输入:2005

输出:

Noip2004

阅读程序(共4题,每题8分,共计32分) 1.program progam1; var

u: array [0..3] of integer; a, b, c, x, y, z: integer; begin read(u[0], u[1], u[2], u[3]);

a := u[0] + u[1] + u[2] + u[3] - 5; b := u[0] * (u[1] - u[2] div u[3] + 8); c := u[0] * u[1] div u[2] * u[3];

x := (a + b + 2) * 3 - u[(c + 3) mod 4];

y := (c * 100 - 13) div a div (u[b mod 3] * 5);

if((x+y) mod 2 = 0) then z := (a + b + c + x + y) div 2;

z := (a + b + c – x - y) * 2; writeln(x + y - z); end.

输入:2 5 7 4 输出:

2.program program2; var

i, number, ndata, sum: integer; data: array[1..100] of integer;

procedure solve(s, sign, n: integer); var i: integer; begin

for i := s to ndata do begin

inc(sum, sign * (number div (n * data[i]))); solve(i + 1, -sign, n * data[i]); end; end;

begin

read(number ,ndata);

sum := 0;

for i := 1 to ndata do read(data[i]); solve(1, 1, 1);

writeln(sum); end.

输入:1000 3 5 13 11 输出: 。

3.program program3;

var c: array[1..3] of string[200]; s: array[1..10] of integer; m, n, i: integer; procedure numara; var cod: boolean; i, j, nr: integer; begin

for j := 1 to n do begin

nr := 0; cod := true; for i := 1 to m do

if c[i, j] = '1' then begin if not cod then begin

cod := true; inc(s[nr]); nr := 0; end end

else begin

if cod then begin

nr := 1; cod := false; end

else inc(nr); end;

if not cod then inc(s[nr]); end; end;

begin

readln(m, n);

for i := 1 to m do readln(c[i]); numara;

for i := 1 to m do

if s[i] <> 0 then write(i, ' ', s[i], ' '); end. 输入: 3 10

1110000111 1100001111

1000000011

输出: 。

4.program program4;

const

u: array[0..2] of integer = (1, -3, 2); v: array[0..1] of integer = (-2, 3); var

i, n, sum: integer;

function g(n: integer): integer; var i, sum: integer; begin sum := 0;

for i := 1 to n do inc(sum, u[i mod 3] * i); g := sum; end; begin sum := 0; read(n);

for i := 1 to n do inc(sum, v[i mod 2] * g(i)); writeln(sum); end.

输入:103

输出: 。

Noip2003

阅读程序(共4题,每题8分,共计32分) 1. program Program1;

var a,b,c,d,sum : longint; begin

read(a,b,c,d);

a := a mod 23; b := b mod 28; c := c mod 33; sum := a * 5544 + b * 14421 + c * 1288 - d; sum := sum + 21252; sum := sum mod 21252; if (sum = 0 ) then sum := 21252; writeln(sum); end.

输入:283 102 23 320 输出____________

2. program Program2;

const

u : array[1..4] of integer = (0,5,3,1); v : array[1..4] of integer = (0,7,6,5); var a,b,c,d,e,f,x,y,z: integer; begin

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

z := f+ e + d + (c+3) div 4; y := 5 * d + u[c mod 4]; if (b > y) then begin

z := z + (b - y + 8) div 9;

x := ((b - y + 8) div 9 * 9 -(b - y)) * 4 + 11 * e + v[c mod 4]; end else

x := (y - b) * 4 + 11 * e + v[c mod 4]; if (a > x) then

z := z + (a - x + 35) div 36; writeln(z) end.

输入: 4 7 9 20 56 47 输出____________________ 3. program Program3;

var m,n: integer; mark: Boolean; function test(m,N:integer):integer;

var i,p: integer; flag: boolean; begin

m := m - 1; i := 0; flag := False; for p:= 2*N downto (N+1) do begin

i:= (i+m) mod p; if (i begin

test := 0; flag := Ture; Break; end end;

if not(flag) then test:=1; end; begin

read(n); m:=1; Mark := False; repeat

if (test(m,n)=1) then

begin writeln(m); break; end; m:= m+1;

until Mrak; end.

输入:7 输出_________ 4. program Program4; var m,n,i,j: integer;

p,w,a,b: array[0..19] of integer; begin

read(n); m:= 0;

for i:= 0 to n-1 do

begin read(p[i]); b[i]:=1; end; for i:=0 to n-1 do begin

if (i>0) then

a[m]:=p[i]-p[i-1] else a[m]:=p[i]; m:=m+1;

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

begin m:=m-1; b[m]:=1; end; if (m>0) then w[i]:=b[m-1] else

w[i]:=b[0];

a[m-1]:=a[m-1]-1;

for j:=0 to m-1 do b[j]:=b[j]+1; while ((m>1) and (a[m-1]=0)) do begin

m:=m-1; b[m]:=1; end;

end;

for i:= 0 to n-1 do

begin

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

writeln(' '); end. 输入:9

4 6 6 6 6 8 9 9 9 9 输出:____________________

Noip2002

阅读程序,写出正确的程序运行结果:(8 + 9 + 9 = 26分) 1. program Gxp1;

var i , n , jr , jw , jb : integer ; ch1 : char ;

ch : array[1..20] of char ; begin readln(n);

for i:=1 to n do read(ch[i]); jr:=1; jw:=n; jb:=n; while (jr<=jw) do begin

if (ch[jw]=’R’) then begin

ch1:=ch[jr]; ch[jr]:=ch[jw]; ch[jw]:=ch1; jr:=jr+1; end

else if ch[jw]=’W’ then jw:=jw-1; else begin

ch1:=ch[jw]; ch[jw]:=ch[jb]; ch[jb]:=ch1; jw:=jw-1; jb:=jb-1; end end;

for i:=1 to n do write(ch[i]); writeln; end. 输入:10

RBRBWWRBBR 输出:

2. program Gxp2;

var i , j , s ,sp1 : integer ; p : boolean ;

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

sp1:=1; a[1]:=2; j:=2; while sp1<10 do begin

j:=j+1; p:=true; for i:=2 to j-1 do

if (j mod i=0) then p:=false; if p then begin

sp1:=sp1+1; a[sp1]:=j; end;

end;

j:=2; p:=true; while p do

begin s:=1;

for i:=1 to j do s:=s*a[i]; s:=s+1;

for i:=2 to s-1 do

if s mod i=0 then p:=false; j:=j+1; end;

writeln(s); writeln; end. 输出:

3. Program Gxp2

Var d1 , d2 , X , Min : real ; begin

Min:=10000; X:=3; while X<15 do begin

d1:=sqrt(9+(X-3)*(X-3)); d2:=sqrt(36+(15-X)*(15-X)); if(d1+d2)writeln(Min:10:2); end.

Noip2001

阅读程序,写出程序正确的运行结果(4+7+8+9=28分) 1.PROGRAM GAO7_1:

FUNCTION ACK(M,N:INTEGER):INTEGER; BEGIN

IF M=0 THEN ACK:=N+1

ELSE IF N=0 THEN ACK:=ACK(M-1,1)

ELSE ACK:=ACK(M-1,ACK(M,N-1)) END;

BEGIN WRITELN(ACK(3,4)); READLN; END. 输出

2.PROGRAM GAO7_2;

VAR P,Q,S,T:INTEGER; BEGIN

READLN(P);

FOR Q:=P+1 TO 2*P DO BEGIN

T:=0;S:=(P*Q)MOD(Q-P);

IF S=0 THEN BEGIN T:=P+Q+(P*Q)DIV(Q-P);WRITE(T:4);END; END; END.

输入12 输出 3.PROGRAM GAO7_3;

VAR I,J,H,M,N,K:INTEGER; B :ARRAY[1..10]OF INTEGER; BEGIN

READLN(N);

FOR I:=1 TO 10 DO BEGIN

M:=N;J:=11; WHILE M>0 DO

BEGIN J:=J-1;B[J]:=M MOD 10;M:=M DIV 10 END; FOR H:=J TO 10 DO N:=N+B[H]; END; WRITELN(N); END.

输入1234 输出: 4.PROGRAM GAO7_4;

VAR X,Y1,Y2,Y3:INTEGER; BEGIN

READLN(X);Y1:=0;Y2:=1;Y3:=1; WHILE Y2<=X DO BEGIN

Y1:=Y1+1;Y3:=Y3+2;Y2:=Y2+Y3 END; WRITELN(Y1); END.

输入:23420 输出:

Noip2000

阅读程序,并写出正确的运行结果(每题10分,共20分) PROGRAM NOI_003;

CONST N=7; M=6;

VAR I,J,X0,Y0,X1,Y1,X2,Y2:INTEGER; D:REAL;

P:BOOLEAN;

G:ARRAY[0..N,0..M] OF 0..1;

FUNCTION DISP(X1,Y1,X2,Y2:INTEGER):REAL;

BEGIN DISP:=SQRT((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2)); END;

BEGIN

FOR I:=0 TO N DO FOR J:=0 TO M DO G[I,J]:=0;

READLN(X1,Y1,X2,Y2); G[X1,Y1]:=1; G[X2,Y2]:=1; P:=TRUE; WHILE P DO BEGIN

P:=FALSE; D:=DISP(X1,Y1,X2,Y2); X0:=X1; Y0:=Y1; FOR I:=4 TO N DO FOR J:=0 TO M DO 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; FOR I:=0 TO 3 DO FOR J:=0 TO M DO IF (DBEGIN D:=DISP(X1,Y1,I,J);X0:=I;Y0:=J END; IF (X0<>X2) OR (Y0<>Y2) THEN

BEGIN X2:=X0; Y2:=Y0; P:=TRUE; G[X2,Y2]:=1; END; END; WRITELN(X1,Y1,X2,Y2) END.

输入: 7 6 0 0 输出: 2.

PROGRAM NOI_002;

VAR I,J,L,N,K,S,T:INTEGER; B:ARRAY[1..10] OF 0..9; BEGIN

READLN(L,N); S:=L; K:=1; T:=L; IF N>L THEN BEGIN

WHILE SBEGIN K:=K+1;T:=T*L;S:=S+T END; S:=S-T;N:=N-S-1;

FOR I:=1 TO 10 DO B[I]:=0; J:=11;

WHILE N>0 DO

BEGIN J:=J-1;B[J]:=N MOD L;N:=N DIV L END;

FOR I:=10-K+1 TO 10 DO WRITE(CHR(ORD('A')+B[I])); READLN; END

ELSE WRITELN(CHR(ORD('A')+N-1)) END.

输入 : 4 167 输出:

Noip1999

阅读程序,并写出正确的程序运行结果(每题1.5分,共30分) 1. program exp1;

var i,j,k:integer; a: array[0..100]of integer; Begin

for I:0 to 100 do a[i]:=i

for k:=5 downto 2 do begin

for i:=1 to 100 do if ( i mod k)=0 then a[I]:=0; for i:=1 to 99 do for j:=1 to 100-i do if a[j]>a[j+1]then begin

a[j]:=a[j]+a[j+1]; a[j+1:=a[j]-a[j+1]; a[j]:=a[j]-a[j+1]; end; end;

j:=1;

while (a[j]=0)and (j<100)do j:=j+1;

for i:=j to 100 do a[0]=a[0]+a[i]; writeln(a[0]); End.

本题的运行结果是:

2、设数组A[1],A[2],…,A[N],已存入了数据,调用不同的排序程序,则数据比较的次数将会不同,试计算分别调用下列不同的排序过程的比较运算的次数。其中SWAP(I,J)表示A[I]与A[J]进行交换。

(1)PROCEDURE SORT1(N:INTEGER); VAR I,J :INTEGER ; BEGIN

FOR I:=1 TO N-1 DO FOR J:=1 TO N DO IF A[J] < A[I] THEN SWAP (I,J)

END;

调用该过程的语句为SORT1(N),比较运算的次数为:__________

(2) PROCEDURE SORT2(I,N:INTEGER); VAR J :INTEGER ; BEGIN

IF I= N THEN WRITE(A[N])

ELSE FOR J:=I+1 TO N DO BEGIN

IF A[J] < A[I] THEN SWAP (I,J) WRITE(A[I]); SORT2(I+1,N) END END.

调用该过程的语句为SORT2(1,N),比较运算的次数为:__________

(3)PROCEDURE SORT3(I,J:INTEGER); VAR M :INTEGER ;

BEGIN

IF I〈〉J THEN

BEGIN

M:=(I+J) DIV 2 ; SORT3(I,M);SORT3(M+1,J) ;

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

END;

调用该过程的语句为SORT3(1,N),比较运算的次数为:__________

因篇幅问题不能全部显示,请点此查看更多更全内容

Top