• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

1987年程序员水平考试——下午试题

发布: 2007-5-26 13:59 | 作者: 未知 | 来源: 互联网 | 查看: 33次 | 进入软件测试论坛讨论

领测软件测试网 试 题 一(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,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/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网