二级C语言编程练习题的分类汇总-----数学公式类问题的大探讨(6-18)

阶乘(2):

  • 阶乘公式1.0:
float  fun(int m, int n)
{
	int i,j;
	float a=1.0,b=1.0,c=1.0,p=1.0;
	for(i=1;i<=m;i++)
		a*=i;
	for(i=1;i<=n;i++)
		b*=i;
	for(i=1;i<=m-n;i++)
		c*=i;
	return  a/(b*c);
}
  • 阶乘公式2.0:
double fun(int n)
{
	int i;
	double s=0.0;
	for(i=1;i<=n;i++)
		s+=(1.0)/(i*(i+1));
	return s;
}

数列(3):

  • 数列求和 1.0:
float fun(int  n)
{
	int i;
	float s=0.0,sum=0.0;
	for(i=1;i<=n;i++)
	{
		s+=i;
		sum=+(1.0)/s;
	}
	return sum;
}
  • 数列求和 2.0:
double fun(int  n)
{
	int i;
	double s=0.0;
	for(i=1;i<=n;i++)
		s+=(1.0/(2*i-1)-1.0/(2*i));
	return s;
}
  • 数列求和 3.0:
double fun(int  n)
{
	int i;
	double s=0.0,s1=1.0;
	for(i=1;i<=n;i++)
	{
		s1*=i;
		s+=1.0/s1;
	}
	return s;
}

序列公式(2):

  • 计算序列公式1.0:
double fun(double x)
{
   int n=1;
   double sum=0.0,s1=1.0,p=1.0,t=1.0,s0;
   do{
   	s0=s1;
   	sum+=s0;
   	t*=n;
   	p*=(0.5-n+1)*x;
   	s1=p/t;
   	n++;
   }while(fabs(s0-s1)>=1e-6);
   return sum;
}
  • 计算序列公式2.0:
double   fun(  int  m )
{
	double i;
	double s=0.0;
	for(i=1;i<=m;i++)
		s+=log(i);
	return sqrt(s);
}

平方根之和(4):

  • 特定自然数之和的平方根:
double  fun( int  n)
{
	int i;
	double s=0.0;
	for(i=21;i<=n;i++)
		if(i%21==0)
		s+=i;
	return sqrt(s);
}
  • 范围内平方根之和:
double fun(int n)  
{
	int i,j;
	double s=0.0;
	for(i=3;i<=n;i++)
	{
		for(j=2;j<i;j++)
			if(i%j==0)
				break;
		if(i==j)
			s+=sqrt(1.0*i);
	}
	return s;
}
  • 范围内素数的平方根之和:
double fun(int n)  
{
	int i,j;
	double s=0.0;
	for(i=3;i<=n;i++)
	{
		for(j=2;j<i;j++)
			if(i%j==0)
				break;
		if(i==j)
			s+=sqrt(1.0*i);
	}
	return s;
}
  • 相邻两个数的平均值的平方根之和:
double fun(double x[9])
{
	int i,j=1;
	double s=0.0;
	for(i=0;i<9;i++)
		if(j<=8)//这里的j有大妙处
		{
		s+=sqrt((x[i]+x[i+1])/2.0);//与for循环矛盾
		j++;
		}
	return s;
}

幂,级数和方差(4) :

  • 级数和:
double fun(double x, int n)
{
	int i;
	double s0=1.0,s1=1.0;
	for(i=1;i<=n;++i)
	{
		s1*=i;
		s0+=pow(x,i)/s1;
	}
	return s0;
}
  • 方差计算:
double fun(double x[10])
{
	int i;
	double x1=0.0,s=0.0;
	for(i=0;i<10;i++)
		x1+=x[i]/10;
	for(i=0;i<10;i++)
		s+=(x1-x[i])*(x1-x[i])/10;
	return sqrt(s);
}
  • 求幂和:
double fun(int n)
{
	double s=1.0,s1=1.0;
	for(int i=2;i<=n;i++)
	{
		s1+=pow(i,0.5);
		s+=s1;
	}
	return s;
}
  • 幂的计算:
struct mpow
{
	double a;
	int t;
};
double fun(struct mpow *x,int n)
{
	int i,j;
	double sum=0.0;
	for(i=0;i<n;i++)
	{
		double power=1.0;
		for(j=0;j<x[i].t;j++)
			power*=x[i].a;
		sum+=power;
	}
	return sum;
}

其他(3):

  • 迭代法求方程的根:
double fun()
{
	double x1=0.0,x0;
	do{
		x0=x1;
		x1=cos(x0);
	}while(fabs(x0-x1)>=1e-6);
	return x1;
}
  • 选择性奇偶算术平均值(平均值):
double fun( int xx[], int *yy )
{
	int i,a=0,b=0double s1=0.0,s2=0.0;
	for(i=0;i<N;i++)
	{
		if(xx[i]%2)
		{
			s1+=xx[i];
			a++;
		}
		else
		{
			s2+=xx[i];
			b++;
		}
	}
	if(a>b)
	{
		*yy=a;
		return s1/a;
	}
	else
	{
		*yy=b;
		return s2/b;
	}
}
  • 求π值:
double  fun ( double  eps)
{
	int n=1;
	double s=0.0,s1=1.0;
	while(s1>=eps)
	{
		s+=s1;
		s1=s1*n/(2*n+1);
		n++;
	}
	return 2*s;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值