2011年6月安徽省计算机水平(二级c语言试题)及解析答案,2011年计算机等级二级C语言填空题练习题及答案解析(2)...

求和、平均值

1. 请补全main函数,该函数的功能是:从键盘输入一个长整数,如果这个数是负数,则取它的的绝对值,并显示出来。

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

解析:此题要注意的是数据类型,输入输出的格式控制。

长整数使用 ld(或Ld)

双精度浮点数使用 lf(或Lf)

此处 d f 不能大写

2. 请在函数fun的横线上填写若干个表达式,使从键盘上输入一个整数n,输出斐波纳契数列。斐波契数列是一种整数数列,其中每数等于前两数之后,如: 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)

解析:求斐波契数列:一项等于其前两项的和。

这也是一个递归。

求斐波契数列的第n项的值,n从0开始。

3. 请补全函数fun,该函数的功能是求出以下分数序列的前n项之和。和值通过函数值返回到main函数。

1) #include2) #include3) ___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总结出数列的表达式。第1项是a/b=2/1;3/2 4/3

故:s=2/1+3/2+4/3+…… 和的初值是0。

记住:两个整数进行算术运算结果也是整数,算术运算中只要有一个操作数是实数,运算结果就是实数。

本题希望结果是实数,故要进行强制类型转换,2,3只要有一个进行强制转换就可以了。

最后,函数需要有一个返回值类型,当然也是双精度浮点数了。

4. 给定程序的功能是计算并输出下列级数的前N项之和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行,

从数学的角度总结出数列的表达式。

(n+1)/n n从2开始,每次增加1,故:SN=2+3/2+4/3+…… 和的初值是2.0

循环条件是“SN大于q为止” ,while是满足条件才循环,故填写s <= q

最后,函数需要有一个返回值。

5. 给定程序功能是计算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

解析:函数f ( double x) 求每个单项的值。 if……else的条件是互斥的。

fun( ) 是求和。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值