s(x)=x-(x^3/3*1!)+(x^5/5*2!)-(x^7/7*3!).......从键盘输入x,求s(x)的值

已知,s(x)=x-(x^3/3*1!)+(x^5/5*2!)-(x^7/7*3!).......,编写一程序,从键盘输入x,求s(x)的值(计算后面的20项的和,当x=1时,s=0.746824)。(要求:阶乘及幂运算分别使用单独的函数实现)提示:各个分项的值很大,注意函数类型

第1个回答  2013-07-06
#include"stdio.h"
#include<math.h>

long mx(int n){
long t=1;
for(int i=1;i<=n;i++){
t*=i;
}
return t;
}

int main(){
int x,t=-1;
scanf("%d", &x);
double s=x;
for(int i=1;i<20;i++){
s+=t*(pow(x,2*i+1)/((2*i+1)*mx(i)));
t*=-1;
}
printf("%lf", s);
return 0;
}
第2个回答  2019-06-21
#include<stdio.h>
#include<math.h>
#define N 10
int main()
{
double x,a=1,b,c=1,t,s=0,m=1;int i;
printf("输入x的值\n");
scanf("%lf",&x);
for(i=1;i<N;i++) //第二项到N-1项
{c=c*i;
b=(2*i+1)*c; //分母
a=pow(x,(2*i+1)); //求x^(2*i+1) 数学函数
t=-a/b;
s=s+m*t;m=-m; //m取1和-1
}
s=s+x; //第一项单独求
printf("%.2lf",s); //保留2位小数,去掉.2即可
}
可以修改成定义函数本回答被网友采纳
相似回答