19
程程程程

程序阅读

Embed Size (px)

DESCRIPTION

程序阅读. 程序阅读题的特点. 不会告诉你程序的功能 按要求直接写出程序的运行结果。运行结果通过 write 或 writeln 语句输出。 多数情况下需要选手揣摩题目中包括的算法 , 而有些算法在教科书中找不到. 程序阅读题的两种分析法. 模拟法:手工模拟程序的运行,当程序不太复杂时,它是一种有效的方法,理论上可以得出任何程序的运行结果。 具体分析时,必须 跟踪 程序运行时各变量的变化。 “有意义”分析法:找到某一程序段所实现的功能,简化分析。这是一种高效的方法,但不容易找到规律。. 举几个例子说明. program Programl ; var - PowerPoint PPT Presentation

Citation preview

Page 1: 程序阅读

程序阅读

Page 2: 程序阅读

程序阅读题的特点• 不会告诉你程序的功能• 按要求直接写出程序的运行结果。运行结

果通过 write 或 writeln 语句输出。• 多数情况下需要选手揣摩题目中包括的算

法 , 而有些算法在教科书中找不到 .

Page 3: 程序阅读

程序阅读题的两种分析法• 模拟法:手工模拟程序的运行,当程序不

太复杂时,它是一种有效的方法,理论上可以得出任何程序的运行结果。

具体分析时,必须跟踪程序运行时各变量的变化。

• “ 有意义”分析法:找到某一程序段所实现的功能,简化分析。这是一种高效的方法,但不容易找到规律。

Page 4: 程序阅读

举几个例子说明program Programl ;  var   a , x, y, okl , ok2 : integer ;  begin   a : =100 :   x : =l0 ;   y : =20 ;   okl : =5 :   ok2 : =0 ;   if ((x>y) or ((y<>20) and (okl=0)) and (ok2<>0)) then   a : =1   else if ((okl<>0) and (ok2=0)) then      a : =-1   else      a : =0 ;   writeln(a) ;  end . 输出:    

Page 5: 程序阅读

Answer

-1

Page 6: 程序阅读

var a, b : integer;begin

read(a);b := (a * (a * a)) + 1;if b mod 3 = 0 then b := b div 3;if b mod 5 = 0 then b := b div 5;if b mod 7 = 0 then b := b div 7;if b mod 9 = 0 then b := b div 9;if b mod 11 = 0 then b := b div 11;if b mod 13 = 0 then b := b div 13;if b mod 15 = 0 then b := b div 15;writeln((100 * a - b) div 2);

end.输入: 10输出:

Page 7: 程序阅读

Answer

499

Page 8: 程序阅读

program Program2 ;  var   a , t : string ;   i , j : integer ;  begin

   a : =‘morning’ ;   j : = 1 ;   for i : =2 to 7 do    if (a[j]<a[i])then      j : = i ;   j : = j-1 ;   for i : =1 to j do    write (a[i]) ;   end . 输出:

Page 9: 程序阅读

Answer

mo

Page 10: 程序阅读

Program ex301; var u:array[0..3] of integer;

i,a,b,x,y:integer; begin

y:=10; for i:=0 to 3 do

read(u[i]); a:=(u[0]+u[1]+u[2]+u[3]) div 7; b:=u[0] div ((u[1]-u[2]) div u[3]); x:=(u[0]+a+2)-u[(u[3]+3) mod 4]; if (x>10) then

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

y:=y+20+(b*100-u[3]) div (u[u[0] mod 3]*5); writeln (x,',',y);

end. {* 注:本例中,给定的输入数据可以避免分母为 0 或下标越界。 }

输入: 9 3 9 4 输出: _______________

Page 11: 程序阅读

Answer

10,10

Page 12: 程序阅读

Program ex303; const

NN=7; type

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

s:arr1; k,p:integer;

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

j:integer; begin

j:=n; while (a<s[j])and(j>0) do dec(j); fun:=j;

end; begin

for k:=1 to NN do s[k]:=chr(ord('A')+2*k+1);

k:=fun(s,'M',NN); writeln(k);

end. 输出: _____________

Page 13: 程序阅读

Answer

5

Page 14: 程序阅读

Program ex302; 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. 输出 :____________________

Page 15: 程序阅读

Answer

6 28 496 8128 33550336

Page 16: 程序阅读

prgoram chu7_4 ;  var n , k , i : integer ;    a : array[1..40]of integer ;  procedure find(x : integer) ;   var s , i1 , j1 : integer ;       p : boolean ;   begin     i1:=0 ;     p:=true ;     while p do      begin       i1:=i1+1 ;       s:=0 ;       for j1:=1 to n do         if a[j1]>a[i1]then s:=s+1 ;       if(s=x-1)then        begin         writeln(a[i1]) ;         p:=false        end ;       end      end ;   begin    readln(n , k) ;    for i:=1 to n do      read(a[i]) ;    find(k) ;    find(n-k) ;end.输入: 10 4    12 34 5 65 67 87 7 90 120 13输出:

Page 17: 程序阅读

Answer

67

34

Page 18: 程序阅读

program ex304;

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<x) do x2:=x2*10;

x2:=x2 div 10;

digit(x,x2);

writeln;

end.

输入: 9734526

Page 19: 程序阅读

Answer

6 2 5 4 3 7 9 9 7 3 4 5 2 6 (数字之间无空格扣 2 分)