KExa


私信TA

用户名:bsdkbsm

访问量:3522

签 名:

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

等  级
排  名 4596
经  验 1646
参赛次数 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分

25 人评分

  评论区

#include <stdio.h>
double fact(long long n);
double mypow(double x,long long n);

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

double fact(long long n){
	int i=0;
	long long sum=1;
	for(i=1;i<=n;i++){
		sum=sum*i;
	}
	return sum;
}

double mypow(double x,long long n){
	int a=0,c=0;
	double b=x,ama=0;
	for(a=1;a<n;a++){  //第一轮,b=4;第二论,b=8 
		b=b*x;
	}
	
	return b;
}

这个哪里有问题呢?可以请教一下大佬们吗
2024-10-12 12:25:01
#include<stdio.h>
#include<math.h>
double fact(int n)
{
	int i;
	double sum=1;
	for(i=1;i<=n;i++)
	{
		sum*=i;
	}
	return sum;
}
double mypow(double x,int n)
{
	
	double S;
	S=pow(-x,n);
	return S;
}
double fact(int n);
double mypow(double x,int n);
int main()
{
	double x;
	int n,i,t=-1;
	double f=0;
	scanf("%lf%d",&x,&n);
	for(i=1;i<=n;i++)
	{
		f+=t*mypow(x,i)/fact(i);
	}
	printf("%0.4lf",f);
	return 0;
}
2024-03-13 20:43:25
#include <stdio.h>

double mypow(double a, long long int b){
    double q = a;
    if( b==1 ) return a;
    else return a * mypow(q,b-1);
}

double fac(long long int m){
    if( m==1 ) return 1;
    else return m * fac(m-1);
}

int main(){
    int t = -1;
    long long int i, n;
    double x, S = 0;
    scanf("%lf %lld", &x, &n);
    for( i=1; i<=n; i++ ){
        t *= -1;
        S += t * mypow(x,i) / fac(i);
    }
    printf("%.4lf", S);
}
2023-05-27 01:01:59
double  fact(int n)
{
	int i = 1;
	double sn = 1;
	for (; i <= n; i++)
	{
		sn *= i;
	}
	return sn;
}

double mypow(double x, int n)
{
	int i = 1;
	double sx = 1;
	for (; i <= n; i++)
	{
		sx *= x;
	}
	return sx;
}

int main()
{
	double x = 0;
	int n = 0;
	int j = 0;
	int s = -1;
	double sum = 0;
	scanf("%lf %d", &x, &n);
	for (j = 1; j <= n; j++)
	{
		s *= -1;
		sum += s * (mypow(x, j) / fact(j));
	}
	printf("%.4lf\n", sum);
	return 0;
}
2023-05-05 22:18:49
double fact(double n);
double mypow(double x, double n);
int main()
{
	double n, x;
	int i;
	
	scanf("%lf%lf", &n, &x);
	

		double sum = 0.0000;
		double t = 1;

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

	{

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

		t = -t;

	}
	printf("%.4lf\n", sum);
}
double fact(double n)
{
	double c = 0;
	if (n == 1)
	{
		return 1;
	}
	else
	{
		c=1 * fact(n - 1)*n;
		return c;
	}
}
double mypow(double x, double n)
{
	int i = 0;
	double sum = 1;
	for (i = 0; i < n; i++)
	{
		sum *= x ;
	}
	return sum;
}
为什么我最后的结果是0.000
2022-07-20 10:32:57
#include<stdio.h>
double fact(long long n)
{
    long long i;
    i=1;
    while(n>0)
    {
        i=i*n;
        n--;
    }
    return i;
}
double mypow(double x, long long n)
{
    long long i, j;
    i=j=1;
    while(i<=n)
    {
        j=j*x;
        i++;
    }
    return j;
}
int main()
{
    int t;
    t=1;
    long long a, b;
    b=1;
    double c, sum;
    sum=0;
    scanf("%lf %lld", &c, &a);
    while(b<=a)
    {
        sum=sum+t*mypow(c,b)/fact(b);
        t=-t;
        b++;
    }
    printf("%.4lf", sum);
    return 0;
}
这个有什么问题?
2022-07-07 20:48:41
#include<stdio.h>
int main()
{
	double fact(long long n);
	double mypow(double x,long long n);
	double x,s=0.0,a,b;
	long long n,i,t=-1;
	scanf("%lf %d",&x,&n);
	for(i=1;i<=n;i++)
	{
		a=mypow(x,n);
		b=fact(n);
		if(i%2==0)
		{
			b=t*b;
		}
	
		s=s+a/b;
	}
	printf("%.4lf",s);
	return 0;
}
double mypow(double x,long long n)
{
	double z=1.0;
	long long j;
	for(j=1;j<=n;j++)
	{
		z=z*x;
	}
	return z;
}
double fact(long long n)
{
	double w=1.0;
	long long h;
	for(h=1;h<=n;h++)
	{
		w=w*h;
	}
	return w;
}

为什么提交上去不对呢?
2022-06-25 17:17:10
#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