全國計算機二級考試C語言復習題與答案解析
三、程序修改題
下列給定程序中函數fun的功能是:將長整型數中各位上為奇數的數依次取出,構成一個新數放在t中。高位仍在高位,低位仍在低位。
例如,當s中的數為87653142時,t中的數為7531。請改正程序中的錯誤,使它能得出正確的結果。注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結構!
四、程序設計題
某學生的記錄由學號、8門課程成績和平均分組成,學號和8門課程的成績已在主函數中給出,請編寫函數fun,其功能是:求出該學生的平均分,并放入記錄的ave成員中。
例如,學生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應為78.875。注意:部分源程序在文件PROGl.C中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fIm的花括號中填入你編寫的若干語句。
》》參考答案與解析《《
二、程序填空題
(1)0
(2)10*x
(3)n/10
【考點分析】
本題考查:已知某數,如何求該數各個位數值,已知各個位數值,如何表示該數;除法運算。
【解題思路】
填空l:定義變量t用來存放某數的各個位數值,此處判斷t是否為偶數,即對2求余結果是否為0。
填空2:將t作為x的個位數,原來x的各個位上升l位,即x=10{x+1。
填空3:每循環一次,通過除法運算,去掉數值最后一位。
【解題寶典】
如果知道某數n的各個位的數值,可以得到該數值n,如n的個位為a、十位為b、百位為c,那么n=c}100+b*10+a。如果知道數值n,可以采用求余和除法操作來表示其各個位,如n%10(取個位)、n/J0(取十位),讀者可以自己考慮一下,如果是三位數,如何提取各個位?四位數呢?
三、程序修改題
【參考答案】
(1)}t=0;(2)if(d%2 1=O)或if(d%2==1)
【考點分析】
本題考查:指針型變量作為函數參數;if語句條件表達式,結合奇偶數的表示方法來確定該表達式內容。
【解題思路】
(1)由函數定義可知,變量t是指針變量,所以對t進行賦初值0是不對的。因為t指向的是存放新數的變量,所以此處應給新數賦初值0,即。t=0。
(2)變量d表示數S各個位上的數,此處的if條件應為判斷d是否為奇數。
四、程序設計題
void fun(STREC*a)
inti:
a一>ave=0.0:
fbr(i=0;iave=a—>ave+·一>s[i];/*求各門成績的總和}/
a->ave/=N;/}求平均分*/}
【考點分析】
本題考查:結構體類型成員運算,指向結構體類型的指針變量作函數參數。
【解題思路】
本題考查自定義形參的相關知識點,程序流程是這樣的:在如n()函數中求出平均分后,返回到主函數時平均分也要帶回,所以只能定義一個指針類型的形參STREC·a,此時,引用成員的方式可以使用指向運算符,即a一>ave和a—>s[i],當然也可用(*a),ave和(*a).S[i]。