查看全部128种考试
软件水平考试
 考试动态 报考指南 历年真题 模拟试题 复习资料 心得技巧 专业英语 技术文章 软考论坛 考试用书
 程序员 软件设计师 网络管理员 网络工程师 系统分析师 数据库系统工程师
1
2
3
4
5
6
7
8
9
10
admin  
【字体: 1996年高级程序员下午试题及答案
1996年高级程序员下午试题及答案
spks.exam8.com 来源:考试吧(www.exam8.com) 更新:2005-4-13 0:37:00 软件水平考试 考试论坛

 

从下列的 2 道试题(试题七至试题八)中任选 1 道解答。如果解答的试题数超过 1 道,则解答的前 1 道有效。

试题七

    阅读下列程序说明和 C 程序,将应填入程序中__?__处的字句,写在答卷纸的对应栏内。

【程序说明】

    本程序先从文件读入各考生的准考证号(设为整型数)及成绩,并将其存放在一棵检索二叉树上,二叉树的结点的键值是成绩,二叉树每个节点带一链表,链表结点存放取得该成绩的考生的准考证号。然后,程序按中序遍历检索二叉树,从高到底分输出结果,使每行输出某成绩及其取得该成绩的各考生的准考证号。

【程序】

#include <stdio.h>

typedef struct idnode{

int id;

struct idnode *next;

} IdNode;

typedef struct marknode{

int mark;

IdNode *head;

struct marknode left,right;

} MarkNode;

char fname[] = "sp07.dat"'

main()

{ int id,mark;

MarkNode *root = null;

FILE *fp = fopen(fname,"r");

if (!fp) {

printf("file %s open error.\n",fname);

exit(0);

}

while (!feof(fp)) {

fscanf(fp,"%d%d",&id,&mark);

btree(&root,id,mark);

}

fclose(fp);

print(root);

}

btree(MarkNode **mpptr,int id,int mark)

{ IdNode *ip;

MarkNode *mp = mpptr;

if(__①__){

if(mark == mp->mark) addIdNode(__②__,id);

else if(mark>mp->mark) btree(&mp->left,id,mark);

else btree(&mp->right,id,mark);

}else

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

mp->mark=mark;

mp->left = mp->right = NULL;

__③__

addIdNode(&mp->head,id);

__④__

}

}

addIdNode(IdNode **ipp,int id)

{ 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);

printf("%6d: \t",mp->mark);

ip=mp->head;

while(ip){

printf("%6d: \t",ip->id);

ip0 = ip;

ip = ip->next;

free(ip0);

}

printf("\n"); print(mp->right); free(mp);

}

}

试题八

    阅读下列程序说明和 FORTRAN 程序,将应填入程序中__?__处的字句,写在答卷纸的对应栏内。

【程序说明】

    某公司招聘 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 个工种的相应位置中。

【程序】

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

INTEGER NO(N),MARK(N),ZY1(N),ZY2(N),GZ(N)

INTEGER RYNO(M,N,2),TOP(,M)

DO 10 I=__①__

10     TOP(I)=0

DO 20 I=1,N

K1=ZY1(I)

K2=ZY2(I)

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

__②__

CALL INSERT(RYNO,M,N,K1,TOP(K1),NO(I),MARK(I))

CALL INSERT(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

20  CONTINUE

END

SUBROUTINE INSERT(RYNO,M,N,K,TOPK,NOI,MARKI)

INTEGER RYNO(M,N,2),TOPK

10  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

GOTO 10

ENDIF

END

 

                                  答案

试题一

[问题1]

处理 1 能发现两人录入不全同的工单和非法数据(如非法字符,数据越界等)

处理 2能发现与营业库不一致的工单(如新装电话重号,移机,拆机,更改等原电话号码不存在等)

处理 4 能发现两人录入不全同的用户回函和非法数据(如非法字符,电话号长度不对等)

[问题2]

户名+地址+电话号码+套红标记+字体大小("套红标记+字体大小"可写成"印刷要求")

[问题3]

处理 5 前对回函库按序号排序。

处理 2 前对工单库的排序关键字进行排序

试题二

[问题1]

1. I:N-K或 I;N-J 或 M:4(K-1)(N-K+1)+N-2K+1

2. J:N-K或 J:N-J 或 M:4(K-1)(N-K+1)+2(N-2K+1)

3. I:K+1或 I;N+2-J 或 4(K-1)(N-K+1)+3(N-2K+1):M

4. J:K+1或 J;I+1 或 4K(N-K):M

5. MOD(N,2):0 或 [N/2]*2:N或 [N/2]:[(N+1)/2] 或N/2:[N/2] 或[N/2]:[N/2] 或 N:2(K-1) 或

  I+J=N 或 M-1:N*N

6. M→A[K,K]

 其中:M可答成N*N; A[K]可答成[(N+1)/2, (N+1)/2]或 A[[N/2]+1, [N/2]+1] A[I+ 1,J+1]

[问题2]

1. A[I,J] 或 M→A[I,J]

2. A[J,I] 或 M→A[J,I]

试题三

1. COUNT(*)

2. GAMES.INO=ITEM.INO

3. GAMES.ANO='100872' 注: 2,3 可互换

4. EXISTS

5. * 或 ANO 或 INO 或 SCORE 或三个列名的任意组合 4,5 也可为 4. ANO,IN 5. ANO

6. CREATE VIEW

7. ATHLETE, ITEM, GAMES(三项可交换)

试题四

1. LD GR2,1,GR1 或 ADD GR2,1,GR1

2. LEA GR2,-1,GR2             1,2 两条指令中形成 N-1 的解答均正确

3. ADD GR3,2,GR1

4. CPL GR0,0,GR3

5. LD GR2,UP

6. JPZ LOOP

7. LEA GR2,-1 或 SUB GR2, LOW

试题五

1. num*10+curch-'0' 其中'0'可答成48或0x30或corch[7]

2. (op2>=0)&&(op2<5) 或 op2<5 或 op2<=4 或 !(op2>=5)

3. (*func[op1])(x1, x2)

4. op1=op2

5. (*func[op1])

试题七

1. mp 或 mp !=NULL 或 *mpptr 或 *mpptr !=NULL

2. &mp->head 或 &(mppr)->head

3. mp->head=NULL

4. *mpptr=mp

5. ip 或 ip !=NULL 或 *ipp 或 *ipp !=NULL

6. &ip->next 或 &(ipp)->next

7. *ipp=ip

试题六

1. U*K+V

2. V*K

3. A=U/V 或 A+INT (U/V) 或 A+(U-MOD(U,V))/V

4. G=GCD(U,V)

5. 10*U/V或 INT(10*U/V) 或 (U*10-MOD(U*10,V))/V

6. U=10*U-D(I)*V 或 U=MOD(10*U, V)

7. GCD=L

试题八

1. 1,M 或 1,M,1

2. TOP(K1)=TOP(K1)+1

3. TOP(K2)+1

4. MARK(I)-5

5. .LE.

6. RYN0(K,J+1,1)=RYNO(K,J,1)

7. RYN0(K,J+1,2)=RYNO(K,J,2)

注:(6), (7)次序可交换

上一页  [1] [2] [3] 

转帖于:软件水平考试_考试吧
文章搜索  
看了本文的网友还看了:
软件水平考试权威辅导教材: 订书电话:010-62168566  更多>>>
网友评论
昵 称: *  评 分: 1分 2分 3分 4分 5分
标题:   匿名发表    (共有条评论)查看全部评论>>
版权声明 -------------------------------------------------------------------------------------
  如果软件水平考试网所转载内容不慎侵犯了您的权益,请与我们联系,我们将会及时处理。如转载本软件水平考试网内容,请注明出处。
关于本站  网站声明  广告服务  联系方式  付款方式  站内导航  客服中心  友情链接  考试论坛  网站地图
Copyright © 2004-2008 考试吧软件水平考试网 All Rights Reserved    
中国科学院研究生院权威支持(北京) 电 话:010-62168566 传 真:010-62192699
百度大联盟黄金认证  十佳网络教育机构  经营许可证号:京ICP060677