閱讀下列對(duì)線性表操作的3個(gè)子列程的流程圖 ,選答案填入A-E
[ 說明 ]在主存儲(chǔ)器中有一個(gè)右圖所示的表格結(jié)構(gòu),表格的每個(gè)元素由值(V)和
指針(P)兩部分組成,在表格中以鏈接方式存放著一個(gè)線性表(LINEAR LIST) L,
它的第一個(gè)元素的位置放在LP中.表格中全部空閑元素也鏈接成一個(gè)線性表E,它
的第一個(gè)元素位置存放在cp中兩個(gè)線性表最後壹個(gè)元素指針全是0
(1)子例程ENTER(U,M) (2)子例程 FIND
在線性表L 中位于M 從線性表L中找出第一 從至少有兩個(gè)元素的線
(M<>0)處的元素之后插 個(gè)其值為U的元素,把位置 性表L中刪除緊接在位置M
入一個(gè)以U為值的結(jié)點(diǎn). 放入M. 沒有以U為值的元 之后的一個(gè)元素. 把刪除
素時(shí),把M置為O. 的元素放進(jìn)線性表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個(gè)大寫字母均出現(xiàn)為止.程序輸出已
輸入的字符的總個(gè)數(shù)和各大寫字母首次輸入時(shí)的序號(hào),對(duì)于最現(xiàn)出現(xiàn)的五個(gè)不同
大寫字母還要輸出它們?cè)谝演斎胄蛄兄谐霈F(xiàn)的次數(shù).
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 分)
[程序說明] 本程序按照學(xué)生學(xué)號(hào)的順序輸入學(xué)生的成績(jī),按照分?jǐn)?shù)從高到低的順
序輸出學(xué)生的名次,該名次的分?jǐn)?shù),同一名次的人數(shù)和學(xué)號(hào)(每行最多輸出10個(gè)學(xué)號(hào)).
程序中用MARK和NO分別表示學(xué)生分?jǐn)?shù)和學(xué)號(hào).
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 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[i],mark); a[i].no:=i end; _______________; i:=1; j:=0; writeln ('ORDER','MARK',' COUNT ', 'NUMBRE'); while i<=n do begin J:=J+1 ;w:=a[i].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用于比較兩個(gè)由鏈表(LINKED LIST)表示整數(shù)的大小, 其中過程C的功能是比較兩個(gè)數(shù)的絕對(duì)值大小,程序中用PLUS 和MINUS分別表示正 和負(fù),用IT,EQ和GT分別表示小于,等于和大于.用SING,SIZE 分別表示數(shù)的符號(hào)和 位數(shù),整數(shù)高位無意義的零在鏈表中沒有表示 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;