1、D对于已经定义好的标准数学函数 sin(x),应用程序中的语句“y=sin(sin(x);”就是一种递归调用 13一个无法靠自身的控制终止的循环成为“死循环”,例如,在C语言程序中,语句“while(1) printf(“*”);”就是一个死循环,运行时它将无休止地打印*号。下面关于死循环的说法中,只有( )是正确的。A不存在一种算法,对任何一个程序及相应的输入数据,都可以判断是否会出现死循环,因而,任何编译系统都不做死循环检查 B有些编译系统可以检测出死循环 C死循环属于语法错误,既然编译系统能检查各种语法错误,当然也应该能检查出死循环 D死循环与多进程中出现的“死锁”差不多,而死锁是可以检
2、测的,因而,死循环也可以检测的 14在Pascal语言中,表达式 (23 or 2 xor 5)的值是( )。A18 B1 C23 D32 15在Pascal语言中,判断整数a等于0或b等于0或c等于0的正确的条件表达式是( )。Anot (a0) or (b0) or (c0) Bnot (a0) and (b0) and (cCnot (a=0) and (b=0) or (c10) then y:=y+(b*100-a) div (pp4 mod 3*5) else =y+20+(b*100-c) div (pp4 mod 3*5); writeln(x,y);end. 注:本例中,给定
3、的输入数据可以避免分母为0或数组元素下表越界。 输入:6 6 5 5 3 输出:_ 2、program j302;var a,b:var x,y:integer;procedure fun(a,b:integer);var k:begin k:=a;=b;=k; end;=3;=6;=a;=b; fun(x,y); writeln(a,b);输出:_ 3、program j303;var a1:array1.50 of integer;var i,j,t,t2,n,n2: n:=50;=1 to n do a1:=0; n2:=round(sqrt(n);=2 to n2 do if (a1=
4、0) then begin t2:=n div i; for j:=2 to t2 do a1i*j:=1; t:=2 to n do write(i:4); inc(t); if (t mod 10=0) then writeln; writeln;_ _ 4、Program j304;Type str1=string100; Str2=string200;Var S1:str1; s2:str2;Function isalpha(c:char):Boolean;Var i:Begin i:=ord; if (i=65) and (i=97) and (i=48) and (i=57) th
5、en isdigit: else isdigit:procedure expand(s1:var s2:str2);var i,j: a,b,c:char; j:=char(1); while (i=ord(s10) do begin inc(i);=s1; if c=- then begin 1 =s1i-1;=s1i+1; if (isalpha(a) and isalpha(b) or (isdigit(a) and isdigit(b) then begin dec(j); while (ord(upcase(a)ord(upcase(s1i+1) do s2j: inc(j); in
6、c(a); end begin s2j:=c;end1 else begin s2j: s20:=char(j-2);begin readln(s1); expand(s1,s2); writeln(s2);end.wer2345d-h454-82qqq 输出:_ 四、完善程序(前4空,每空2.5分,后6空,每空3分,共28分)。1、(求字符的逆序)下面的程序的功能是输入若干行字符串,每输入一行,就按逆序输出该行,最后键入-1终止程序。 请将程序补充完整。Program j401;type str1=string100;var line: kz:procedure reverse(var s:
7、str1);var I,j:=length(s);j) do begin =s; s:=sj; sj:=t; ; writeln(continue? -1 for end.); readln(kz); while ( )do readln(line); writeln(line);2 2 3 3 2 -1 1 3 4 1 1 5 4 4 5 5 2、(棋盘覆盖问题)在一个2k2 k个方格组成的棋盘中恰有一个方格与其它方格不同(图中标记为-1的方格),称之为特殊方格。现用L型(占3个小方格)纸片覆盖棋盘上除特殊方格的所有部分,各纸片不得重叠,于是,用到的纸片数恰好是(4 k-1)/3。在下表给出
8、的一个覆盖方案中,k=2,相同的3各数字构成一个纸片。 下面给出的程序使用分治法设计的,将棋盘一分为四,依次处理左上角、右上角、左下角、右下角,递归进行。请将程序补充完整。(图画不了.郁闷) Program j402;type arr1=array1.65 of integer; arr2=array1.65 of arr1;var board:arr2; tile: size,dr,dc:procedure chessboard(tr,tc: dr,dc: var size:var t,s: if (size=1) then ;=tile; inc(tile);=size div 2; if
9、 then chessboard(tr,tc,dr,dc,s) else begin boardtr+s-1:if (dr=tc+s) then chessboard(tr,tc+s,dr,dc,s) else begin boardtr+s-1tc+s:if (dr=tr+s) and (dc=tc+s) then chessboard(tr+s,tc+s,dr,dc,s) else begin boardtr+stc+s:procedure prt1(n: for I:=1 to n do begin =1 to n do write(boardj:3); writeln(input si
10、ze(4/8/16/64):); readln(size); writeln(input the position of special block(x,y): readln(dr,dc); boarddrdc:=-1; chessboard(1,1,dr,dc,size); prt1(size); NOIP2007年普及组(Pascal语言)参考答案与评分标准 一、单项选择题:(每题1.5分) 1. D 2. D 3. C 4. B 5. B 6.B 7. B 8. C 9. C 10. A 11. C 12. A 13. A 14. A 15. B 16. D 17. C 18. D 19. A 20. A 二、问题求解:(每题 5分) 190 2210 三、阅读程序写结果 1. 15, 46(对1个数给4分,无逗号扣1分) 2. 3, 6 3. 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 4. wer2345defgh45456782qqq 四、完善程序(前4空(-),每空2.5分,后6空(-),每空3分) (说明:以下各程序填空可能还有一些等价的写法,各省可请本省专家审定和上机验证,不一定上报科学委员会审查) 1 inc(i) 或i:=i+1 dec(j) 或 j:=j-1 kzy) or
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1