軟件水平考試模擬練習題及解析
設函數的功能是交換X和y的值,且通過正確調用返回交換結果。不能正確執行此功能的函數是( )
① 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;
}
【解】設計實現交換兩個變量值的函數。希望函數調用能改變調用環境中的變量,方法之一是讓函數設置指針類型的形參,實參傳送給形參的是希望交換值的兩個變量的指針。函數的兩個形參得到這兩個變量的指針後,函數就能通過形參間接引用要交換值的'變量,或引用它們的值,或改變它們的值。從而實現從函數傳回信息存於調用環境的變量中。以上所述是設計交換變量值函數的一般原則,具體編寫函數時還需注意對上述原則的正確應用。
對於函數funa,該函數的定義滿足設置指針形參,並通過指針形參間接引用環境變量的要求。但是在函數體中定義了指針變量p,並在p宋明確設定它所指向的變量下,代碼*p=* x企圖將值存入它所指的變量中,這是初學者經常出現的一種嚴重的錯誤。該函數因有錯,不能實現交換變量值的功能。
對於函數funb,該函數不定義指針形參,函數體也沒有可用的指針間接引用調用環境中的變量,所以該函數也不能實現交換變量值的功能。
對於函數func,該函數正確定義了指針形參,函數體也正確通過指針形參間接引用環境中的變量,並正確定義了自己的局部變量。該函數能實現交換變量值的功能。
對於函數fund,該函數也正確定義指針形參和函數體通過形參間接引用環境變量。特別要指出的是,該函數是利用*x和*y的;日值與新值之間的關係實現問題要求的。其中第一個賦值使。x存有原來未交換之前的*x與*y之和;第二個賦值從這個和中減去原來的*y,並將差賦給*y,使*y的值是交換之前的*x的值;第三個賦值再次從和中減去新的*y,即減去交換之前的*x,這個差就是交換之前的*y,並將差賦給*x。經以上三個賦值,實現兩變量之間的值交換。所以不能正確執行交換變量值的函數是funa和funb,即正確選擇是①②。
-
七年級數學期會考試反思
在我們平凡的日常裏,我們的任務之一就是課堂教學,反思過去,是為了以後。那麼你有了解過反思嗎?以下是小編精心整理的七年級數學期會考試反思,僅供參考,歡迎大家閲讀。七年級數學期會考試反思1隨着時間的轉眼流逝,半學期已悄然過去,緊張的期會考試也已經畫上一個句號。這次...
-
三年級語文上冊第五單元考試卷S版
無論在學習或是工作中,我們都經常看到試卷的身影,在各領域中,只要有考核要求,就會有試卷,試卷是命題者按照一定的考核目的編寫出來的。你所瞭解的試卷是什麼樣的呢?以下是小編為大家整理的三年級語文上冊第五單元考試卷S版,僅供參考,大家一起來看看吧。一、看拼音,寫漢...
-
實用的考試之後作文(必備3篇)
在平時的學習、工作或生活中,大家都跟作文打過交道吧,藉助作文可以提高我們的語言組織能力。怎麼寫作文才能避免踩雷呢?以下是小編精心整理的考試之後作文3篇,僅供參考,歡迎大家閲讀。考試之後作文篇1期末考試試卷發下來後,我看了一下,就發現我考試時的粗心大意和注意...
-
英語考試周記
時間真是轉瞬即逝,一週又過去了,我們對人和事情也有了新的看法,是時候認真地做好週記了。相信許多人會覺得週記很難寫吧,以下是小編為大家整理的英語考試周記,歡迎大家分享。英語考試周記1一轉眼,會考來了。今天,是我們六年級考英語。我懷着一種期待的心情,等待着考試...