查看全部128種考試
軟件水平考試
 考試動態(tài) 報考指南 歷年真題 模擬試題 復(fù)習(xí)資料 心得技巧 專業(yè)英語 技術(shù)文章 軟考論壇 考試用書
 程序員 軟件設(shè)計師 網(wǎng)絡(luò)管理員 網(wǎng)絡(luò)工程師 系統(tǒng)分析師 數(shù)據(jù)庫系統(tǒng)工程師
1
2
3
4
5
6
7
8
9
10
admin  
【字體: 1996年高級程序員下午試題及答案
1996年高級程序員下午試題及答案
spks.exam8.com 來源:考試吧(m.1glr.cn) 更新:2005-4-13 0:37:00 軟件水平考試 考試論壇

 

從下列的 2 道試題(試題七至試題八)中任選 1 道解答。如果解答的試題數(shù)超過 1 道,則解答的前 1 道有效。

試題七

    閱讀下列程序說明和 C 程序,將應(yīng)填入程序中__?__處的字句,寫在答卷紙的對應(yīng)欄內(nèi)。

【程序說明】

    本程序先從文件讀入各考生的準考證號(設(shè)為整型數(shù))及成績,并將其存放在一棵檢索二叉樹上,二叉樹的結(jié)點的鍵值是成績,二叉樹每個節(jié)點帶一鏈表,鏈表結(jié)點存放取得該成績的考生的準考證號。然后,程序按中序遍歷檢索二叉樹,從高到底分輸出結(jié)果,使每行輸出某成績及其取得該成績的各考生的準考證號。

【程序】

#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 程序,將應(yīng)填入程序中__?__處的字句,寫在答卷紙的對應(yīng)欄內(nèi)。

【程序說明】

    某公司招聘 M 個工種(編號為 1~M )的工作人員,每個工種有各自的計劃招工數(shù)。共有 N 位應(yīng)聘者,每位應(yīng)聘者有一報名號,且必須申報兩個工種志愿,并參加公司組織的筆試和面試。公司為每位應(yīng)聘者評定一個綜合考試成績(0~100分)。然后從高分到低分(分數(shù)相同者報名號小的優(yōu)先)依次對每個應(yīng)聘者進行錄用。錄用的原則如下:

(1) 對同一應(yīng)聘者,第一志愿優(yōu)于第二志愿。

(2) 若應(yīng)聘者的第一志愿工種已錄滿,則將其成績減去 5 分后,立即參加第二志愿錄用。

(3) 在一個工種錄取時,按申報該工種的應(yīng)聘者"錄用成績"(第一志愿為考試成績,第二志愿為考試成績減5分)從高到底次序錄用,"錄用成績"相同者,按報名號從小到大順序優(yōu)先錄用。

(4) 允許某工種未招滿計劃招工數(shù)。

    程序中數(shù)組 NO、MARK、ZY1、ZY2 分別存放應(yīng)聘者的報名號、考試成績、第一志愿工種遍號和第二志愿工種編號,并假定它們已先按考試成績降序、后按報名號升序的順序排列,數(shù)組 GZ 存放各工種的計劃招工數(shù)。

    子程序 RY 按上述錄用原則完成錄用工作。錄用過程中使用了三維數(shù)組 RYNO,數(shù)組的最終值即為各工種的錄取順序名單。數(shù)組元素 RYNO(K,J,1)和 RYNO(K,J,2) 分別存放第 K 個工種準備錄用的第 1 名應(yīng)聘者的報名號和"錄用成績"。數(shù)組元素 TOP(K) 存放錄用過程中第 K 個工種已存入數(shù)組 RYNO 的人數(shù)。

    子程序 INSERT 將報名號 NOI 和成績 MARKI 按"錄用成績"降序順序插入到數(shù)組 RYNO 第 K 個工種的相應(yīng)位置中。

【程序】

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 能發(fā)現(xiàn)兩人錄入不全同的工單和非法數(shù)據(jù)(如非法字符,數(shù)據(jù)越界等)

處理 2能發(fā)現(xiàn)與營業(yè)庫不一致的工單(如新裝電話重號,移機,拆機,更改等原電話號碼不存在等)

處理 4 能發(fā)現(xiàn)兩人錄入不全同的用戶回函和非法數(shù)據(jù)(如非法字符,電話號長度不對等)

[問題2]

戶名+地址+電話號碼+套紅標記+字體大小("套紅標記+字體大小"可寫成"印刷要求")

[問題3]

處理 5 前對回函庫按序號排序。

處理 2 前對工單庫的排序關(guān)鍵字進行排序

試題二

[問題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] 

轉(zhuǎn)帖于:軟件水平考試_考試吧
文章搜索  
看了本文的網(wǎng)友還看了:
網(wǎng)友評論
昵 稱: *  評 分: 1分 2分 3分 4分 5分
標題:   匿名發(fā)表    (共有條評論)查看全部評論>>
版權(quán)聲明 -------------------------------------------------------------------------------------
  如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  付款方式  站內(nèi)導(dǎo)航  客服中心  友情鏈接  考試論壇  網(wǎng)站地圖
Copyright © 2004-2008 考試吧軟件水平考試網(wǎng) All Rights Reserved    
中國科學(xué)院研究生院權(quán)威支持(北京) 電 話:010-62168566 傳 真:010-62192699
百度大聯(lián)盟黃金認證  十佳網(wǎng)絡(luò)教育機構(gòu)  經(jīng)營許可證號:京ICP060677