試題一至試題四是必答題 |
試題一
閱讀下列說明和數據流圖,回答問題1至問題4,將解答填入答題紙的對應欄內。
[說明]
某基于微處理器的住宅安全系統,使用傳感器(如紅外探頭、攝像頭等)來檢測各種意外情況,如非法進入、火警、水災等。
房主可以在安裝該系統時配置安全監控設備(如傳感器、顯示器、報警器等),也可以在系統運行時修改配置,通過錄像機和電視機監控與系統連接的所有傳感器,并通過控制面板上的鍵盤與系統進行信息交互。在安裝過程中,系統給每個傳感器賦予一個編號(即id)和類型,并設置房主密碼以啟動和關閉系統,設置傳感器事件發生時應自動撥出的電話號碼。當系統檢測到一個傳感器事件時,就激活警報,撥出預置的電話號
碼,并報告關于位置和檢測到的事件的性質等信息。
[數據流圖1-3]
加工4的細化圖
[問題1]
數據流圖1-1(住宅安全系統頂層圖)中的A和B分別是什么?
[問題2]
數據流圖1-2(住宅安全系統第0層DFD圖)中的數據存儲“配置信息”會影響圖中的哪些加工?
[問題3]
將數據流圖1—3(加工4的細化圖)中的數據流補充完整,并指明加工名稱、數據流的方向(輸入/輸出)和數據流名稱.
[問題4]
請說明邏輯數據流圖(LogicalDataFlowDiagram)和物理數據流圖(PhysicalData Flow
Diagram)之間的主要差別。
試題二
閱讀下列說明和算法,回答問題1和問題2,將解答填入答題紙的對應欄內。
[說明]
算法2-1是用來檢查文本文件中的圓括號是否匹配。若文件中存在圓括號沒有對應的左括號或者右括號,則給出相應的提示信息,如下所示:
文件 |
提示信息 |
(1+2) | |
abc) | 缺少對應左括號:第2行,第4列 |
((def)gx)) | 缺少對應左括號:第3行,第10列 |
(((h) | |
ij)(k | |
(1ml) | 缺少對應右括號:第5行,第4列; 第4行,第1列 |
在算法2-1中,stack為一整數棧。算法中各函數的說明如下表所示:
函數名 |
函數功能 |
push(int i) |
將整數i壓入棧stack中。 |
pop() |
stack的棧頂元素出棧。 |
empty() |
判斷stack棧是否為空.若為空,函數返回1,否則函數返回0。 |
nextch() |
讀取文本文件中的下一個字符,并返回該字符的ASCII值,將字符所在的行號以及字 符在行中的位置分別存儲到變量row和col中,若遇到文件結束符,則將變量EOF 置為true; |
kind(charch) |
判斷字符ch是左括號還是右括號,若是左括號,函數返回1,若是右括號,函數返回2, 若兩者都不是,函數返回0。 |
[算法2-1]
將棧stack置空,置EOF為false
ch←nextch();
while(not EOF)
k←kind(ch);
if (k ==__(1)__)
push(__(2)__); push(__(3)__);
elseif( k ==__(4)__)
if(not empty())
pop();pop():
else
顯示錯誤信息(缺少對應左括號或右括號);
顯示行號row;顯示列號col;
endif
endif
ch←nextch();
endwhile
if(not empty())
顯示錯誤信息(缺少對應左括號或右括號);
while(not empty())
row←pop(); col←pop();
顯示行號row;顯示列號col;
endwhile
endif
為了識別更多種類的括號,對算法2-1加以改進后得到算法2-2。算法2-2能夠識別圓括號,方括號和花括號(不同類型的括號不能互相匹配)。改進后,函數kind(charch)的參數及其對應的返回值如下表所示:
ch | ( | ) | { | } | [ | ] | 其它 |
返回值 | 1 | 2 | 3 | 4 | 5 | 6 | 0 |
[算法2-2]
將棧stack置空,置EOF為false
ch←nextch();
while(not EOF)
k←kind(ch);
if(k > 0)
if(判斷條件1)
push(__(5)__):push(__(6)__);push(__(7)__):
elseif( 判斷條件2 and 判斷條件3 )
pop(); pop(); pop();
else
顯示錯誤信息(缺少對應左括號或右括號);
顯示行號row;顯示列號col;
endif
endif
ch←nextch();
endwhile
if(not empty())
顯示錯誤信息(缺少對應左括號或右括號);
while(not empty())
pop();row←pop();col←pop();
顯示行號row;顯示列號col;
endwhile
endif
[問題1]
請將[算法2-1]和[算法2-2]中(1)至(7)處補充完整。
[問題2]
請從下面的選項中選擇相應的判斷邏輯填補[算法2-2]中的“判斷條件廣至“判斷條件3”。注意,若“判斷條件2”的邏輯判斷結果為假,就無需對“判斷條件3”進行判斷。
(a)字符是括號 (b)字符是左括號 (c)字符是右括號 (d)?铡(e)棧不空
(f)棧頂元素表示的是與當前字符匹配的左括號
(g)棧頂元素表示的是與當前字符匹配的右括號
試題三
閱讀下列說明以及圖3-1和圖3-2,回答問題1、問題2和問題3,將解答填入答題紙的對應欄內。
[說明]
某電話公司決定開發一個管理所有客戶信息的交互式網絡系統。系統的功能如下:
1.瀏覽客戶信息:任何使用Internet的網絡用戶都可以瀏覽電話公司所有的客戶信息(包括姓名、住址、電話號碼等)。
2.登錄:電話公司授予每個客戶一個帳號。擁有授權帳號的客戶,可以使用系統提供的頁面設置個人密碼,并使用該帳號和密碼向系統注冊。
3.修改個.人信息:客戶向系統注冊后,可以發送電子郵件或者使用系統提供的頁面,對個人信息進行修改。
4.刪除客戶信息:只有公司的管理人員才能刪除不再接受公司服務的客戶的信息。
系統采用面向對象方法進行開發,在開發過程中認定出的類如下表所示:
編號 | 類名 | 描述 |
1 | InternetClient | 網絡用戶 |
2 | CustomerList | 客戶信息表,記錄公司所有客戶的信息 |
3 | Customer | 客戶信息,記錄單個客戶的信息 |
4 | CompanyCustomer | 公司客戶 |
5 | InternalClient | 公司的管理人員 |
[圖3-1]
[問題1]
在需求分析階段,采用UML的用例圖(use case diagram)描述系統功能需求,如圖3-1所示。請指出圖中的A、B、C和D分別是哪個用例?
[問題2]
在 UML 中,重復度(Multiplicity)定義了某個類的一個實例可以與另一個類的多少個實例相關聯。通常把它寫成一個表示取值范圍的表達式或者一個具體的值。例如圖
3-2 中的類 InternetClient 和CustomerList,InternetClient 端的“0..*”表示:一個
Custo~erList 的實例可以與 0 個或多個 InternetClient 的實例相關聯;CustomerList
端的“1”表示:一個InternetClient的實例只能與一個CustomerList的實例相關。
請指出圖3-2中(1)到(4)處的重復度分別為多少?
[問題3]
類通常不會單獨存在,因此當對系統建模時,不僅要識別出類,還必須對類之間的相互關系建模。在面向對象建模中,提供了四種關系:依賴(dependency)、概括(generalization)、關聯(aassociation)和聚集(aggregation)。請分別說明這四種關系的含義,并說明關聯和聚集之間的主要區別。
試題四
在COMET型計算機上可以使用試卷上所附的CASL匯編語言,閱讀程序說明和CASL程序,把應填入__(n)__處的字句寫在答卷的對應欄內。
[程序4說明]
本程序將16位無符號二進制數轉換為5位十進制數,轉換結果用ASCII碼表示,并從高位至低位依次存放在首地址為BTASC的連續5個內存單元中。待轉換的16位無符號二進制數存放在DATA內存單元中。
[程序4]
START
PROGBC LD GRO,DATA
LEA GR1,0
LEA GR3,48
LOOP1 CPL GRO,WDT,GR1
JPZ LOOP2
ST GR3,BTASC,GR1
LEA GR1,1,GR1
LEA GR2,-4,GR1
JNZ LOOP1
__(1)__
LOOP2 LEA GR2,48
LOOP3 CPL GRO,WDT,GR1
JMI NEXT
__(2)__
LEA GR2,1,GR2
JMP LOOP3
NEXT __(3)__
LEA GR1,1,GR1
LEA GR2,-4,GR1
JNZ LOOP2
LAST __(4)__ ;處理個位數
__(5)__
EXIT
C48 DC 48
WDT DC 10000
DC 1000
DC 100
DC 10
BTASC DS 5
DATA DC #FA59H
END
從下列的2道試題(試題五至試題六)中任選1道解答。 如果解答的試題數超過1道,‘則題號小的1道解答有效。 |
試題五
閱讀下列函數說明和C函數,將應填入__(n)__處的字句寫在答題紙的對應欄內。
[函數5說明]
函數DeleteNode(Bitree*r,inte)的功能是:在樹根結點指針為r的二叉查找(排序)樹上刪除鍵值為e的結點,若刪除成功,則函數返回0,否則函數返回-1。二叉查找樹結點的類型定義為:
typedef struct Tnode{
int data: /*結點的鍵值*/
struct Tnode *Lchild,*Rchiid; /*指向左、右子樹的指針*/
}*Bitree;
在二叉查找樹上刪除一個結點時,要考慮三種情況:
、偃舸齽h除的結點p是葉子結點,則直接刪除該結點;
、谌舸齽h除的結點p只有一個子結點,則將這個子結點與待刪除結點的父結點直接連接,然后刪除結點;
、廴舸齽h除的結點p有兩個子結點,則在其左子樹上,用中序遍歷尋找關鍵值最大的結點s,用結點s的值代替結點p的值,然后刪除結點s,結點s必屬于上述①、②情況之一。
[函數5]
int DeleteNode(Bitree *r,int e) {
Bitree p:*r, pp, S, C:
while(__(1)__ ){ /*從樹根結點出發查找鍵值為e的結點*/
pp=p;
if (e <p->data) p = p->Lchild;
else p = p->Rchild;
}
if(!p) return -1; /*查找失敗*/
if (p->Lchiid && p->Rchild){ /*處理情況③*/
s = __(2)__ ;pp = p;
while(__(3)__) { pp = s;s = s->Rchild;)
p->data = S->data; p = s;
}
/* 處理情況①、②* /
if(__(4)__) c = p->Lchild;
else c=p->Rchild;
if (p == *r) *r = C;
else if (__(5)__) pp->Lchild = c;
else pp->Rchild:C;
free(p);
return 0;
}
試題六
閱讀下列說明和C++程序,將應填入__(n)__處的字句寫在答題紙的對應欄內.
[程序6說明]
C++語言本身不提供對數組下標越界的判斷.為了解決這一問題,在程序6中定義了相應的類模板,使得對于任意類型的二維數組,可以在訪問數組元素的同時,對行下標和列下標進行越界判斷,并給出相應的提示信息.
[程序6]
#include <iostream.h>
template <class T> class Array;
template <Class T> class ArrayBody {
friend__(1)__;
T* tpBody;
int iRows,iColumns,iCurrentRow;
ArrayBody(int iRsz,int iCsz){
tpBody = __(2)__;
iRows = iRsz;iColumns = iCsz;iCurrentRow = -1:
}
public;
T& operator[](int j){
bool row_error,column_error;
row_error = column_error =false;
try {
if(iCurrentRow < 0 || iCurrentRow >= iRows)
row_error = true;
if(j<0 || j>= iColumns)
column_error = true;
if(row_error == true || column_ error == true)
__(3)__;
}
catch(char){
if(row_error == true)
cerr << "行下標越界[" << iCurrentRow <<
"]";
if(column_error = true)
cerr << "列下標越界[" << j << "]";
cout << "\n";
}
return tpBody[iCurrentRow * iColumns + j];
}
~Arraygody(){delete[]tpBody:}
};
template <class T> class Array {
ArrayBody<T> tBody;
public;
ArrayBody<T> & operator[](int i) {
__(4)__;
return tBody;
}
Array(int iRsz,int iCsz):__(5)__ { }
};
void main()
{
Array<int> a1(10,20);
Array<double> a2(3,5);
int b1;
double b2; ·
b1 = a1[-5][10]; //有越界提示:行下標越界[-5]
b1 = a1[10][15]; //有越界提示:行下標越界[10]
b1 = a1[1][4]; //沒有越界提示
b2 = a2[2][6]; //有越界提示:列下標越界[6]
b2 = a2[10][20]; //有越界提示;行下標越界[10]列下標越界[20]
b2 = a2[1][4]; //沒有越界提示
}
文章來源于領測軟件測試網 http://www.kjueaiud.com/