2015計算機二級《C語言程序設計》無紙化操作題三份(3)
1下列給定程序中,函數fun的功能是:計算如下公式前n項的和,并作為函數值返回。
例如,當形參n的值為10時,函數返回值為9.612558。
請在程序的下畫線處填入正確的內容并將下畫線刪除.使程序得出正確的結果。
注意:部分源程序給出如下。
不得增行或刪行,也不得更改程序的結構!
試題程序:
參考解析:
(1)0 (2)n (3)(t*t)
【考點分析】
本題考查:變量初始化操作,需注意該變量是用做累加器還是累乘器;for循環語句。
【解題思路】
填空l:程序開始定義了變量s,但沒有對其進行初始化,根據公式及后面的程序可知變量s用來存放公式的前n項和,因此該變量應初始化為0。
填空2:通過for循環語句將表達式各項進行累加,結果存于變量S中,循環變量i的取值范圍為l~12。
填空3:根據題目要求確定表達式通項。前面已定義t=2.0*i,因此此空應填(t*t)。
【解題寶典】
程序要求計算表達式的值時,一般都設定一個變量S并賦初值。如果s用來存放表達式的和,則賦初值為0;如果s用來存放表達式的積,則賦初值為1。
二、程序改錯題
2下列給定程序中fun函數的功能是:求表達式s=aa…aa-…-aaa-aa-a
(此處aa…aa,表示n個a,a和n的值在1~9之間)
例如,a=3,n=6,則以上表達式為:
s=333333-33333-3333-333-33-3其值是296298。
a和n是fun函數的形參,表達式的值作為函數值傳回main函數。
請改正程序中的錯誤,使它能計算出正確的結果。
注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!
試題程序:
參考解析:
【參考答案】
(1)long s=0,t=0;
(2)t=t/10;
【考點分析】
本題考查:變量賦初值操作;求余運算和除法運算的區別。
【解題思路】
(1)t用來存放每次循環后的多位數,第一次循環時,t應當是個位數,所以t的初始值應為0。
(2)根據題意,這里不需要求余數,而是要去掉個位數,重新組合為一個數,因此運用除法運算。
【解題寶典】
去掉數值n的個位數的方法是采用除法運算,如果需要取出個位數則使用求余運算,不要混淆。
三、程序設計題
3規定輸入的字符串中只包含字母和*號。請編寫函數fun,其功能是:將字符串尾部的*號全部刪除,前面和中間的*號不動。
例如,字符串中的內容為“****A*BC*DEF*G*******”,刪除后,字符串中的內容應當是“****A*BC*DEF*G”。在編寫函數時,不得使用C語言提供的字符串函數。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
試題程序:
參考解析:
【參考答案】
【考點分析】
本題考查:刪除字符串尾部*號,刪除的主要思想是把不刪除的字符保留起來。
【解題思路】
對于一個字符串要刪除其尾部的*號,只需要在最后一個不是*號的字符后面加上結束符號’\0’。具體操作為:首先找到字符串的結尾,然后從最后一個字符開始往前逐個判斷是否為*號,直到找到非*號字符為止,最后在該字符后 面加上結束符號‘\0’。