一、单项选择题(2×20=40)1、数学表达式sin(60o)的正确PASCAL表达式是 ( )。
A) sin(60) B) sin(3.14159*60)C) sin(3.14159*60/180)D) sin(60*3.14159/360)2、下列表达式中正确的是 ( )。
A) 8/2 mod 2 B) not(1=0) and (3>2)C) 'a'+2 D) 2+false3、当n为任意正奇数时,值总为true的表达式是( )。
A) n mod 2=0 B) n div 2=1C) n-(n div 2)=1D)n-trunc(n/2)*2=14、表达式Pred(Chr(Ord('A ')+4))的值是( )。
A) 'C ' B) 'D 'C) 69 D) 705、已知有说明const a=1; b=2; c=3; d=4;var w,x,y,z:integer;执行语句 x:=a; x:=c; y:=a+2; z:=b;w:=d-a+b; 后,其值相等的变量是()。
A) x,y B) x,zC) x,w D) y,z6、程序段: for i:=1 TO 5 dofor j:=2 TO i dow riteln(‘A’);输出字符A的个数是()。
A) 10 B) 15 C) 20 D) 257、设数组a和变量i,j,k,m,n,均已说明,且各自赋值如下i=1; j=2; k=3; m=4; for n:=1 to 9 do a[n]:=n;下面数组元素的值等于3的是()。
A) a[i*j] B) a[m div j]C) a[a[j+k-2]] D) a[a[k-i]+3]8、有下面程序段:a:=false; b:=false; c:=false;x:=15;if a then x:=x-10else if b then x:= x-5else if c then x:=20 else x:=25;假设所有变量均已说明,程序运行后x的值是()。
A) 25 B) 20 C) 15 D)59、程序段i:=1;REPEATn:=i*i; i:=i+1;UNTIL n>i中循环体执行的次数是()。
A)1 B)2 C)3 D)4 10、已知数组a中,每个元素a[i,j]在存储时要占3个字节,设i从1变化到8,j从1变化到10,分配内存时是从地址sa开始连续按行存储分配的。
试问:a[5,8]的起始地址为()A)sa+141 B)sa+180C)sa+222 D)sa+22511、有下列程序段for i:=1 to 10 docase i mod 4 of0: ch[i]:=’a’;1: ch[i]:=’b’;2: ch[i]:=’c’;3: ch[i]:=’d’end;for i:=10 downto 1 dowrite(ch[i]:1); writeln;运行后输出结果是()。
A)abcdabcdab B) bcdabcdabcC) cbadcbadcb D) dcbadcbadc12、有下面程序VAR a:array[1..2,1..3]of integer;i,j:Integer;BEGINfor i:=1 to 2 do for j:=1 to 3 do read(a[i,j]);readln;顺德华侨中学信息学奥赛辅导班测试题(6)for i:=1 to 3 do for j:=1 to 2 do write(a[j,i]:3);writelnEND.此程序执行时若从键盘输入1 2 3 4 5 6,则输出是()。
A) 1 2 3 4 5 6 B) 1 4 2 5 3 6C) 4 5 6 1 2 3 D) 5 3 6 1 4 513、下列符合Pascal语法规则的过程或函数是()。
A)FUNCTION f(x:integer):integer;B) PROCEDURE p(var x:integer):integer; VAR y:Integer; VAR y:Integer;BEGINBEGINy:=3*x+2;x:=y+1;f:=y;writeln(x);END; END;C) PROCEDURE p(x:integer);D) FUNCTION f(x:integer);BEGINp: =x+10;f:=x+10;END;14、有如下程序VAR a:array[1..3] of integer;i,j:integer;BEGINfor i:=1 to 3 do a[i]:=i;i:=1; j:=3;repeata[i]:=a[j]+l; i:=i+l;j:=j-1;until i>3;for i:=1 to 3 do write(a[i]:5);END.该程序的运行结果是()。
A) 4 3 2 B) 2 3 4C) 4 5 3 D) 4 3 515、设有下列函数说明FUNCTION func(n:integer):integer; beginif n=0 then func:=0else if n=1 then func:=2elsefunc:=func(n-1)+func(n-2)END;表达式func(5)的值是()。
A) 6 B) 8 C) 10 D)1216、有下列程序VAR a,b,c:integer;PROCEDURE p(a,b:integer; varc:integer);BEGINc:=a+b+c;b:=b-3;END;BEGINa:=5;b:=8;c:=3;p(a,b,c); writeln(a:4,b:4,c:4); END.该程序执行后,正确的输出结果是()。
A) 5 8 3 B) 5 8 16C) 5 8 5 D) 5 5 1617、设有类型说明type arr=array[1..10] of char;请阅读下面过程PROCEDURE proc(var a:arr);VAR n,k:Integer;BEGINn:=o rd(‘a’)-o rd(‘A’);for k:=1 to 10 doif a[k] in [‘a’..’z’] thena[k]:=chr(ord(a[k]-n);END;此过程的功能是( )。
A)把a中的所有小写字母变成大写字母B)把a中的所有小写字母变成大写,大写字母变成小写C) 把a中的所有大写字母变成小写字母D) 把a中的每个字符按ASCII码顺序改为它前面的第n个字符18、设有如下说明:const a=1;b=2;c=3;var x:array[1..5] of integer;且已知x[1]:=1;x[2]:=7;x[3]:=9;x[4]:=1;x[5]: =6;则表达式:(x[b]-1>x[5])and(x[c]>0)ornot(x[a+b]>(a+b))的值是:A)true B)false C)0 D)119、已知有说明:VAR a:array[1..10]of integer;k,i:Integer;下面程序段:For i:=1 T0 10 DOIF a[i]>a[k] then k:=i;writeln(a[k]);输出的是A)数组中数的平均值B)数组中数的总和C)数组中数的最小值D)数组中数的最大值20、如果计算机中4个字节存放一个实型数,若有说明:VAR A:ARRAY[1..10]OF Real;则数组A需占用的存储区域是A)10字节 B)20字节 C)80字节D)40字节二、阅读程序(15×3=45)1、program t5;vara,t:string;i,j,q,l,code:integer;b:array[1..9] of integer;beginwriteln('l=');read(l);a:='1234567890123';for i:=1 to 9 dobegint:=copy(a,i,l);val(t,b[i],code);end;for i:=1 to 9 dobeginq:=0;for j:=2 to b[i]-1 doif b[i]-trunc(b[i]/j)*j =0 then q:=1;if (b[i]<>1)and (q=0)then write(b[i],' '); end;end.输入:2输出:23 67 89点评:数组b依次赋值12,23,34,……,89,90.注意理解b[i]-trunc(b[i]/j)*j =0其实就是判断b[i]能整除j,而j从2变化到b[i]-1,于是就是判断b[i]是否为质数。
最后输出为质数的b[i]。
2、program yd;varn, i, t: longint;tem: integer;s: string;beginwrite('Input n: '); readln(n);s:='1';repeati:= length(s);while s[i] ='1' dobegins[i]:= '0' ;dec(i);end;if i>0 then s[i]:='1'else s:= '1' +s;val(s,t,tem);until t mod n = 0;writeln(n,'*',t div n,'=',s);end.输入:6输出:6*185=11103、program yd;varm ,n,s: longint;procedure pl(n: longint);beginif n< >0 thenbeginpl(n div 2);s:=(s*2+n mod 2 *m) mod 1023endend;beginm:=2002; n:=5871; s:=0;pl(n);writeln(s);end.输出:__495__三、完善程序(3×5=15)1、下面程序段打印101—200之间所有既能被3整除也能被8整除的数,请填空完成。
x:=101;while x<=200 dobeginif ①then write(x:3);②end;2、计算1/(1*3)-1/(3*5)+1/(5*7)-1/(7*9)+…+1(17*19),请将下面的程序补充完整。
program e4_3 (input,output);vart,b:integers:realbegins:=0;t:=1;b:= -1;write t<=17 dobeginb:=____________③;s:=____________④;t:=____________⑤;end;writeln('s=',s);end.答题卡二、阅读程序(15×3=45)1、23 67 892、 6*185=11103、 495三、完善程序(3×5=15)① x mod 3=0 and x mod 8=0② x:=x+1③ -b④ s+b/(t*(t+2))⑤ t+2。