编写程序:输入一个正整数x和一个正整数n,求下列算式的值。 x-x²/2!+x³/3!-x^4/4!+...+[(-1)^(
编写程序:输入一个正整数x和一个正整数n,求下列算式的值。x-x²/2!+x³/3!-x^4/4!+...+[(-1)^(n-1)](x^n)/n!要...
编写程序:输入一个正整数x和一个正整数n,求下列算式的值。
x-x²/2!+x³/3!-x^4/4!+...+[(-1)^(n-1)](x^n)/n!
要求定义和调用两个函数,fact(n)计算n的阶乘,mypow(x,n)计算x的n次幂,两个函数的返回值类型都是duoble。 展开
x-x²/2!+x³/3!-x^4/4!+...+[(-1)^(n-1)](x^n)/n!
要求定义和调用两个函数,fact(n)计算n的阶乘,mypow(x,n)计算x的n次幂,两个函数的返回值类型都是duoble。 展开
6个回答
展开全部
LZ自己试一下我的-.-
#include <stdio.h>
#include <math.h>
double fact(int n)
{
int j=1;
double multiply=1;
for(j=1;j<=n;j++)
multiply*=j;
return multiply;
}
double mypow(int x,int n)
{
double a;
a=pow(double(x),double(n));
return a;
}
void main()
{
int x,i,n;
double sum=0,single=0;
printf("请输入n,x的值:\n");
scanf("%d %d",&n,&x);
for(i=1;i<=n;i++)
{
single=(mypow(-1,i-1)*mypow(x,i))/fact(i);
sum=sum+single;
}
printf("结果=%lf\n",sum);
}
#include <stdio.h>
#include <math.h>
double fact(int n)
{
int j=1;
double multiply=1;
for(j=1;j<=n;j++)
multiply*=j;
return multiply;
}
double mypow(int x,int n)
{
double a;
a=pow(double(x),double(n));
return a;
}
void main()
{
int x,i,n;
double sum=0,single=0;
printf("请输入n,x的值:\n");
scanf("%d %d",&n,&x);
for(i=1;i<=n;i++)
{
single=(mypow(-1,i-1)*mypow(x,i))/fact(i);
sum=sum+single;
}
printf("结果=%lf\n",sum);
}
追问
输入x=2,n=3时,输出的是-1.5。是不是哪里错了?
追答
你好,不好意思这么晚回答你。这是我运行的结果,好像没问题耶!你在试试
祝你愉快!
展开全部
这个答案没有用高精度算法。所以输入的数据不能太大。
#include <iostream>
using namespace std;
double fact(long n);
double mypow(long x,long n);
long symbol(long n);
// 没有用高精度算法。
int main(void)
{
long x,n,i;
double ans=0;
cin>>x>>n;
for(i=1;i<=n;i++)
ans+=symbol(n-1)*mypow(x,n)/fact(n);
cout<<ans<<endl;
return 0;
}
double fact(long n)
{
// 使用递归。
if( n == 1 )
return 1;
else
return n*fact(n-1);
}
double mypow(long x,long n)
{
// 使用递归。
if( n == 1 )
return x;
else
return x*mypow(x,n-1);
}
long symbol(long n)
{
if( n % 2 == 0 )
return 1;
else
return -1;
};
#include <iostream>
using namespace std;
double fact(long n);
double mypow(long x,long n);
long symbol(long n);
// 没有用高精度算法。
int main(void)
{
long x,n,i;
double ans=0;
cin>>x>>n;
for(i=1;i<=n;i++)
ans+=symbol(n-1)*mypow(x,n)/fact(n);
cout<<ans<<endl;
return 0;
}
double fact(long n)
{
// 使用递归。
if( n == 1 )
return 1;
else
return n*fact(n-1);
}
double mypow(long x,long n)
{
// 使用递归。
if( n == 1 )
return x;
else
return x*mypow(x,n-1);
}
long symbol(long n)
{
if( n % 2 == 0 )
return 1;
else
return -1;
};
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include "stdafx.h"
#include <iostream>
using namespace std;
//计算n的阶乘
double fact(double n)
{
if(n <= 0)
return -1;
else if(n == 1)
return 1;
else
return n*fact(n - 1);
}
//计算x的n次幂
double mypow(double x, double n)
{
double pow = 1;
if(x <= 0)
return -1;
else if(x == 1 || n == 0)
return 1;
else
for(int i=n; i > 0; i--)
pow *= x;
return pow;
}
//计算单形式: [(-1)^(n-1)](x^n)/n!
double func(double x, double n, int i)
{
if(i == 0)
return x;
if(i%2)
return mypow(x, i)/fact(i);
return (-1)*mypow(x, i)/fact(i);
}
int main(int argc, char* argv[])
{
double x=0;
double n=0;
cout << "input x: \n";
cin >> x;
cout << "input n: \n";
cin >> n;
double d_result = 0; //保存结果
for(int i = 1; i<=n; i++)
d_result += func(x, n, i);
cout << "the final result is: " << d_result<< endl;
return 0;
}
#include <iostream>
using namespace std;
//计算n的阶乘
double fact(double n)
{
if(n <= 0)
return -1;
else if(n == 1)
return 1;
else
return n*fact(n - 1);
}
//计算x的n次幂
double mypow(double x, double n)
{
double pow = 1;
if(x <= 0)
return -1;
else if(x == 1 || n == 0)
return 1;
else
for(int i=n; i > 0; i--)
pow *= x;
return pow;
}
//计算单形式: [(-1)^(n-1)](x^n)/n!
double func(double x, double n, int i)
{
if(i == 0)
return x;
if(i%2)
return mypow(x, i)/fact(i);
return (-1)*mypow(x, i)/fact(i);
}
int main(int argc, char* argv[])
{
double x=0;
double n=0;
cout << "input x: \n";
cin >> x;
cout << "input n: \n";
cin >> n;
double d_result = 0; //保存结果
for(int i = 1; i<=n; i++)
d_result += func(x, n, i);
cout << "the final result is: " << d_result<< endl;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我试了一下, a=pow(double(x),double(n));
这个语句有错误,不知怎莫修改,有么有热心人帮助一下
这个语句有错误,不知怎莫修改,有么有热心人帮助一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
double fact ( int n)
{
if(n<=1) return 1;
return fact(n-1)*n;
}
double mypow(int x,int n)
{
if(n=0) return 1;
return x*mypow(x,n-1);
}
void main(){
int x = 100,n=100;
double w = 0;
for(int i=1;i<n;i++)
{
w += mypow(x,i)*1.0/fact (i);
}
printf("%d",w);
}
{
if(n<=1) return 1;
return fact(n-1)*n;
}
double mypow(int x,int n)
{
if(n=0) return 1;
return x*mypow(x,n-1);
}
void main(){
int x = 100,n=100;
double w = 0;
for(int i=1;i<n;i++)
{
w += mypow(x,i)*1.0/fact (i);
}
printf("%d",w);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询