71. 以下關(guān)于用例(use case)的敘述中,說法不夠準(zhǔn)確的是 (76) 。
(76) A.用例將系統(tǒng)的功能范圍分解成許多小的系統(tǒng)功能陳述
B.一個(gè)用例代表了系統(tǒng)的一個(gè)單一的目標(biāo)
C.用例是一個(gè)行為上相關(guān)的步驟序列
D.用例描述了系統(tǒng)與用戶的交互
參考答案:(76)D。
解析:用例(use case)用來描述系統(tǒng)在對(duì)事件做出響應(yīng)時(shí)所采取的行動(dòng),即它確定了一個(gè)與系統(tǒng)參與者進(jìn)行交互,并由系統(tǒng)執(zhí)行的動(dòng)作序列?梢,一個(gè)用例本身并不是一個(gè)功能需求,它代表了系統(tǒng)的一個(gè)單一的目標(biāo),是一個(gè)行為上相關(guān)的步驟序列。
選項(xiàng)D所描述的范圍太廣,不夠準(zhǔn)確。在UML規(guī)范中,參與者是指系統(tǒng)所涉及到的人,或者是用戶在本系統(tǒng)中扮演的角色。一個(gè)參與者總是在系統(tǒng)的自動(dòng)化邊界之外。
72. 采用UML分析用戶需求時(shí),用例UCl可以出現(xiàn)在用例UC2出現(xiàn)的任何位置,那么UCl和UC2之間的關(guān)系是 (77) 關(guān)系。
(77) A.include
B.extend
C.generalize
D.call
參考答案:(77)C。
解析:用例之間的泛化(generalize)關(guān)系類似于類之間的泛化關(guān)系。子用例繼承父用例的行為與含義。子用例還可以增加或者覆蓋父用例的行為。子用例可以出現(xiàn)在父用例出現(xiàn)的任何位置。
本試題中,由于用例UCl可以出現(xiàn)在用例UC2出現(xiàn)的任何位置,因此UCl與UC2之間是選項(xiàng)C的“泛化(generalize)”關(guān)系。要注意,不是“用例UCl可以出現(xiàn)在用例UC2的任何位置”。
選項(xiàng)A的“包含(include)”關(guān)系,表示基礎(chǔ)用例在它內(nèi)部,說明某一位置上顯式的合并是另一個(gè)用例的行為。被包含用例從不孤立存在,僅作為某些包含它的更大的基礎(chǔ)用例的一部分出現(xiàn)。
選項(xiàng)B的“擴(kuò)展(extend)”關(guān)系,表示基礎(chǔ)用例在延伸用例間的一個(gè)位置上,隱式合并了另一個(gè)用例的行為;A(chǔ)用例可以單獨(dú)存在,但是在一定的條件下,它的行為可以被另一個(gè)用例的行為延伸。
選項(xiàng)D的“call”可解釋成“調(diào)用”。
73.若有以下定義,則值為3的表達(dá)式是(78)
inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;
(78) A. p+=2,*(p++)
B. p+=2,*++p
C. p+=3,*p++
D. p+=2,++*p
參考答案:(78) A。
解析:數(shù)組a有10個(gè)元素,分別有值1至10,指針變量p指向a[0],A逗號(hào)表達(dá)式p+=2,*(P++),先是P+=2使P指向a[2],接著是*(P++),以當(dāng)時(shí)P所指變量a[2]取內(nèi)容3為表達(dá)式的值,同時(shí)使p指向a[3]。B返號(hào)表達(dá)式p+=2,*++p,先是p+=2使p指向a[2],以后是*++p,又使p增1,讓它指向a[3],并取指針p所指變量a[3]的內(nèi)容4作為表達(dá)式的值。C逗號(hào)表達(dá)式p+=3,*p++,先是p+=3使p指向a[3],以后是*p++,表達(dá)式的值是a[3]為4,而使p指向a[4]。D逗號(hào)表達(dá)式p+=2,++*p,先是p+=2,使p指向a[2],以后是++*p,因當(dāng)時(shí)的*p就是a[2],++a[2]使a[2]增1,變成4,并以4為表達(dá)式的值。所以只有p+=2,*(p++)的值是3。所以解答是A。
74.要求函數(shù)的功能是在一維數(shù)組a中查找x值。若找到,則返回所在的下標(biāo)值;否則,返回0。設(shè)數(shù)據(jù)放在數(shù)組元素的a[1]到a[n]中。在以下給出的函數(shù)中,不能正確執(zhí)行此功能的函數(shù)是(79)
(79)A. funa(int*a,intn,intx)
{*a=x;
whlie(a[n]!=x)n--;
returnn;
}
B. funb(int*a,intn,intx)
{intk;
for(k=l;k<=n;k++)
if(a[k]==x)returnk;
return0;
}
C. func(inta[],intn,intx)
{int*k;
a[O]=x;k=a+n;
while(*k!=x)k--;
returnk-n;
}
D. fund(inta[],intn,intx)
{intk=0;
dok++;
while((kif((kelsereturn0;
}
參考答案:(79)C。
解析:在數(shù)組中找指定值是經(jīng)常遇到的計(jì)算要求,有多種編程方法。在這里,數(shù)據(jù)預(yù)放在數(shù)組下標(biāo)1至n的元素中,下標(biāo)為0的元素沒有放數(shù)據(jù),程序可以利用這個(gè)位置簡(jiǎn)化查找函數(shù)。函數(shù)funa先將要查找的情放入a[0],從數(shù)據(jù)表的最后一個(gè)元素開始逆序向前查找。這樣做的好處是循環(huán)條件不必?fù)?dān)心因數(shù)組中原先沒有值為x的元素而一直順序查找下去,訪問不是數(shù)表的元素,需插入條件n>O。在a[0]處放入x后,這個(gè)條件就不必要了,循環(huán)至少在訪問了a[0]后終止,并返回0值。所以該函數(shù)能完成指定的功能。函數(shù)funb采用常規(guī)的辦法編寫,循環(huán)在a[1]與a[n]之間順序?qū)ふ遥坏┱业搅⒓捶祷卣业教幍南聵?biāo),直至查找循環(huán)結(jié)束,查不到指定的值而返回0值。函數(shù)func采用與函數(shù)funa相同的方法,不過是另外引入一個(gè)指針變量。但是該函數(shù)return語(yǔ)句后的表達(dá)式有嚴(yán)重的錯(cuò)誤,應(yīng)返回k-a,兩指針的差,其值等于找到元素的下標(biāo)。表達(dá)式k-n是指針k向前移n個(gè)位置的指針值。函數(shù)fund預(yù)置k為0,循環(huán)讓k增1,并在k在界內(nèi)和a[k]不等于x的情況下循環(huán)。循環(huán)結(jié)束有兩種情況,或k已不在界內(nèi),或k在界內(nèi),并且a[k]等于x。若是后者,函數(shù)返回k,而若前者,函數(shù)返回比該函數(shù)也能正確完成查找工作。這樣,不能正確完成查找工作的函數(shù)是函數(shù)fonc。所以正確選擇是C。
相關(guān)推薦:軟件設(shè)計(jì)師練習(xí)試題及答案解析匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |