試題四
閱讀以下說明和C程序,將應填入 (n) 處的字句寫在答題紙的對應欄內。
【說明】
假設需要將N個任務分配給N個工人同時去完成,每個人都能承擔這N個任務,
但費用不同。下面的程序用回溯法計算總費用最小的一種工作分配方案,在該方案中,為每個人分配1個不同的任務。
程序中,N個任務從0開始依次編號,N個工人也從0開始依次編號,主要的變量說明如下:
c[i][j]:將任務i分配給工人j的費用;
task[i]:值為0表示任務i未分配,值為j表示任務i分配給工人j;
worker[k]:值為0表示工人k未分配任務,值為1表示工人k已分配任務;
mincost:最小總費用。
【C程序】
#include<stdio.h>
#define N 8 /*N表示任務數和工人數*/
int c[N][N];
unsigned int mincost=65535; /*設置min的初始值,大于可能的總費用*/
int task[N],temp[N],workerIN];
void Plan(int k,unsigned Int cost)
{ int i;
if ( (1) &&cost<mincost){
mincost=cost;
for (i=0;i<N;i++) temp[i]:task[i];
}
else{
for(i=0;i<N;i++) /*分配任務k*/
if (worker[i]=0&& (2) ){
worker[i]=1; task[k]= (3) ;
Plan( (4) ,cost+c[k][i]);
(5) ; task[k]=0;
}/*if*/
}
}/*Plan*/
void main()
{int i,j;
for (i=0;i<N;i++) { /*設置每個任務由不同工人承擔時的費用及全局數組的初值*/
worker[i]=0;task[i]=0; temp[i]=0;
for(j=0;j<N;j++)
scanf ("%d",&c[i][j]);
}
Plan (0,0); /*從任務0開始分配*/
printf("\n最小費用=%d\n",mincost);
for(i二0;i<N;i++)
pnntf("Task%d iB assigned toWorker%d\n",i,temp[i]);
}/*main*/
試題一
閱讀以下說明和數據流圖,回答問題1~問題3。
【說明】
學生住宿服務系統(tǒng)幫助學生在就學的緘市內找到所需的住房,系統(tǒng)對出租的房屋信息、房主信息、需要租房的學生信息以及學生和房主的會面信息進行管理和維護。
房主信息包括姓名、地址、電話號碼以及系統(tǒng)分配的唯一身份標識D.和密碼;房屋信息包括房屋地址、類型(單間/套間)、適合住宿的人數、房租、房主的ID以及現在是否可以出租(例如由于裝修原因,需等到裝修后才可出租或者房屋已被租出)。每當房屋信息發(fā)生變化時,房主必須通知系統(tǒng),系統(tǒng)將更新房屋文件以便學生能夠獲得準確的可租用房屋信息。房主向系統(tǒng)中加入可租用的房屋信息時,須交納一定的費用,由系統(tǒng)自動給出費用信息。房主可隨時更新房屋的各種屬性。
學生可通過系統(tǒng)查詢現有的可租用的房屋,但必須先在系統(tǒng)中注冊。學生信息包括姓名、現住址、電話號碼、出生日期、性別以及系統(tǒng)分配的唯一身份標識(1D.和密碼。若學生希望租用某房屋,則需要發(fā)出租房請求,請求中包含房屋的詳細信息,系統(tǒng)將安排學生與房主會面的時間和地點,并將會面信息通知學生和房主,會面信息包括會面時間、地點以及會面雙方的基本信息,系統(tǒng)將記錄會面信息。
學生住宿服務系統(tǒng)的頂層圖如圖1-1所示;學生住宿服務系統(tǒng)的第0層DFD圖如圖 1-2所示,其中,加工3的細化圖如圖1-3所示。
【數據流圖1-1】
【問題1】
(1)數據流圖1-1缺少了一條數據流(在圖1-2中也未給出該數據流),請給出此數據流的起點和終點,并采用說明中的詞匯給出此數據流名。
(2)數據流圖1-2中缺少了與“查詢房屋”加工相關的數據流,請指出此數據流的起點和終點。
【問題2】
“安排會面”加工除需要寫入會面文件外,還需要訪問哪些文件?
【問題3】
請補齊下列數據字典條目:
登錄信息=學生ID+密碼
注冊信息=___________
試題二
閱讀以下說明和表,回答問題1~問題4。
【說明】
某公司信息管理系統(tǒng)的需求分析和部分關系模式設計的結果描述如下。
1.公司有多個部門,每個部門有一名負責人、一間辦公室、一部電話、多名職員,每個職員最多屬于一個部門,負責人也是一名公司職員。
2.公司職員的月工資大于等于1000元且小于等于8000元。
3.數據庫的部分關系模式設計如下:
職員(職員號,職員姓名,月工資,部門號,辦公室,電話)
部門(部門號,部門名,負責人代碼,任職時間)
4.“職員”和“部門”的關系示例分別如表2-1和表2-2所示。
【問題1】
根據上述說明,請給出
(1)“職員”關系模式的主鍵和外鍵。
(2)“部門”關系模式的主鍵和外鍵。
【問題2】
(1)用SQL定義“職員”關系模式,請在空缺處填入正確的內容。
Create Table 職員 ( 職員號CHAR(5) (a) ,
職員姓名CHAR(8),
月工資 NUMBER(4),
部門號 CHAR(1),
辦公室 CHAR(20),
電話 CHAR(8),
(b) (部門號),
CHECK (月工資>=1000 AND月工資<=8000));
(2)針對人數大于等于2的部門創(chuàng)建視圖D_View(Dept,D_num,D_Totals, D_AvgPay),其中,Dept為部門號,D_num為部門人數,D_Totals為工資總數,D_AvgPay為平均工資,請在空缺處填入正確的內容。
Create View D_View (Dept,D_num,D_Totfls,D_AvgPay)As
(Select部門號, (c)
from 職員
(d) count(*)>=2 WHERE 部門號 IS NOT NULL);
【問題3】
對于表2-1、表2-2所示的“職員”和“部門”關系,請指出下列各行是否可以插入“職員”關系,為什么?
【問題4】
原來的“職員”關系模式存在什么問題?在不增加新關系模式的前提下,請給出修改后的“職員”和“部門”關系模式。
試題三
閱讀以下說明和流程圖,從供選擇的答案中選出應填入流程圖 (n) 處的字句寫在答題紙的對應欄內。
【說明】
一個印刷電路板的布線區(qū)域可分成n×m個方格,如圖3-1(a)所示,現在需要確定電路板中給定的兩個方格的中心點之間的最短布線方案。電路只能沿水平或垂直方向布線,如圖3-1(b)中虛線所示。為了避免線路相交,應將已布過線的方格做封鎖標記,其他線路不允許穿過被封鎖的方格。
設給定印刷電路板的起始方格x與目的方格y尚未布線,求這兩個方格間最短布線方案的基本思路是:從起始方格x開始,先考查距離起始方格距離為1的可達方格并用一個路徑長度值標記,然后依次考查距離為2,3,…的可達方格,直到距離為k的某一個可達方格就是目標方格y時為止,或者由于不存在從x到y(tǒng)的布線方案而終止。布線區(qū)域中的每一個方格與其相鄰的上、下、左、右四個方格之間的距離為1,依次沿下、右、上、左這四個方向考查,并用一個隊列記錄可達方格的位置。表3-1給出了沿這四個方向前進1步時相對于當前方格的相對偏移量。
例如,設印刷電路板的布線區(qū)域可劃分為一個6×8的方格陣列,如圖3-2(a)所示,其中陰影表示已封鎖方格。從起始方格x(位置[3,2],標記為0)出發(fā),按照下、右、上、左的方向依次考查,所標記的可達方格如圖3-2(a)所示,目標方格為y(位置[4,7],標記為10),相應的最短布線路徑如圖3-2(b)虛線所示。 【圖3-2】
圖3-3和圖3-4所示的流程圖即利用上述思路,在電路板方格陣列中進行標記,圖【圖3-3】
中使用的主要符號如表3-2所示。在圖3-4中,設置電路板初始格局即將可布線方格置為數值-1、已布線方格(即封鎖方格)置為-9。設置方格陣列“圍墻”的目的是省略方格位置的邊界條件判定,方法是在四周附加方格,并將其標記為-9(與封鎖標記相同)。
供選擇的答案
A.Found≠true B.Found=true
C.T=EndPos D.Q.insert(T)
E.T←Q.delete() F.CurPos=EndPos
G.i≥4 H.CurPos←Q.delete()
I.Grid[T.row,T.col]=-1 J.Grid[T.row,T.col]≠-1
試題五
閱讀以下說明和C++代碼,將應填入 (n) 處的字句寫在答題紙的對應欄內。
【說明】
某繪圖系統(tǒng)存在Point、Line、Square三種圖元,它們具有Shape接口,圖元的類圖關系如圖5-1所示?,F要將Circle圖元加入此繪圖系統(tǒng)以實現功能擴充。已知某第三方庫已經提供了XCircle類,且完全滿足系統(tǒng)新增的Circle圖元所需的功能,但XCircle不是由Shape派生而來,它提供的接口不能被系統(tǒng)直接使用。代碼5-1既使用了XCircle又遵循了Shape規(guī)定的接口,既避免了從頭,開發(fā)一個新的Circle類,又可以不修改繪圖系統(tǒng)中已經定義的接口。代碼5-2根據用戶指定的參數生成特定的圖元實例,并對之進行顯示操作。
繪圖系統(tǒng)定義的接口與XCircle提供的顯示接口及其功能如下表所示:
【代碼5-1】
class Circle:public (1) {
pfivme:
(2) m_circle;
public:
void display(){
m_circle. (3) ;
}
};
【代碼5-2】
class Factory{
public:
(4) getShapeInstance (int type){ //生成特定類實例
switch (type){
case 0:rcturn new Point;
Case l:return new Rectangle;
case 2: return new Line;
case 3: return new Circle;
default: return NULL;
} void main (int argo, char *argv[]) {
if (argc!=2) {
cout << "error parameters !" << endl; return; inttype=atoi (argv[1]) ;
Factory factory;
Shape *s;
s = factory. (5) :
if (s==NULL) {
cout << "Error get the instance !" << endl;
return;
}
s->display () ;
(6) ;
return;
試題六
閱讀以下說明和Java代碼,將應填入 (n) 處的字句寫在答題紙的對應欄內。
【說明】
某繪圖系統(tǒng)存在Point、Line、Square三種圖元,它們具有Shape接口,圖元的類圖關系如圖6-1所示?,F要將Circle圖元加入此繪圖系統(tǒng)以實現功能擴充。已知某第三方庫已經提供了XCircle類,且完全滿足系統(tǒng)新增的Circle圖元所需的功能,但XCircle不是由Shape派生而來,它提供的接口不能被系統(tǒng)直接使用。代碼6-1既使用了XCircle又遵循了Shape規(guī)定的接口,既避免了從頭開發(fā)一個新的Circle類,又可以不修改繪圖系統(tǒng)中已經定義的接口。代碼6-2根據用戶指定的參數生成特定的圖元實例,并對之進行顯示操作。
繪圖系統(tǒng)定義的接口與XCircle提供的顯示接口及其功能如下表所示:
【代碼6-1】
class Circle (1) {
private (2) pxc;
public Circle(){pxc=new (3) ;
}
public void display(){
pxc. (4) ;
}
}
【代碼6-2】
public class Factory{
public (5) getShapeInstance(int type){ //生成特定類實例
switch(type){
case 0: return new Point ( );
case 1: return new Rectangle ( ) ;
case 2: return new Line ( ) ;
case 3: return new Circle ( ) ;
default: return null;
}
}
public class App{
public static void main (String argv[] )
if (argv. length != l) {
System. out.println ("error parameters !");
return;
}
inttype= (new Integer (argv[0])) .intValue (
Factory factory = new Factory ( ) ;
Shape s;
s=factory, (6)
if (s==null) {
System.out.println ( "Error get instance !" )
return;
}
s.display () ;
return;
}
}
閱讀以下說明和Visual Basic代碼,將應填入 (n) 處的字句寫在答題紙的對應欄內。
【說明】
某繪圖系統(tǒng)定義了一個抽象類IShape,現有三個類CPoint、CLine和CCircle,它們都具有IShape界面。相應的類圖關系如圖7-1所示。
已知某第三方庫已經提供了XCircle類,且完全滿足CCircle圖元顯示時所需的功能。代碼7-1是抽象類IShape的類模塊內容,代碼7-2實現了類CCircle的IShape界面,并使用了XCircle提供的顯示功能。
XCimle提供的顯示功能方法接口為displayIt。
【圖7-1】
【代碼7-1】
Public Color As Long
Sub draw()
'方法體不包括可執(zhí)行語句
End Sub
Sub move(stepx As Single,stepy As Smgle)
'方法體不包括可執(zhí)行語句
End Sub
【代碼7-2】
(1)
Private color As Long
… ‘其他定義省略
Private bridged As (2)
Private Sub Class_Initialize ( )
Set bridged= (3)
End Sub
Private Property (4) ( )As Long
IShape_Color = color
End Property
Private Property (5) (ByVal newColor As Long)
color=newColor
End Property
Private Sub IShape_draw ( ) '使用XCirele提供的顯示功能
(6)
End Sub
Private Sub IShape_move (stepx As Single, stepy As Single)
… '省略描述
End Sub