1996年高级程序员级下午试题Word文档格式.docx

上传人:b****5 文档编号:19493255 上传时间:2023-01-06 格式:DOCX 页数:17 大小:60.38KB
下载 相关 举报
1996年高级程序员级下午试题Word文档格式.docx_第1页
第1页 / 共17页
1996年高级程序员级下午试题Word文档格式.docx_第2页
第2页 / 共17页
1996年高级程序员级下午试题Word文档格式.docx_第3页
第3页 / 共17页
1996年高级程序员级下午试题Word文档格式.docx_第4页
第4页 / 共17页
1996年高级程序员级下午试题Word文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

1996年高级程序员级下午试题Word文档格式.docx

《1996年高级程序员级下午试题Word文档格式.docx》由会员分享,可在线阅读,更多相关《1996年高级程序员级下午试题Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

1996年高级程序员级下午试题Word文档格式.docx

25

22

4

5

6

7

19

20

21

N=4时

N=5时

填充流程图中的①~⑥使之成为完整的流程图。

若将数字1,2,…,N2按顺时针方向依次写在N*N矩阵中,则只需将上述流程图中的__⑦__改成__⑧__即可。

【流程图】 

 

注:

图中[W]表示不大于W的最大整数。

 

试题三

阅读以下说明和E-R图,回答问题,讲解答写在答卷的对应栏内。

设有下列关于运动会管理系统的E-R图。

图中矩形表示实体,圆表示属性,双圆表示关键字属性,菱形表示实体之间的关系。

假定已通过下列SQL语言建立了基本表:

CREATETABLEATHLETE

(ANOCHAR(6)NOTNULL,

ANAMECHAR(20),

ASEXCHAR

(1),

ATEAMCHAR(20));

CREATETABLEITEM

(INOCHAR(6)NOTNULL,

INAMECHAR(20),

ITIMECHAR(10),

IPLACECHAR(20));

CREATETABLEGAMES

INOCHAR(6)NOTNULL,

SCORRECHAR(10));

为了答题的方便,图中的实体和属性同时给出了中英文两种名字,回答问题时只需写出英文名即可。

【E-R图】

【问题】

填充下列SQL程序3.1~3.4中的①~⑦,使它们分别完成相应的功能:

程序3.1:

统计参加比赛时运动员人数

SELECT__①__

FROMATHLETE

WHEREASEX='

M'

程序3.2:

查100872号运动员参加的所有项目及其比赛时间和地点

SELECTITEM,INO,INAME,ITIME,IPLACE

FROMGAMES,ITEM

WHERE__②__

AND__③__;

程序3.3:

查参加100035项目的所有运动员名单

SELSECTANO,ANAME,ATEAM

WHERE__④__

(SELECT__⑤__

FROMGAMES

WHEREGAMES.ANO=ATHLETE.ANO

ANDINO='

100035'

);

程序3.4:

建立运动员成绩视图

__⑥__ATHLETE_SCORE

ASSELECTATHLETE,ANO,ANAME,ATEAM,INAME,SCORE

FORM__⑦__

WHEREATHLETE,ANO=GAMES,ANO

ANDGAMES.INO=ITEM.INO;

试题四为必答题。

试题四

在COMET型计算机上可以使用试卷上所附的CASL汇编语言。

阅读下列程序说明和CASL程序,将应填入程序中__?

__处的字句,写在答卷的对应栏内。

【程序说明】

子程序OFFSET用二分法,查找无符号整数M在一个长度为N的有序(升序)无符号整数列表NTABLE中的位置。

程序中标号为LOW和UP的两个存储字分别用作存放查找区间的上下限。

进入子程序时,在GR1中给出存放子程序所需参数的起始地址。

参数的存放次序如下:

(GR1)+0 

M

N

NTABLE的首址

从子程序返回时,GR0中存放查找结果,即M在此有序表中的位置序数,如表中找不到M,则GR0中返回0,其它寄存器的内容保持不变。

[程序]

START

OFFSET

PUSH

0,GR2

0,GR3

LD

GR0,0,GR1

LEA

GR2,0

ST

GR2,LOW

___

(1)___

___

(2)___

GR2,UP

LOOP

ADD

SRL

GR2,1

GR3,0,GR2

___(3)___

___(4)___

JZE

FOUND

JPZ

INCLOW

GR2,-1,GR2

M<

NTABLE(K)

JMP

CMPLU

GR2,1,GR2

M>

NTABLE(K)

K+1→LOW

___(5)___

CPL

___(6)___

___(7)___

GR0,1,GR2

POP

GR3

GR2

RET

LOW

DS

UP

END

从下列的2道试题(试题五至试题六)中任选1道解答。

如果解答的试题数超过1道,则解答的前1道有效。

试题五

阅读以下程序说明和C程序,将应填入程序中__?

本程序是一个简单的计算器模拟程序。

对任意给定的正确四则运算表达式,程序计算其结果值并输出。

表达式中运算分量为无正负号整数,运算符为+、_、*、/,圆括号按常规配对,表达式以字符"

="

结束。

函数getach()为获取表达式的一个合法字符,并将字符存入变量curch;

函数指针数组func[]是为了统一加减乘除计算而设置的。

【程序】

#include<

stdio.h>

intadd(intx,inty){returnx+y;

}

intsub(intx,inty){returnx-y;

intmul(intx,inty){returnx*y;

intdiv(intx,inty){returnx/y;

int(*func[])()={add,sub,mul,div};

intnum,curch;

charchtbl[]="

+-*/()="

;

charcorch[]="

+-*/()=0123456789"

intgetach()

{inti;

while

(1)

{curch=getchar();

if(curch==EOF)return-1;

for(i=0;

corch[i]&

&

curch!

=corch[i];

i++);

if(i<

strlen(corch))break;

returncurch;

intgetid()

if(curch>

='

0'

&

curch<

9'

{for(num=0;

curch>

getach())

num=__①__;

return-1;

else{for(i=0;

chtbl[i];

i++)

if(chtbl[i]==curch)break;

if(i<

=5)getach();

returni;

intcal()

{intx1,x2,x3,op1,op2,i;

i=getid();

if(i==4)x1=cal();

elsex1=um;

op1=getid();

if(op1>

=5)returnx1;

if(i==4)x2=cal();

elsex2=num;

op2=getid();

while(__②__)

{i=getid();

if(i==4)x3=cal();

elsex3=num;

if((op1/2==0)&

(op2/2==1))

x2=(*func[op2](x2,x3));

else{x1=__③__;

x2=x3;

__④__;

op2=getid();

return__⑤__(x1,x2);

voidmain()

{intvalue;

printf("

Pleaseinputanexpression:

\n"

getach();

while(curch!

='

{value=cal();

Theresultis:

%d\n"

value);

试题六

阅读下列程序说明和FORTRAN程序,将应填入程序中__?

__处的字句,写在答卷纸的对应栏内。

【程序说明】

子程序SUM计算数列

1,1/2,1/3,…,1/n,…

的前n项和,并以M位小数形式输出(M≤60)。

为提高计算结果的精度,用分数形式计算并存放数列的部分和,求和结果记为

A+U/V

其中U/V是不可约真分数,A为整数。

例如:

n=5,M=10时,子程序输出为

1+1/2+1/3+1/4+1/5=2+17/60

2.283333333

整型函数GCD用辗转相除法计算U和V的最大公约数。

SUBROUTINESUM(N,M)

INTEGERA,U,V,G,D(60),GCD

A=1

U=0

V=1

DO20K=2,N

U=__①__

V=__②__

A=__③__

U=MOD(U,V)

__④__

U=U/G

V=V/G

20 

CONTINUE

WRITE(*,100)N,A,U,V

100 

FORMAT(1X,'

1+1/2+1/3+…+1/'

I2,'

+'

I10,'

/'

I10)

DO40I=1,M

D(I)=__⑤__

__⑥__

40 

WRITE(*,200)A,(D(I),I=1,M)

200 

FORMAT(1X,I2,'

.'

60I1)

INTEGERFUNCTIONGCD(U,V)

INTEGERU,V

K=V

L=U

10 

IF(MOD(K,L).GT.0)THEN

J=MOD(K,L)

K=L

L=J

GOTO10

ENDIF

__⑦__

从下列的2道试题(试题七至试题八)中任选1道解答。

试题七

阅读下列程序说明和C程序,将应填入程序中__?

本程序先从文件读入各考生的准考证号(设为整型数)及成绩,并将其存放在一棵检索二叉树上,二

叉树的结点的键值是成绩,二叉树每个节点带一链表,链表结点存放取得该成绩的考生的准考证号。

然后,程序按中序遍历检索二叉树,从高到底分输出结果,使每行输出某成绩及其取得该成绩的各考生的准考证号。

typedefstructidnode{

intid;

structidnode*next;

}IdNode;

typedefstructmarknode{

intmark;

IdNode*head;

structmarknodeleft,right;

}MarkNode;

charfname[]="

sp07.dat"

'

main()

{intid,mark;

MarkNode*root=null;

FILE*fp=fopen(fname,"

r"

if(!

fp){

file%sopenerror.\n"

fname);

exit(0);

while(!

feof(fp)){

fscanf(fp,"

%d%d"

&

id,&

mark);

btree(&

root,id,mark);

fclose(fp);

print(root);

btree(MarkNode**mpptr,intid,intmark)

{IdNode*ip;

MarkNode*mp=mpptr;

if(__①__){

if(mark==mp->

mark)addIdNode(__②__,id);

elseif(mark>

mp->

mark)btree(&

left,id,mark);

elsebtree(&

right,id,mark);

}else

{mp=(MarkNode*)malloc(sizeof(MarkNode));

mark=mark;

left=mp->

right=NULL;

__③__

addIdNode(&

head,id);

addIdNode(IdNode**ipp,intid)

{IdNode*ip=ipp;

if(__⑤__)addIdNode(__⑥__,id);

else{

ip=(IdNode*)malloc(sizeof(IdNode));

sp->

id=id;

ip->

next=NULL;

print(MarkNode*mp)

{IdNode*ip,ip0;

if(mp){

print(mp->

left);

%6d:

\t"

mp->

ip=mp->

head;

while(ip){

ip->

id);

ip0=ip;

ip=ip->

next;

free(ip0);

print(mp->

right);

free(mp);

试题八

某公司招聘M个工种(编号为1~M)的工作人员,每个工种有各自的计划招工数。

共有N位应聘者,每位应聘者有一报名号,且必须申报两个工种志愿,并参加公司组织的笔试和面试。

公司为每位应聘者评定一个综合考试成绩(0~100分)。

然后从高分到低分(分数相同者报名号小的优先)依次对每个应聘者进行录用。

录用的原则如下:

(1)对同一应聘者,第一志愿优于第二志愿。

(2)若应聘者的第一志愿工种已录满,则将其成绩减去5分后,立即参加第二志愿录用。

(3)在一个工种录取时,按申报该工种的应聘者"

录用成绩"

(第一志愿为考试成绩,第二志愿为考试成绩减5分)从高到底次序录用,"

相同者,按报名号从小到大顺序优先录用。

(4)允许某工种未招满计划招工数。

程序中数组NO、MARK、ZY1、ZY2分别存放应聘者的报名号、考试成绩、第一志愿工种遍号和第二志愿工种编号,并假定它们已先按考试成绩降序、后按报名号升序的顺序排列,数组GZ存放各工种的计划招工数。

子程序RY按上述录用原则完成录用工作。

录用过程中使用了三维数组RYNO,数组的最终值即为各工种的录取顺序名单。

数组元素RYNO(K,J,1)和RYNO(K,J,2)分别存放第K个工种准备录用的第1名应聘者的报名号和"

数组元素TOP(K)存放录用过程中第K个工种已存入数组RYNO的人数。

子程序INSERT将报名号NOI和成绩MARKI按"

降序顺序插入到数组RYNO第K个工种的相应位置中。

【程序】

SUBROUTINERY(NO,MARK,ZY1,ZY2,GZ,RYNO,TOP,M,N)

INTEGERNO(N),MARK(N),ZY1(N),ZY2(N),GZ(N)

INTEGERRYNO(M,N,2),TOP(,M)

DO10I=__①__

TOP(I)=0

DO20I=1,N

K1=ZY1(I)

K2=ZY2(I)

IF(TOP(K1).LT.GZ(K1))THEN

__②__

CALLINSERT(RYNO,M,N,K1,TOP(K1),NO(I),MARK(I))

ELSEIF(TOP(K20.LT.GZ(K2))THEN

TOP(K2)=__③__

RYNO(K2,TOP(K2),1)=NO(I)

RYNO(K2,TOP(K2),2)=__④__

ENDIF

CONTINUE

END

SUBROUTINEINSERT(RYNO,M,N,K,TOPK,NOI,MARKI)

INTEGERRYNO(M,N,2),TOPK

IF(J.EQ.0)THEN

RYNO(K,1,1)=NOI

RYNO(K,1,2)=MARKI

ELSEIF(MARKI__⑤__RYNO(K,J,2))THEN

RYNO(K,J+1,1)=NOI

RYNO(K,J+1,2)=MARKI

ELSE

__⑥__

__⑦__

J=J-1

GOTO10

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 其它语言学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1