點(diǎn)擊查看:計(jì)算機(jī)等考二級(jí)C語言填空題練習(xí)及精解匯總>>
二、求和、平均值
1. 請(qǐng)補(bǔ)全main函數(shù),該函數(shù)的功能是:從鍵盤輸入一個(gè)長整數(shù),如果這個(gè)數(shù)是負(fù)數(shù),則取它的的絕對(duì)值,并顯示出來。
main()
{long int n;
clrscr() ;
printf("Enter the data:\n");
scanf(___1___);
printf("****** the origial data ********\n");
if(n<0)
___2___
printf("\n\n");
printf(___3___);
}
第一處:"%ld",&n
第二處:n=-n
第三處:"%ld",n
解析:此題要注意的是數(shù)據(jù)類型,輸入輸出的格式控制。
長整數(shù)使用 ld(或Ld)
雙精度浮點(diǎn)數(shù)使用 lf(或Lf)
此處 d f 不能大寫
2. 請(qǐng)?jiān)诤瘮?shù)fun的橫線上填寫若干個(gè)表達(dá)式,使從鍵盤上輸入一個(gè)整數(shù)n,輸出斐波納契數(shù)列。斐波契數(shù)列是一種整數(shù)數(shù)列,其中每數(shù)等于前兩數(shù)之后,如: 0 1 1 2 3 5 8 13……
1) int fun(int n){
2) if(___1___)
3) return 0;
4) else if(___2___)
5) return 1;
6) else
7) return___3___;
8) }
第一處:n==0
第二處:n==1
第三處:fun(n-1)+fun(n-2)
解析:求斐波契數(shù)列:一項(xiàng)等于其前兩項(xiàng)的和。
這也是一個(gè)遞歸。
求斐波契數(shù)列的第n項(xiàng)的值,n從0開始。
3. 請(qǐng)補(bǔ)全函數(shù)fun,該函數(shù)的功能是求出以下分?jǐn)?shù)序列的前n項(xiàng)之和。和值通過函數(shù)值返回到main函數(shù)。
1) #include
2) #include
3) ___1___ fun(int n)
4) {int a,b,c,k;
5) double s;
6) s=0.0;
7) a=2;
8) b=1;
9) for(k=1;k<=n;k++)
10) {
11) s=s+(___2___)a/(___3___)b;
12) c=a;
13) a=a+b;
14) b=c;
15) }
16) return s;
17) }
第一處:double
第二處:double
第三處:double
解析:從第11----14總結(jié)出數(shù)列的表達(dá)式。第1項(xiàng)是a/b=2/1;3/2 4/3
故:s=2/1+3/2+4/3+…… 和的初值是0。
記住:兩個(gè)整數(shù)進(jìn)行算術(shù)運(yùn)算結(jié)果也是整數(shù),算術(shù)運(yùn)算中只要有一個(gè)操作數(shù)是實(shí)數(shù),運(yùn)算結(jié)果就是實(shí)數(shù)。
本題希望結(jié)果是實(shí)數(shù),故要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,2,3只要有一個(gè)進(jìn)行強(qiáng)制轉(zhuǎn)換就可以了。
最后,函數(shù)需要有一個(gè)返回值類型,當(dāng)然也是雙精度浮點(diǎn)數(shù)了。
4. 給定程序的功能是計(jì)算并輸出下列級(jí)數(shù)的前N項(xiàng)之和SN,直到SN大于q為止,q的值通過形參傳入。
1) double fun( double q )
2) {int n;
3) double s;
4) n = 2;
5) s = 2.0;
6) while (s ___1___ q)
7) {
8) s=s+(double)(n+1)/n;
9) ___2___ ;
10) }
11) printf("n=%d\n",n);
12) ___3___ ;
13) }
第一處:s <= q
第二處:n++
第三處:return s
解析:從第8行,
從數(shù)學(xué)的角度總結(jié)出數(shù)列的表達(dá)式。
(n+1)/n n從2開始,每次增加1,故:SN=2+3/2+4/3+…… 和的初值是2.0
循環(huán)條件是“SN大于q為止” ,while是滿足條件才循環(huán),故填寫s <= q
最后,函數(shù)需要有一個(gè)返回值。
5. 給定程序功能是計(jì)算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…+f(n)的值。
float f( double x)
{
if (x == 0.0 || x == 2.0)
return ___1___;
else if (x < 0.0)
return (x -1)/(x-2);
else
return (x +1)/(x-2);
}
double fun( int n )
{int i; double s=0.0, y;
for (i= -n; i<=___2___; i++)
{ y=f(1.0*i); s += y; }
return ___3___;
}
main ( )
{
printf("%f\n", fun(5) );
}
第一處:0.0
第二處:n
第三處:s
解析:函數(shù)f ( double x) 求每個(gè)單項(xiàng)的值。 if……else的條件是互斥的。
fun( ) 是求和。
編輯推薦:
2011年計(jì)算機(jī)等級(jí)考試二級(jí)C語言常見問題匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |