2
3
4
5
6
7
8
9
10
從下列的 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)次序可交換
- 推薦給朋友
- 收藏此頁
·2008年下半年軟考信息系統(tǒng)項目管理師試題(下午II) (2008-12-21 22:39:30)
·2008年下半年計算機軟考網(wǎng)絡(luò)工程師試題(下午) (2008-12-21 22:26:13)
·2008下半年軟考系統(tǒng)分析師考試試題(下午)II (2008-12-21 22:20:49)
·2008年下半年計算機軟考程序員試題(下午) (2008-12-21 22:18:18)
·2008年下半年計算機軟考程序員試題(上午) (2008-12-21 22:11:38)
如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。