编写程序:输入一个正整数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。
展开
 我来答
wanfg88
推荐于2017-09-10 · TA获得超过1093个赞
知道小有建树答主
回答量:401
采纳率:50%
帮助的人:445万
展开全部
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);
}
追问
输入x=2,n=3时,输出的是-1.5。是不是哪里错了?
追答
你好,不好意思这么晚回答你。这是我运行的结果,好像没问题耶!你在试试
祝你愉快!
dukuntai
2011-04-24 · TA获得超过263个赞
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:105万
展开全部
这个答案没有用高精度算法。所以输入的数据不能太大。

#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;

};
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
淡鱼咸鱼
2011-04-24 · 超过32用户采纳过TA的回答
知道答主
回答量:86
采纳率:0%
帮助的人:0
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鬼使神差lp
2012-04-21
知道答主
回答量:5
采纳率:0%
帮助的人:6646
展开全部
我试了一下, a=pow(double(x),double(n));
这个语句有错误,不知怎莫修改,有么有热心人帮助一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zwei41
2011-04-24 · 超过29用户采纳过TA的回答
知道答主
回答量:109
采纳率:0%
帮助的人:70.6万
展开全部
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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式