閱讀以下說明和流程圖,回答問題1至問題4,將解答寫在答卷的對應欄內。
[說明]
某公司將其生產的商品通過若干個銷售點進行銷售。銷售點在收到商品后的規定時間內把貨款匯給公司。
流程圖描述了該公司發貨、收款、催款的處理過程。其中部分文件和單據的格式如下:
商品文件:商品代號,商品名稱,單價
銷售點文件:銷售點代號,銷售點名稱,地址
發貨單:發貨日期,銷售點代號,商品代號,數量,金額
收款單:收款日期,銷售點代號,商品代號,數量,金額,該商品的發貨日期
處理1~3把當天的發貨單合并到發貨文件。處理4~6把當天的收款單合并到收款文件。處理7在發貨文件中當天已收款的記錄上加上已收款標記。處理8和處理9在月末執行一次,主要用于輸出月發貨報、催款通知單、月收款報告。
[問題1]
詳細寫出流程圖中商品文件和銷售點文件對處理1的作用。
[問題2]
說明處理8為何要寫發貨文件。
[問題3]
說明處理9除制作月收款報告外還對收款文件做什么操作。
[問題4]
為了提高處理效率,流程圖需作何改動。
試題二
閱讀以下說明和流程圖,回答問題1至問題3,將解答寫在答卷的對應欄內。
[說明]
本流程圖用來實現一組正整數的加權舍位平衡。已知正整數組
A(a1,a2,…,an)
滿足條件a1= (n>3),F將數組A中的每個數舍P位(P為正整數)后,得到另一正整數數組
B(b1,b2,…,bn)
它滿足如下條件:
1、 b1是a1舍P位后四舍五入所得,即b1=INT(a1/10p0.5)
2、 b1 =
3、 bi=INT(ai/10P)+ei(i=2,3,…,n), 其中ei取值為0或1,當ei=1時,稱ei是第i項數據的進位
4、 ei(i=2,3,……,n)之值根據余數MOD(ai,10P)乖上權fi(fi>0)后的數值大小來決定(其算法見流程圖),權fi存放在數組F中。
其中INT是取整數函數,MOD是余數函數。例如正整數78965舍P=3位,則
INT(78965/103)=78
MOD(78965,103)=965
[問題1]
填充流程圖中①~④ ,把解答寫在答卷紙的相應位置上。
[問題2]
若 N=5,P=1,A=(1586,985,26,247,328)
F=(1,1,1,1,1)
則數組B的值是多少?
[問題3]
若N=3,P=1,A=(41,16,25),F=(1,0,0),則數組B的值是多少?
試題三
閱讀以下說明和流程圖,回答問題1至問題3,將解答寫在答卷的對應欄內。
[說明]
下面給出的是某房產管理系統的一套分層數據流圖。其功能描述如下:
(1) 系統隨時根據住房送來的入信單更新信戶基本信息文件;
(2) 每月初系統根據物業管理委員會提供的月附加費(例如清潔費、保安費、大樓管理費等—)表和房租調整表,計算每家住戶的月租費(包括月附加費),向住戶發出交費通知單。住戶交費時,系統輸入交費憑證,核對后輸出收據給住戶;
(3) 系統定期向物業管理委員會提供住房分配表和交費情況表;
(4) 住戶因分戶或換房,在更新住戶基本信息文件的同時,系統應立即對這些住戶做月租費計算,以了結分戶或換房前的房租。
假定題中提供的頂層圖是正確的,請回答下列問題:
[問題1]
指出哪張圖中的哪些文件可不必畫出。
[問題2]
指出在哪些圖中遺漏了哪些數據流;卮饡r請用如下形式之一:
1) ××圖中遺漏了××加工(或文件)流向××加工(或文件)的××數據流;
2) ××圖中加工××遺漏了輸入(或輸出)數據流××。
[問題3]
指出加工2圖中加工2.3能檢查出哪些不合格交費憑證。
[流程圖]
頂層圖
試題四
在COMET型計算機上可以使用試卷上所附的CASL匯編語言。閱讀下列程序說明和CASL程序,將應填入__(n)__處的字句,寫在答卷的對應欄內。
[程序說明]
本子程序將一個非負二進整數翻譯成五位十進整數字符。
進入子程序時,在GR0中給出被翻譯的非負二進整數,在GR2中給出存放五位十進整數數字字符的起始地址。
十進制數字字符用ASCII碼表示。當結果小于五位時,左邊無空白符替換;當二進整數為零時,在(GR2)+4中存放0的ASCII碼。
數字字符0至9的ASCII碼是48至57,空白符的ASCII碼是32。
[程序]
START
LEA GR1,0
LEA GR3,32
L1 ____(1)____
JPZ L2
ST GR3,0,GR2
LEA GR2,1,GR2
LEA GR1,1,GR1
JNZ L1
L2 ___(2)___
L3 ___(3)___
JMI L4
SUB GR0,SN0,GR1
LEA GR3,1,GR3
___(4)___
L4 ST GR3,0,GR2
LEA GR2,1,GR2
LEA GR1,1,GR1
___(5)___
JNZ L2
RET
SON NC 10000
DC 1000
DC 100
DC 10
DC 1
END
試題五
閱讀以下程序說明和FORTRAN程序,將應填入__(n)__處的字句,寫在答卷的對應欄內。
[程序說明]
對稱矩陣通常只需存儲其下三角部分,例如,下列對稱矩陣
可用一維數組(1,2,3,4,5,6,7,8,9,10)存儲其下三角部分。N階對稱矩陣下三角部分的元素個數為(N*N+N)/2。
本子程序用來計算N階對稱矩陣A的平方B,B也是一個N階對稱矩陣。程序中X,Y是分別存入A,B下三角部分的一維數組。
[程序]
SUBROUTINE P(X,Y,N)
INTEGER X(N*N+N)/2,Y(N*N+N)/2),S
M=1
DO 10 JJ=__(1)__
DO 10 II =__(2)__
I=II
J=JJ
L=__(3)__
S=0
DO 30 K=1,N
S=S+X(I)*X(J)
IF(____(4)____)THEN
I=I+L
ELSE
I=I+1
ENDIF
IF(____(5)____)THEN
J=J+L
ELSE
J=J+1
ENDIF
L=L-1
30 CONTINUE
Y(M)-S
M=M+1
10 CONTINUE
END
試題六
閱讀以下程序說明和C程序,將應填入__(n)__ 處的字句,寫在答卷的對應欄內。
[程序說明]
某系統由n個部件組成,這些部件被物理地分成若干個分離的部件組。同一組內的兩件部件i和j,它們或直接相連,或間接相連(部件i和部件j間接相連是指在這兩件部件之間有一個部件相連序列,其中部件i和j分別與這相連序列中的某個部件直接相連)。系統的n個部件被統一編號為0,1,…,n-1。本程序輸入所有直接相連的部件號對,分別求出系統各分離部件組中的部件號并輸出。
程序根據輸入的直接相連的兩件部件號,建立n個鏈表,其中第i個鏈表的首指針為s
,其結點是與部件i直接相連的所有部件號。
程序依次處理各鏈表。在處理s鏈表中,用top工作鏈表重新構造s鏈表,使s鏈表對應系統中的一個部件組,其中結點按部件號從小到大連結。
[程序]
# include
#define N 100
typeef struct node{
int data;
struct node *link;
} NODE;
NODE*s[N];
int i,j,n,t;
NODE *q,*p,*x,*y,*top;
main()
{ printf(“Enter number of parts.”);
scanf(“%d”,&n);
for(i=0;ibr> printf(“Enter pairs./n”);
white (scanf(“%d%d”,&i,&j)= =2)
{ /*輸入相連部件對,生成相連部件結點鏈表*/
p=(NODE *)malloc(sizeof(NODE));
p->data=j; p->link=s; s=p;
p=(NODE *)malloc(sizeof(NODE));
P->data=i; p->link=s[j]; s[j];=p;
}
for(i=0;ibr> for(top=s,____(1)____;top!=NULL;)
{ /*將第i鏈表移入top工作鏈表,并順序處理工作鏈表的各結點*/
q=top;____(2)____;
if(s[j=q->data]!=NULL)
{ /將j鏈表也移入工作鏈表*/
for(p=s[j];p->link !=NULL;p=p->link);
p->link=top; top=s[j];____(3)____;
}
/*在重新生成的第i鏈表中尋找當前結點的插入點*/
for(y=s;____(4)____;x=y,y=y->link);
if(y!=NULL && y ->data= =q->data)
free(q);/*因重新生成的第i鏈表已有當前結點,當前結點刪除* /
else { /* 當前結點插入重新生成的i鏈表*/
__-__(5)____;
if(y= =s) s=q;
else x->link=q;
}
}
for(i=0;ibr> { /*輸出結果*/
if (s= =NULL)continue;
for(p=s;p!=NULL;)
{ printf(“\t%d”,p->data);
q=p->link; free(p); p=q;
}
printf(“\n”);
}
}
試題七
閱讀以下程序說明和FORTRAN程序,將應填入__(n)__處的字句,寫在答卷的對應欄內。
[程序說明]
本子程序實現地圖的著鈀。在地圖上,一個國家所著的顏色必須與所有相鄰的國家所著的顏色不同,F已證明,僅需四種不同的顏色就能解決地圖的著鈀
若地圖上有N個國家,分別用1至N編號。子程序中用數組INDEX(N,2)和BORDER(M)存放N個國家的相鄰情況。INDEX(I,1)和INDEX(I,2)分別表示與第I國相鄰的國家編號在數組BORDER中的起始位置和終止位置,即這些鄰國的編號存放在BORDER(INDEX(I,1))至BORDER(INDEX(I,2))中。例如,對應于圖1所示的地圖,數級INDEX和BORDER具有如下值:
INDEX=
BORDER-(2,3,4,5,1,3,1,2,4,5,1,3,5,1,3,4)
子程序中分別用1,2,3,4代表四種不同顏色,著色結果存放在數組COLOR中,即數組元素COLOR(I)的值為第I個國家所著的顏色。
子程序采用試控法找解。首先從第I個國家著第一種顏色開始,順序為各個國家尋找著色方案。對第I個國家,當為它找到一種未被它的相鄰國家著色的顏色時,就用該顏色對此國家著色,并準備處理下一國家;當不能為它找到一個未被它的相鄰國家著色的顏色時,就回溯——即改變第I-1個國家的著色方案。直至最終為全部國家找到著色方案。
[程序]
SUBROUTINE P(INDEX,BORDER,COLOR,N,M)
INTEGER INDEX(N,2),BORDER(M),COLOR(N)
DO 10 I=1,N
COLOR(I)=0
I=1
IF(__(1)__)THEN
K=COLOR(I)+1
IF(__(2)__)THEN
J=INDEX(I,1)
IF(J.LE.INDEX(I,2))THEN
IF(__(3)__)THEN
J=J+1
GOTO 20
ELSE
K=K+1
____(4)____
ENDIF
___-(5)____
I=I+1
GOTO 40
ENDIF
COLOR9I)=0
_____(6)_____
GOTO 40
ENDIF
IF(I.EQ.0)THEN
WRITE(*,*)’NO SOLUTION’
ENDIF
END
試題八
閱讀以下程序說明和C程序,將應填入__(n)__處的字句,寫在答卷的對應欄內。
[程序說明]
一個相連的區域被不規則地分割成n個不同的小區域;每個小區域與若干其它小區域相鄰接,F用cn種不同顏色為該區域著色,要求每個小區域著同一種顏色,相鄰小區域著不同顏色。
設小區域被順序編號為0,1,…,n-1。每個小區域與其它小區域的鄰接關系用兩維數組bordering表示,元素bordering[j]表示i號小區域與j 號小區域之間的鄰接關系:
0 j小區域與i小區域不鄰接
bordering[j]=
1 j小區域與i小區域相鄰接
程序中,把計算結果存入于兩維數組colored中,顏色編號為0,1,…,cn-1,元素colored[coler][j]的含義是
0 j小區域不用顏色color著色
colored[color][j]=
1 j小區域用顏色color著色
函數colorcountry(bordering,colored,n,cn)根據所給的小區域鄰接關系數組bordering、小區域個數n 、顏色數cn,將找到的著色方案記錄在數組colored中。函數采用試探法找解。首先從第一個小區域著第一種顏色開始順序為各小區域找著色方案。對某個小區域,當為它找到一種未被它的相鄰小區域著色的顏色時,就用該顏色對該小區域著色,并準備處理下一個小區域。當不能為某個小區域找到一個未被它的相鄰小區域著色的顏色時,就回溯。如最終為全部小區域找到著色方案,函數返回1;否則,函數返回0。
程序假定小區域個數不超過20,顏色數為4。
[程序]
#include
#define n 20
#define CN 4
int colorcountry(int bordering[][N], int colored[][N], int n,int cn)
{ int color,used,i,c;
for(color=0;colorbr> for(i=0;ibr> c =0; /*從第1個小區域開始*/
color =0; /*從著第1種顏色開始試控*/
while(cbr> { /*還未對全部小區域著色時循環*/
while(___(1)___)/*順序對每種顏色作試探*/
{/*檢查當前顏色是否已被某相鄰小區域著色*/
for (i=0, used=0; !used && ibr> if(____(2)____)used=1;
if(!used)break; /*當前顏色未被相鄰小區域著色*/
color++
}
if(!used)
{ /*找到一種可用顏色,用此色著色,并準備處理下一個小區域*/
____(3)____=1; color=0;
}else{/*未找到一種可用顏色,回溯*/
c--;if (c<0)return 0; /*發現沒有解的情況*/
for(color=0;____(4)____;color++);
____(5)____=0
}
}
return 1;
}
print(int colored[ ][N],int n,int cn) /*輸出結果*/
{ char *colort[ ]={“RED”,”BLUE”,”GREEN”,”YELLOW”};
int color,i;
for(color=0;colorbr> { printf(“\n%s;\n”,colortb1[color]);
for(i=0;ibr> if(colored[color]) printf(“\t%d”,i);
printf(“\n”);
}
}
int colored[CN][N],bordering[N][N];
main()
{ int c,i,j,n;
printf(“Enter number of areas.”); scanf(“%d”,&n);
printf(“Enter bordering:\n”);
for(i=0;ibr> for(j=0;jbr> for(i=0;ibr> { printf(“Enter areas to link %d area(<0 to next).\n”,i);
scanf(“&d”,&j);
while(j>=0)
{ if(i !=j) bordering[j]=bordering[j]=1;
scanf(“%d”,&j);
}
}
if(colorcountry(bordering,colored,n,CN))
print(colored,n,CN);
else printf(“No Solution.\n”);
}
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/