- 相關(guān)推薦
軟件水平考試模擬練習(xí)題及解析
設(shè)函數(shù)的功能是交換X和y的值,且通過正確調(diào)用返回交換結(jié)果。不能正確執(zhí)行此功能的函數(shù)是( )
、 funa(int *x, int *y)
{
int * p;
* p=*x; *x=*y; *y=*p;
}
② funb(int x, int y)
{
int t;
t=x;x=y;y=t;
}
③ func(int *x, int *y)
{
int p;
p=*x; *x=*y; * y=p;
}
④fund( int *x,int *y)
{
*x=*x+ *y;*y=*x- *y;*x= *x- *y;
}
【解】設(shè)計(jì)實(shí)現(xiàn)交換兩個(gè)變量值的函數(shù)。希望函數(shù)調(diào)用能改變調(diào)用環(huán)境中的變量,方法之一是讓函數(shù)設(shè)置指針類型的形參,實(shí)參傳送給形參的是希望交換值的兩個(gè)變量的指針。函數(shù)的兩個(gè)形參得到這兩個(gè)變量的指針后,函數(shù)就能通過形參間接引用要交換值的變量,或引用它們的值,或改變它們的值。從而實(shí)現(xiàn)從函數(shù)傳回信息存于調(diào)用環(huán)境的變量中。以上所述是設(shè)計(jì)交換變量值函數(shù)的一般原則,具體編寫函數(shù)時(shí)還需注意對(duì)上述原則的正確應(yīng)用。
對(duì)于函數(shù)funa,該函數(shù)的定義滿足設(shè)置指針形參,并通過指針形參間接引用環(huán)境變量的要求。但是在函數(shù)體中定義了指針變量p,并在p宋明確設(shè)定它所指向的變量下,代碼*p=* x企圖將值存入它所指的變量中,這是初學(xué)者經(jīng)常出現(xiàn)的一種嚴(yán)重的錯(cuò)誤。該函數(shù)因有錯(cuò),不能實(shí)現(xiàn)交換變量值的功能。
對(duì)于函數(shù)funb,該函數(shù)不定義指針形參,函數(shù)體也沒有可用的指針間接引用調(diào)用環(huán)境中的變量,所以該函數(shù)也不能實(shí)現(xiàn)交換變量值的功能。
對(duì)于函數(shù)func,該函數(shù)正確定義了指針形參,函數(shù)體也正確通過指針形參間接引用環(huán)境中的變量,并正確定義了自己的局部變量。該函數(shù)能實(shí)現(xiàn)交換變量值的功能。
對(duì)于函數(shù)fund,該函數(shù)也正確定義指針形參和函數(shù)體通過形參間接引用環(huán)境變量。特別要指出的是,該函數(shù)是利用*x和*y的;日值與新值之間的關(guān)系實(shí)現(xiàn)問題要求的。其中第一個(gè)賦值使。x存有原來未交換之前的*x與*y之和;第二個(gè)賦值從這個(gè)和中減去原來的*y,并將差賦給*y,使*y的值是交換之前的*x的值;第三個(gè)賦值再次從和中減去新的*y,即減去交換之前的*x,這個(gè)差就是交換之前的*y,并將差賦給*x。經(jīng)以上三個(gè)賦值,實(shí)現(xiàn)兩變量之間的值交換。所以不能正確執(zhí)行交換變量值的函數(shù)是funa和funb,即正確選擇是①②。
【軟件水平考試模擬練習(xí)題及解析】相關(guān)文章:
學(xué)業(yè)水平模擬考試語(yǔ)文試卷07-04
計(jì)算機(jī)軟件水平考試的簡(jiǎn)介07-02
初中學(xué)業(yè)水平考試07-03
稅務(wù)代理實(shí)務(wù)的模擬練習(xí)題07-02
2011年銀行從業(yè)資格證考試《個(gè)人理財(cái)》模擬試題及答案解析07-02
市場(chǎng)營(yíng)銷學(xué)模擬練習(xí)題07-03
2014年銀行從業(yè)資格證考試《個(gè)人理財(cái)》模擬試題及答案解析207-02
初中學(xué)業(yè)水平考試方案06-29