一、选择题
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列上的数就是马鞍数。