|
一、选择题 1.下面对数组类型定义描述正确的是( ) A)数组的下标类型是有序类型 B)一个数组中的各元素类型可以不一样 C)数组的下标类型若为整型,则其上界一定要大于下界 D)PASCAL语言数组下标的下界要大于等于零
2.设有说明var a:array["a".."z"] of real; 则a数组是( ) A)一个存放字符数据的数组 B)一个存放实型元素的数组 C)一个具有20个数据的数组 D)能够存放26个元素的数组
3.设有如下说明: 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)or not(x[a+b]>(a+b))的值是: A)true B)false C)0 D)1 4.已有数组说明:var a:array[1..10] of integer; a[1] a[2] .................................a[10]7 6 4 3 5 2 14 11 9 1
执行语句writlen(a[a[7] div a[3]])后的输出结果是: A)4 B)6 C)3 D)14
5.已知有说明:VAR a:array[1..10]of integer; k,i:Integer; 下面程序段: For i:=1 T0 10 DO IF a[i]>a[k] then k:=i; writeln(a[k]); 输出的是 A)数组中数的平均值 C)数组中数的最小值 B)数组中数的总和 D)数组中数的最大值
6.如果计算机中4个字节存放一个实型数,若有说明: VAR A:ARRAY[1..10] OF Real; 则数组A需占用的存储区域是 A)10字节 B)20字节 C)80字节 D)40字节
二、看程序写结果
1.
var a:array[-3..3] of integer; i,k:integer; begin k:=0; for i:=-3 to 3 do if i<0 then a[i]:=k+1 else a[i]:=k+2; writeln(a[3]-a[-3]) end. output:
2.var a:array[1..30] of longint; n,i:integer; begin readln(n); a[1]:=0;a[2]:=1; for i:=3 to n do a[i]:=a[i-1]+a[i-2]; for i:=1 to n do write(a[i]:8); writeln end. 输入:10
输出:
3.
var i,s,max:integer;a:array[1..10] of integer; begin for i:=1 to 10 do read(a[i]); max:=a[1];s:=a[1]; for i:=2 to 10 do begin if s<0 then s:=0; s:=s+a[i]; if s>max then max:=s end; writeln(‘max=’,max) end. 输入:-2 13 –1 4 7 8 –1 –18 24 6
输出:max=
4.
var a:array["a".."z"] of integer; b:char; begin repeat read(b); if (b>="a")and(b<="z") then a[b]:=a[b]+1; until b="?"; for b:="a" to "z" do if a[b]<>0 then write(b,":",a[b]," ") end. 输入:how many apples are there on the table? 输出:
5.
var a:array[1..10] of integer; i,j,temp:integer; begin for i:=1 to 10 do read(a[i]); for i:=1 to 9 do for j:=i+1 to 10 do if a[i]<a[j] then begin temp:=a[i];a[i]:=a[j];a[j]:=temp end; for i:=1 to 10 do write(a[i]:8); writeln end. 输入:87 65 35 156 5 54 7 68 9 81
输出:
6.
var a:array[0..1000] of integer; k,i,n,j:integer; begin readln(n,k); j:=0; while n>=k do begin a[j]:=n mod k; n:=n div k; j:=j+1 end; a[j]:=n; write(n,",",k,":"); for i:=j downto 0 do write(a[i]:2); writeln end. 输入:1288 3 输出:
三、填空题:请将每空的正确答案写在横线上
下面的程序从键盘接收任意6个数放入数组A中,假设这6个数为:8 1 4 2 5 6 ,则要输出一个具有如下内容的方阵。 8 1 4 2 5 6 6 8 1 4 2 5 5 6 8 1 4 2 2 5 6 8 1 4 4 2 5 6 8 1 1 4 2 5 6 8 var a:array[1..6] of integer; i,j,k:integer; begin for i:=1 to 6 do read(__________); for i:=1 to 6 do begin if i=1 then k:=1 else k:=____________; for j:=1 to_________do begin write(a[k]:2); if k=6 then k:=1 else k:=______________ end; writeln end end.
下面的程序将n个学生的英文成绩从键盘输入,按0—59分、60—69分、70—79分、80—89分和90—100分分组统计人数。 const n=20; var i,k:integer;
s:array[1..5]of integer;
a:array[l..n]of integer;
begin
for i:=1 to _____ do
s[i]:=0;
for i:=1 to _____ do
begin
_______________;
if a[i]>=90 then k:=1
else if a[i]>=80 then k:=2
else if a[i]>=70 then k:=3
else if a[i]>=60 then k:=4
else k:=5;
s[k]:=_______
end;
for i:=1 to 5 do write(a[i]:4);
writeln
end.
四、编写程序 1.随机产生20个100以内的数,输出;按从小到大的顺序排序,输出。
2.判断一字符串是否是回文数,如121、12321、ABA等(字符串输入时以‘.’结束)。 如输入:12321. 输出:yes
3.围绕着山顶有10个洞,一只兔子和一只狐狸住在各自的洞里,狐狸总想吃掉兔子,一天兔子对狐狸说,你想吃我有一个条件,你先把洞编号1到10,你从第10洞出发,先到第1号洞找我,第二次隔一个洞找我,第三次隔两个洞找我,以后依次类推,次数不限,若能找到我你就可以饱餐一顿,在没找到我之前不能停止,狐狸一想只有10个洞,寻找的次数又不限,哪有找不到的道理,就答应了条件,结果狐狸跑得昏了过去也没找到兔子,请问兔子躲在哪个洞里。程序中可假定狐狸找了1000次。
4.求一个5 X 5数阵中的马鞍数,输出它的位置。所谓马鞍数,是指在行上最小而在列上最大的数。如下: 5 6 7 8 9 4 5 6 7 8 3 4 5 2 1 2 3 4 9 0 1 2 5 4 8 则1行1列上的数就是马鞍数。
5、验证数学黑洞:所有四位数,除了数字全相同的外,其它的,经过不多于七次的下列操作,一定可以得到6174;并且,一旦得到6174之后,就掉进黑洞,再也得不到其它的数(6174:7641-1467 = 6174): 将这个四位数的数字按从大到小和从小到大重组成两个数,大数减去小数。 例:输入3214 (1)4321 - 1234 = 3087 (2)8730 - 378 = 8352 (3)8532 - 2358 = 6174 |