17张牌你能秒我


私信TA

用户名:bsdkbsm

访问量:1012

签 名:

君子坐而论道,少年起而行之

等  级
排  名 3789
经  验 1355
参赛次数 1
文章发表 2
年  龄 0
在职情况 学生
学  校
专  业 软件工程

  自我简介:

TA的其他文章

解题思路:

    首先通过拆分,可分为以下几步:


        1.实现fact()函数 ,完成阶乘

                阶乘可以看成1*2*3*..*n,  其中由1到n可以借用循环变量,

            再使用一个变量用于存储前一次的乘积,最后该变量所存储的值就是n的阶乘

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

                m=m*i;


        2.实现mypow()函数,完成xn次方

               xn次方可以看为n个x相乘的结果,即一个循环n次的乘法,

            注意此时x累乘后值发生变化,因用一变量存储初始x

            t=x;

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

                x=x*t;


        3.实现奇数项为+,偶数项为-,并求和

                该功能易于实现,即奇数项乘以1,偶数项乘以-1,

                只需一个变量不断替换为相反数,再累积再变量上即可

             sum=0;

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

            {

                sum+=t * mypow( x,n )  / fact( n );

                t=-t;

            }



注意事项: 


1.合理使用数据类型

2.注意格式要求

参考代码:

#include <stdio.h>
double Fact(long long n)
{
	long long m=1;
	for (int i = 2; i <= n; i++)
		m=m * i;
	return m;
}

double MyPow(double x, long long n)
{
	double t = x;
	for (int i = 1; i < n; i++)
		x = x * t;
	return x;
}

int main(void)
{
	double x;
	long long n;
	double sum = 0;
	
	scanf("%lf", &x);
	scanf("%lld", &n);
	
	for (int i = 1, t = 1; i <= n; i++, t = -t)
		sum += t * MyPow(x, i) / Fact(i);
	printf("%.4lf", sum);
	return 0;
}



 

0.0分

6 人评分

  评论区

#include <stdio.h>
#include <math.h>>
double fact(double n)
{
	int i;
	double j=1;
	for(i=1;i<=n;i++)
	{
		j=i*j;
	
	}
		return j;
}


double mypow(double x,int n)
{
	int i;
	double m,fac;
	for(i=1;i<=n;i++)
	{	fac=fact(n);
		m=(pow((-1),i-1)*pow(x,i))/fac+m;
	}
	return m;
}
int main ()
{ int n;
double x,w;
scanf("%lf %d",&x,&n);
w=mypow(x,n);
printf("%.4lf",w);
}

输出1.000问题在哪求解
2022-03-06 22:05:19 | |
#include <stdio.h>
#include <math.h>
int fact(int n)
{
	int i;
	double p=1;
	for(i=1;i<=n;i++)
	p=(double)p*i;
	return p;
}
int mypow(int x,int n)
{
	double y=1;
	int i;
	for(i=0;i<n;i++)
	y=(double)y*x;
	return y;
}
int main()
{
	double x,r=0,t=0,sum=0;
	int n,i,q=1;
	scanf("%lf%d",&x,&n);
	for(i=1;i<=n;i++)
	{
		q=1;
		if(i%2==0)
		{
			q=-1;
		}
		r=fact(i);
		t=mypow(x,i);
		sum=(double)sum+q*t/r;	
	}
	printf("%.4lf",sum);
}



这个哪里有问题呢??大佬们拜托拜托!!
2022-02-06 17:08:02 | |
  • «
  • 1
  • »