2016年計算機二級C語言模擬考試題

學識都 人氣:2.9W

爲幫助同學們更好複習C語言,本站小編彙集了計算機二級C語言的考試題及答案,希望能幫助到大家!

2016年計算機二級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;

}