為幫助同學們更好複習C語言,yjbys小編彙集了計算機二級C語言的考試題及答案,希望能幫助到大家!
函式fun的功能是:統計長整數n的各個位上出現數字1、2、3的次數,並通過外部(全域性)變數c1,c2,c3返回主函式。例如:當n=123114350時,結果應該為: c1=3 c2=1 c3=2。
請在程式的下劃線處填入正確的內容並把下劃線刪除,使程式得出正確的結果。
注意:源程式存放在考生資料夾下的BLANK1.C中。
不得增行或刪行,也不得更改程式的結構!
給定源程式:
#include
int c1,c2,c3;
void fun(long n)
{ c1 = c2 = c3 = 0;
while (n) {
switch(___1___)
{
case 1: c1++;___2___;
case 2: c2++;___3___;
case 3: c3++;
}
n /= 10;
}
}
main()
{ long n=123114350L;
fun(n);
printf("nThe result :n");
printf("n=%ld c1=%d c2=%d c3=%dn",n,c1,c2,c3);
}
解題思路:
第一處:取個位數上的數,所以n%10就可以得到個位數。
第二處:switch條件判斷中,滿足條件做好後,必須使用break語句跳出選擇體,所以應填: break。
第三處:同第二處。
***************************************************
給定程式MODI1.C中函式fun的功能是: 統計一個無符號整數中各位數字值為零的個數, 通過形參傳回主函式;並把該整數中各位上最大的.數字值作為函式值返回。例如, 若輸入無符號整數30800, 則數字值為零的個數為3, 各位上數字值最大的是8。
請改正函式fun中指定部位的錯誤, 使它能得出正確的結果。
注意: 不要改動main函式, 不得增行或刪行, 也不得更改程式的結構!
給定源程式:
#include
int fun(unsigned n, int *zero)
{ int count=0,max=0,t;
do
{ t=n%10;
if(t=0)
count++;
if(max
n=n/10;
}while(n);
zero=count;
return max;
}
main()
{ unsigned n; int zero,max;
printf("nInput n(unsigned): "); scanf("%d",&n);
max = fun( n,&zero );
printf("nThe result: max=%d zero=%dn",max,zero);
}
解題思路:
第一處:條件相等符號為==。
第二處:由於zero是一個指標型變數,所以給它進行賦值時應帶指標,因此應改為: *zero=count;。
***************************************************
請編寫函式fun, 其功能是: 計算並輸出下列多項式的值:
1 1 1
S = 1 + ── + ─── + … + ─────
1*2 1*2*3 1*2*3*…50
例如, 在主函式中從鍵盤給n輸入50後,輸出為:s=1.718282。
注意: 要求n的值大於1但不大於100。
部分源程式在檔案PROG1.C中。
請勿改動主函式main和其他函式中的任何內容, 僅在函式fun的花括號中填入你編寫的若干語句。
給定源程式:
#include
double fun(int n)
{
}
main()
{ int n; double s;
printf("nInput n: "); scanf("%d",&n);
s=fun(n);
printf("nns=%fnn",s);
NONO();
}
解題思路:
本題是根據公式計算多項式的值。注意變數的取值範圍。
參考答案:
double fun(int n)
{
double s=0, t=1;
int i ;
for(i=1; i<=n; i++) {
t *= i;
s += 1./t;
}
return s;
}