计算机四级c语言试题,计算机四级C语言上机题.doc

类型一 数列规律编程

1、编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。

S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)

例如:若n的值为11时,函数的值为1.833333。

#include

#include

#include

#include

float fun(int n)

{

}

void main()

{

int n;

float s;

system("CLS");

printf("\nPlease enter N: ");

scanf("%d",&n);

s=fun(n);

printf("The result is:%f\n " , s);

}

【参考答案】

float fun(int n)

{

int i,s1=0;

float s=0.0;

for(i=1;i<=n;i++)

{s1=s1+i; /*求每一项的分母*/

s=s+1.0/s1; /*求多项式的值*/

}

return s;

}

【解析】本题中s1用来表示式中每一项的分母,而每一项的分母都是由前一项分母加项数。注意:由于s1定义成一个整型,所以在s=s+1.0/s1中不能把1.0写成1。

2、请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.005,即某项小于0.005时停止迭代)。

π/2=1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+…+1*2*3*…*n/(3*5*7*…*(2n+1))

程序运行后,如果输入精度0.0005,则程序输出3.14…。

#include

#include

#include

double fun(double eps)

{

}

void main()

{

double x;

printf("Input eps: ");

scanf("%lf",&x);

printf("\neps=%1f,PI=%1f\n",x,fun(x));

}

【参考答案】

double fun(double eps)

{

double s=1.0,s1=1.0;

int n=1;

while(s1>=eps) /*当某项大于精度要求时,继续求下一项*/

{s1=s1*n/(2*n+1); /*求多项式的每一项*/

s=s+s1; /*求和*/

n++;

}

return 2*s;

}

【解析】从第2项开始以后的每一项都是其前面一项乘以n/(2*n+1),程序中用s1来表示每一项,s来表示求和后的结果。要注意s1和s的初值都为1.0,返回时要乘以2即return 2*s,这跟数学思想有关系,学习者理解后就很简单了。

3、请编写函数fun,其功能是:计算并输出如下多项式值:

Sn=l+1/1!+1/2! +1/3! +1/4!+…+1/n!

例如,若主函数从键盘给n输入15,则输出为S=2.718282。

注意:n的值要求大于1但不大于100。部分源程序给出如下。

#include

double fun(int n)

{

}

main ( )

{

int n;

double s;

printf("Input n:");

scanf("%d",&n);

s=fun(n);

printf("s=%f\n",s);

}

【参考答案】

double fun(int n)

{

double t,sn=1.0;

int i,j;

for(i=1;i<=n;i++)

{

t=1.0;

for(j=1;j<=i;j++)

t*=j;

sn+=1.0/t;

}

return sn;

}

【解析】该程序的数学思路是:在程序中输入n后,以前n项的阶乘作为分母递加,由于t是浮点类数据,所以s+=1.0/t,for循环的作用是每一次循环将1.0/t与sn相加,并将值存入sn中。

4、请编写函数fun,它的功能是:求Fibonacci数列中大于t(t>3)的最小数,结果由函数返回。其中Fibonacci数列F(n)的定义为:

F(0)=0,F(1)=1

F(n)=F(n-1)+F(n-2)

假如:当t=l000时,函数值为1597。

#include

#inclu

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值