摘要:下面是希赛小编为大家整理的软考初级程序员下午试题,希望能帮助学友们,祝所有考生们顺利通过考试。
2016下半年软考考前串讲网络班特惠开班!讲师解析知识点,赠送历年真题!
下面是希赛小编为大家整理的软考初级程序员下午试题,希望能帮助学友们,祝所有考生们顺利通过考试。
试题一(15分)
阅读下列对线性表操作的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<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用于比较两个由链表(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;
软考备考资料免费领取
去领取