?? 98年試卷+答案(高程).txt
字號:
[說明]
本流程圖描述某超市銷售數據的部分處理流程。超市中有若干臺收款機和若干名收款員。這
里,我們把一個收款員開始使用一臺收款機到離開這臺收款機稱為該收款員的一次作業。作業開始時,收款員先在收款機上輸入收款員號和作業前金額。作業前金額是為了銷售時的找零而在作業前預先放入錢箱的金額數。作業結束時,收款員要找開錢柜,取走全部現金,并把這些現金的金額數(稱為作業后金額)輸入收款機。當
作業前金額+本次作業售貨總金額-本次作業退貨總金額≠作業后金額
時,表示這次作業存在金額差錯。
本流程圖已作簡化,并作以下假定;該超市只有現金交易(不用信用卡和禮券);一個收款員因某種原因(如吃飯)在一天中可以有多個作業;銷售方式只有售貨和退貨兩種。
整個超市分成若干部門(如食品部、服裝部),系統按部門統計一個月中各類貨物的銷售數量和金額,最后根據月銷售計劃文件分析各部門完成銷售計劃的情況。系統還統計每個收款員的差錯情況和退貨情況。
圖中處理4和處理8每月的最后一天執行一次(營業結束后),其它處理每天執行一次。
圖中部分數據、文件的記錄格式如下:
日銷售數據:收款機號十收款員號十作業前金額十
{(售貨標記|退貨標記)十貨號十數量十單價十金額}+作業后金額
日銷售文件記錄:(作業開始標記十收款機號十收款員號十作業前金額 )
|(售貨標記|退貨標記)十貨號十數量十金額) )
|(作業結束標記十收款機號十收款員號十作業后金額
部門日銷售文件記錄:部門號十(售貨標記|退貨標記)十貨號十數量+金額
部門月銷售計劃文件記錄;部門號十月計劃金額
收款員差錯月報:月份十收款員號十差錯作業數十差錯總金額
收款員退貨月報..月份十收款員號十退貨次數十退貨總金額
其中 {w}表示 w重復出現多次; a|b 表示 a或b; a+b表示 a與b。
[問題1]
分別寫出收款員日銷售文件、商品文件、部門日銷售匯總文件至少應包含哪些數據項。
[問題2]
處理1能檢查出日銷售數據中的哪些錯誤。
[問題3]
處理4對收款員月銷售文件作何種操作。
試題二
閱讀以下說明和流程圖,回答問題,將解答寫在答卷的對應欄內。
[說明]
本流程圖描述了某子程序的處理流程,現要求用白盒測試法為該子程序設計測度數據
[問題]
根據判定覆蓋、條件覆蓋、判定一條件覆蓋、條件組合覆蓋(即多重條件覆蓋)、路徑覆蓋等五種覆蓋標準,從供選擇的答案中分別找出滿足相應覆蓋標準的最小測試數據組(用①~12回答)。 供選擇的答案
①x=90,y=90 ②x=90,y=70 ③x=90,y=90 ④x=90,y=75
x=70,y=70 x=70,y=90 x=90,y=75 x=75,y=90
x=75,v=90 x=70,y=70
⑤x=90,y=90 ⑥x=80,y=80 ⑦x=80,y=80 ⑧x=80,y=80
x=90,y=75 x=90,y=70 x=90,y=75 x=90,y=70
x=75,y=90 x=70,y=90 x=90,y=90 x=70,y=90
x=70,y=70 x=70,y=70 x=75,y=90 x=70,y=70
x=70,y=70 x=70,y=75
⑨x=80,y=80 ⑩x=90,y=90 11. x=80,y=80 12. x=80,y=80
x=90,y=75 x=90,y=75 x=90,y=75 x=80,y=70
x=90,y=70 x=90,y=70 x=90,y=70 x=70,y=80
x=70,y=80 x=75,y=90 x=70,y=80 x=70,y=70
x=70,y=75 x=70,y=70 x=70,y=75 x=90,y=75
x=70,y=70 x=70,y=90 x=70,y=70 x=90,y=70
x=70,y=90 x=70,y=75
x=75,y=90
x=75,y=80
x=70,y=90
試題三
閱讀以下說明和流程圖,回答問題1至問題2,將解答寫在答卷的對應欄內。
[說明]
本流程圖描述了某種字符序列的變換過程。變換前的字符序列以字符“#”結尾,它存放在數組old中,變換后的字符序列存放在數組new中,它不包含結束標志“#”。流程圖按下列規則進行變換:
1.刪除字符序列中的注解。注解用一對“!”字符分隔,注解中可出現除“#”外的任何字符。
2.字符常數完整地保留。字符常數用一對“&”字符分隔,字符常數中可出現、外的任何字符。
值得注意的是:當字符“&”需要出現在字符常數中時,通常用二個連續的“&”表示,在
保留字符常數時,這二個連續的“&”都被保留。此外,作為字符常數分隔符的一對“&”
也被保留。
3.除字符常數和注解外,出現在其它地方的連續多個空格壓縮成一個空格,但字符序列中先導
的空格則全部刪除。
4.注解和字符常數之外的非空格字符均保持不變。
本流程圖對原字符序列從左到右掃描,根據遇到的當前字符來搜索連續空格、注解或字符常
數,然后按上述變換規則變換。若遇到的當前字符是“!”,則尋找下一個“!”字符(若
找不到則作出錯處理),這二個“!”間的字符全部看作為注解。若當前字符是“&”字符
則尋找與之配對的下一個“&”字符(若找不到則作出錯處理),其間的字符全部看作為字
符常數。
例如:
原字符序列:
└┘└┘a└┘└┘└┘b&cd&&└┘└┘!e&f└┘└┘ g!h& └┘└┘!└┘└┘j#
變換后的字符序列:a└┘bdcd&&└┘└┘!e&f└┘g└┘j
本流程圖假定在數組old中一定存在“#”字符。
[問題1]
填充流程圖中的①~⑤,把解答寫在答卷的相應位置上。
[問題2]
當原字符序列中汪解的前后均是連續空格時,本流程圖將注解前后的連續空格分別壓縮成一個空格,刪除注解后,將導致變換后的新字符序列出現二個連續的空格。如;
g└┘└┘!h&└┘└┘i!└┘└┘j
本流程圖將變換成g└┘└┘j。
為使變換后的新序列中除字符常數外沒有連續的空格,圖中的虛線框需作何改動(只需畫出修改后的流程圖)
試題四
在COMET型計算機上可以使用試卷上所附的CASL匯編語言。閱讀以下程序說明和CASL程序,將應填入_(n)_處的字句,寫在答卷的對應欄內。
[程序說明]
本程序是統計字符串中數字字符“0”至“9”的出現次數。
字符串中的每個字符是用ASCII碼存貯。一個存貯單元存放兩個字符,每個字符占8位二進位。
程序中,被統計的字符串從左至右存放在STR開始的連續單元中,并假定其長度不超過200,字符串以‘·’符作為結束。NCH開始的10個單元存放統計結果。
START MIN
MIN LEA GR2,9
LEA GR0,0
L1 _(1)_
LEA GR2,-1,GR2
LEA GR4,0
LEA GR1,0
L2 LD GR2,STR,GR1
EOR GR4,C1
JNZ RL
_(2)_
RL SRL GR2,8
LEA GR3,0,GR2
SUB BR3,C9
JNZ L4
L3 LEA GR3,0,GR2
SUB GR3,CO
JM1 L5
LEA GR2,1
_(3)_
L4 GR4 0,GR4
JNZ L2
_(5)_
JMP L2
L5 SUB GR2,C
JNZ L4
EXIT
C1 DC 1
C DC '·'
C0 DC '0'
C9 DC 9
STR DS 200
NCH DS 10
END
試題五
閱讀以下程序說明和C程序,將應填入_(n)_處的字句,寫在答卷的對應欄內。
[程序說明]
這里給出的程序逐一從指走課程成績文件中讀入學生的學號和成績,對同一學生匯總他的總成績,并按以下格式輸出名次(按總成績由高到低的順序)、總成績、同一名次的學生人數、同一名次學生的學號(按學號由小到大的順序)。
程序約定學生學習課程不超過30種,課程成績文件的第一個數字就是課程號,統計過程中,同一課程號的成績文件不能重復輸入。
程序采用鏈表結構存儲學生有關信息,鏈表中的每個表元對應一位學生。程序在數據輸入過程中,形成一個按學生學號從小到大順序鏈接的有序鏈表。當數據輸入結束后,程序按總成績從高到低,學號從小到大的順序對鏈表排序。程序最后按指定格式輸出鏈表中的信息。程序的輸出格式如下例所示:
名 次
總成績
人 數
學 號
1
470
2
12
25
3
450
3
15
24
50
6
430
1
14
7
401
3
13
18
45
…
[程序]
#include 〈stdio.h〉
#define M 30
#define NLEN 10
typedef struct node {int cur_s/*最近輸入成績的科目 */
char no[NLEN];int score;
stuction node *next;
}NODE;
N0DE*bubblesort(N0DE*head)
{NODE *q,*tail,*p=(MODE*)malloc(sizeof(NODE);
p→next=head;head=p;tail=NULL;
while (tail!=___(1)___)
{p=head;q=p→next;
while (q→enxt!=tail)
{if (p→next→score→〈q→next→score||
p→next→scor==q→next→score&&
strcmp(p→next→no,q→next→no)〉0)
{p→next=_(2)_,/*兩相鄰表元鏈接關系前后顛倒*/
_(3)_=q→next→next;p→next→next=q;
}
p=p→next;/*調整p和q*/ q=_(4)_;
}
tail=q;
}
p=head→next;free(head);return p;
}
int s[M],sp;
main()
{FILE*fp;
NODE*h,*u,*v*p;
int ss,,mark,order,c;
char fname[80],no[NLEN],ans;
for(h=NULL,sp=0;;)
{print(''輸入科目成績文件名(輸入aaaa表示強行結束)。\n");
while (1)
{scanf("%s",fname);
if(strcmp(fname,"aaaa")==0)break;
if((fp=fopen(fname,"r"))==NULL)
printf("不能打開文件%s,請重新輸入科目文件名。\n,fname);
else break;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -