C语言上机改错题

=2;s=2.0;
while(s<=q){t=s;
s=s+(double)(n+1)/n;n++;}
printf("n=%d\n ",n);return t;}
13求S的值。设S=(22/(1*3))*(42/(3*5))*(62/(5*7))* …*(2k)2/((2k-1)*(2k+1))例如,当k为10时,函数的值应为1.533852。
float fun(int k)
{int n; float s,w,p,q;n=1;s=1.0;
while(n<=k){w=2.0*n;p=w-1.0;q=w+1.0;
s=s*w*w/p/q;n++;}return s;}
14计算S=f(f(-1.0)+f(5.0))的值。结果为:2488.000000。f(x)函数定义如下:
┌2x^2+3x+4 (x<=2)
设f(x)=│
└-2x^2+3x-4 (x>2)
double f(double x)
{double y;
if (x<=2.0)y=2.0*x*x+3.0*x+4.0;
else y=-2.0*x*x+3.0*x-4.0;
return y;}
15计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。例如,当n为5时,函数值应为10.407143。f(x)函数定义如下:



double f(double x)
{if(x==0.0||x==2.0)return 0.0;
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<=n;i++)
{y=f(1.0*i);s+=y;}return s;}
16按以下递归公式求函数值。




例如,当给n输入5时,函数值为18
fun(int n)
{int c;
if(n==1)c=10;
else c=fun(n-1)+2;return(c);}
17计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y不相等,z和y不等。例如,当x的值为9,y的值为11,z的值为15时,函数值为-3.50。
#define FU(m,n) (m)/(n)
float fun(float a,float b,float c)
{float value;
value=FU(a+b,a-b)+FU(c+b,c-b);
return(value);}
18用二分法求方程2x3-4x2+3x-6=0的一个根,并要求绝对误差不超过0.001。例如,若给m输入-100,给n输入90,则函数求得的一个根值为2.000。
double funx(double x)
{return (2*x*x*x-4*x*x+3*x-6);}
double fun(doble m, double n)
{double r;r=(m+n)/2;
while(fabs(n-m)>0.001)
{if(funx(r)*funx(n)<0) m=r;
else n=r;r=(m+n)/2;}return r;}
19传入一个整数m,计算如下公式的值。t=1/2-1/3-…-1/m例如,若输入5,则应输出-0.283333。
double fun(int m)
{double t=1.0;int i;
for(i=2;i<=m;i++)t=t-1.0/i;
return t;}
20求出以下分数序列的前n项之和。1/2,2/3,3/5,5/8,8/13,13/21…和值通过函数值返回main函数。例如,若n的值为:5,则应输出:3.007051。
double fun(int n)
{int i;double t,s,a,b,c;s=0;
a=1;b=2;
for(i=0;i<n;i++){t=a/b;s=s+t;
c=a+b;a=b;b=c;}return s;}
21求出以下分数序列的前n项之和。2/1,3/2,5/3,8/5,13/8,21/13,……和值通过函数值返回主函数。例如,若输入n=5,则应输出8.391667。
double fun (int n)
{int a=2,b=1,c,k;double s=0.0;
for(k=1;k<=n;k++){s=s+1.0*a/b;
c=a;a+=b;b=c;}return(s);}
22计算1+2+3+……+n的和值。
float fun(int n) {double t;
if(n==1)return(1);
else t=fun(n-1)+n;return t;}
23应用递归算法求某数a的平方根。求平方根的迭代公式如下:x1=(x0+a/x0)/2。例如,2的平方根为1.414214。
double fun(double a,double


x0)
{ double x1,y;x1=(x0+a/x0)/2.0;
if(fabs(x1-x0)>=0.00001)
y=fun(a,x1);
else y=x1;return y;}
24求k!(k<13),例如:若k=10,则应输出3628800。
lo

C语言上机改错题相关文档

最新文档

返回顶部