一、程式填空題(共18分)
下列給定程式中,函式fun的功能是:求ss所指字串陣列中長度最短的字串所在的行下標,作為函式值返回,並把其串長放在形參n所指的變數中。ss所指字串陣列中共有M個字串,且串長小於N。請在程式的下劃線處填入正確的內容並將下劃線刪除,使程式得出正確的結果。
二、程式修改題(共18分)
下列給定程式中函式fun的功能是:將tt所指字串中的小寫字母全部改為對應的大寫字母,其他字元不變。
例如,若輸入“Ab,cD”,則輸出“AB,CD”。
請改正程式中的錯誤,使它能得出正確的結果。
注意:部分源程式在檔案MODIl.C中,不得增行或刪行,也不得更改程式的結構!
三、程式設計題(共24分)
編寫函式fun,其功能是:將所有大於1小於整數m的非素數存人XX所指陣列中,非素數的個數通過k返回。
例如,若輸入l7,則應輸出:4 6 8 9 10 12 14 15 16。注意:部分源程式在檔案PROGl.C中。
請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你編寫的若干語句。
參考答案
一、程式填空題
【參考答案】
(1)M(2)<(3)k
【考點分析】
本題考查:for迴圈語句的迴圈條件;if語句條件表示式;return語句完成函式值的返回。
【解題思路】
填空1:題目指出88所指字串陣列中共有M個字串,所以for迴圈語句迴圈條件是i
填空2:要求求長度最短的字串,t n中存放的是已知字串中長度最短的字串的長度,這裡將當前字串長度與+n1七較,若小於t n,則將該長度值賦給+n,因此if語句的務件表示式為1en<+n。
填空3:將最短字串的`行下標作為函式值返回,變數-儲存行下標的值。
二、程式修改題
【參考答案】
(1)if((tt[i]>=’a’)&&(tt[i]<=‘z’))
(2)tt[i]一=32;
【考點分析】
本題考查:if語句條件表示式;小寫字母轉大寫字母的方法。
【解題思路】
(1)分析本題可知,要判斷字元是否為小寫字母,即判斷其是否在a—z之間,所以這裡需要進行連續的比較,用&&。(2)從ASCI1碼錶中可以看出,小寫字母的ASCI1碼值比對應大寫字母的ASCI1值大32。將字串中的小寫字母改為大寫字母的方法是:從字串第一個字元開始,根據ASCI1碼值判斷該字母是不是小寫字母,若是,則ASCI1碼值減32即可。
三、程式設計題
【參考答案】
【考點分析】
本題考查:如何判斷非素數;迴圈判斷結構;陣列的引用。
【解題思路】
題目要求將1—m之問的非素數存人陣列中,應使用迴圈判斷結構。迴圈語句用來遍歷1一m之間的每個數,判斷語句用來判斷該數是否為素數,若不是素數,則將其存人陣列中。這道題目是考查—個數是否為素數的簡單延伸,只要掌握了判斷素數的方法,問題便能順利解決。
【解題寶典】
判定一個數是否為素數,即該數除了能被1和它本身外,不能被任何數整除。
程式碼實現為:
for(j=2;j
此語句需要熟記,很多判斷素數的題目也可通過此法解決。