阅读下列对线性表操作的3个子列程的流程图 ,选答案填入A-E
[ 说明 ]在主存储器中有一个右图所示的表格结构,表格的每个元素由值(V)和
指针(P)两部分组成,在表格中以链接方式存放着一个线性表(LINEAR LIST) L,
它的第一个元素的位置放在LP中.表格中全部空闲元素也链接成一个线性表E,它
的第一个元素位置存放在cp中两个线性表最後壹个元素指针全是0
(1)子例程ENTER(U,M) (2)子例程 FIND<U,M) (3) 子例程 DELETE(M)
在线性表L 中位于M 从线性表L中找出第一 从至少有两个元素的线
(M<>0)处的元素之后插 个其值为U的元素,把位置 性表L中删除紧接在位置M
入一个以U为值的结点. 放入M. 没有以U为值的元 之后的一个元素. 把删除
素时,把M置为O. 的元素放进线性表E中.
供选答案 A,B,C,D,E:
(1)M->P(M) (2)P(M)->M (3)P(M)->P(I) (4)P(I)->P(M) (5)CP->P(I)
(6)P(I)->CP (7)I->CP (8)CP->I (9)I->P(M) (10)P(M)->I
试题二 (15分)
[程序的说明]本程序输入字符序列,直到26个大写字母均出现为止.程序输出已
输入的字符的总个数和各大写字母首次输入时的序号,对于最现出现的五个不同
大写字母还要输出它们在已输入序列中出现的次数.
PROGRAM ALPHABET (INPUT,OUTPUT);
VAR C:CHAR; N,M:INTEGER;
S,SL:____________ ;
p,g:array ['A'..'Z'] of integer;
begin
s:=______________ ; sl:=[]; n:=0 ; _____________;
for c:= 'A' to 'Z' do
begin g[c]:=0; p[c]:=0 end;
reprat read (c);____________;
if ________ then
begin s:=s-[c]; p[c]:=n;
IF m<=5 then
begin sl:=_____________; m:=m+1; end
end
if ______________ then g[c]:=g[c]+1
until_____________;
writeln;
writeln (n,'CHARACTER COUNTED');
FOR C:='A' TO 'Z' do
begin write (c,p[c]:8);
if g[c]<>0 then write(g[c]:8);
end
end.
试题三 (20 分)
[程序说明] 本程序按照学生学号的顺序输入学生的成绩,按照分数从高到低的顺
序输出学生的名次,该名次的分数,同一名次的人数和学号(每行最多输出10个学号).
程序中用MARK和NO分别表示学生分数和学号.
PROGRAM exam(input,output);
const m=1000;
type st=record
mark:0..100;
no:integer
end;
sttype=array [1..m] of st;
var a:sttype; q,i,j,k,p,w,n:integer; b:boolean;
procedure sorter (var a:sttype; n:integer);
var i,j:integer; w:st; b:boolean;
begin b:=true; i:=1 ;
while (i<n) and b do
begin b:=false;
for j:=n downto ___ do
if __________ then
begin w:=a[j-1] ; a[j-1]:=a[j];
a[j]:=w; ________
end;
i:=i+1;
end
end;
begin read(n);
if n<=m then
begin
for i:=1 to n do
begin read (a,mark); a.no:=i end;
_______________; i:=1; j:=0;
writeln ('ORDER','MARK',' COUNT ', 'NUMBRE');
while i<=n do
begin J:=J+1 ;w:=a.mark; p:=i+1; b:=true;
while b and (p<=n) do
if __________________then p:=p+1 else b:=false;
write ( j:6,' ',w:4, ' ',(p-i):5, ' ':3);
k:=0;
for q:=i to p-1 do
begin if k=10 then
begin writeln ; write (' ':20 ); k:=0 end;
write(a[q].no:5); k:=k+1
end;
writeln; _____________________
end
end else writeln ('ERROR')
end.
试题四 (25分)
[程序说明] 过程MULITICOM用于比较两个由链表(LINKED LIST)表示整数的大小,
其中过程C的功能是比较两个数的绝对值大小,程序中用PLUS 和MINUS分别表示正
和负,用IT,EQ和GT分别表示小于,等于和大于.用SING,SIZE 分别表示数的符号和
位数,整数高位无意义的零在链表中没有表示
type signtype=(plus,minus);
relation=(lt,eq,gt);
listptr=^node;
node=record
item:0..9;
next:listptr
end;
multi=record
sign:signtype;
size:1..maxint;
value:listptr
end;
procedure multicom (var r:relation; m1,m2:multi);
procedure c(p1,p2:listptr);
begin
if p1=nil then r:=sq* else begin
c(pl^.next,p2^.next);
if r=eq then
if_____________________________then r:=lt
else if _______________________then r:=gt
end
end;
begin
if m1.sign<>m2.sign
then if_____________________
then r:=gt else r:=lt
else if m1.size<>m2.size
then if ______________________________________
then r:=gt else r:=lt
else if m1.sign=plus
then _______________________________
else _______________________________
end;
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/