#include <stdio.h>
#include <math.h>
int main()
{
int n,i,j;
long int sum=1;
double x,sum2=0.0;
scanf("%lf,%d",&x,&n);
for(i=n;i>=1;i--)
{
for(j=i;j>0;j--)
sum1=j*sum1;
sum2=(pow(-1.0,i-1)pow(x,2i-1)/sum1)+sum2;
}
printf("%.4f",sum2);
return 0;
}
sum1= i * (i-1) * sum1;
i初始值是1,岂不是sum1永远是0
另外sum1用int型是不够的,阶乘值很大
int main()
{
double jc=1,x,zs = 1,res = 0;
int n,i,flag = -1;
scanf("%lf,%d",&x,&n);
zs = x;
res += zs/jc;
for(i=2;i<=n;i++)
{
jc *= (2*i-1)*(2*i-2);
zs *= x*x;
res += flag * zs/jc;
flag = -flag;
}
printf("%.4lf",res);
}
结果保留4位小数。
printf("%.4f",sum2);
#include<stdio.h>
#include<math.h>
int jc(int n);
int main()
{
int m=1,f=1,i=1;
double sinx=0.0,x,z;
double ans;
scanf("%lf",&x);
z=x;
double a;
a=fpow(x,m)/jc(m);
int t=1;
while(fabs(a)>=1e-7&&t<6)
{
t++;
sinx=sinx+a;
f=f(-1);
i=i+1;
m=2i-1;
a=fpow(x,m)/jc(m);
}
printf("sinx=%lf\n",sinx);
return 0;
}
int jc(int n)
{
int ans;
if(n==0||n==1) ans=1;
else ans=n*jc(n-1);
return ans;
}