爲幫助同學們更好複習C語言,本站小編彙集了計算機二級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;
}