永发信息网

写一个C程序计算sinx≈x/1-x3/3!+x5/5!-x7/7!+…+(-1)n-1 大神看下我的程序哪里错了

答案:2  悬赏:70  手机版
解决时间 2021-02-14 12:08
  • 提问者网友:活着好累
  • 2021-02-13 19:02
写一个C程序计算sinx≈x/1-x3/3!+x5/5!-x7/7!+…+(-1)n-1 大神看下我的程序哪里错了
最佳答案
  • 五星知识达人网友:青尢
  • 2021-02-13 20:12
for(j=1;j<=2*n-1;j=j+2)
{for(i=1;i<=j;i++)
t=t*i;
sinx=pow(x,j)/t;
sinx=sinx+0;}
printf("sinx=%f",sinx);
修改为
for(j=1;j<=2*n-1;j=j+2)
{
t=1;//t需要赋值为1,否则每次都是上个循环的值

for(i=1;i<=j;i++)
t=t*i;
sinx + =pow(x,j)/t; //这个才是累加

}追问t里面存的是n的阶乘阿,就是要循环上个循环的值吧,我要计算的是X=x/1+x3/3!+x5/5!+x7/7!+…+xn/n!,能不能再给小弟将下追答第一次循环,1! = 1 ,这个时候t =1;

第二此循环,3! = 3* 2 *1,这个时候t =6;
第三次循环,5! = 5*4*3*2*1,这个时候算的话,t还是为6呀,按照你的逻辑的话, 5! = 5*4*3*2*6;追问我按你的运行了也不对…555追答我只是指出你程序的错误追问帮我完整写一遍吧,一上午就一道都没做出来。。。。谢谢了大哥追答{

double x;
int i;
int j;
int n;
int t=1;
double sinx=0;
printf("Please input x:");
scanf("%lf",&x);
printf("Please input n:");
scanf("%d",&n);
for(j=1;j<=2*n-1;j=j+2)
{
t=1;
for(i=1;i<=j;i++)
t=t*i;
sinx +=pow(x,j)/t;

}
printf("sinx=%f",sinx);
}
这个是你计算的是X=x/1+x3/3!+x5/5!+x7/7!+…+xn/n!

{

double x;
int i;
int j;
int n;
int a = 1;
int t=1;
double sinx=0;
printf("Please input x:");
scanf("%lf",&x);
printf("Please input n:");
scanf("%d",&n);
for(j=1;j<=2*n-1;j=j+2)
{
t=1;
for(i=1;i<=j;i++)
t=t*i;
sinx += a*pow(x,j)/t;
a = -a;

}
printf("sinx=%f",sinx);
}
这个是你计算的是X=x/1-x3/3!+x5/5!-x7/7!+…+xn/n!
全部回答
  • 1楼网友:等灯
  • 2021-02-13 21:14
首先没有lf。scanf("%lf",&x);
借鉴一下下面程序吧。精度可以自己控制。
要求精度为10^-6
#include
#include
int main()
{
int x,n,y,i,s,j;
float sum,sinx,temp;
scanf("%d",&x);
j=-1;
s=1;
sum=x;
for (n=1;fabs(sum-sin(x))>10e-6;n++)
{
y=2*n+1;
for (i=1;i<=y;i++)
{
s*=i;
}
temp=j*pow(x,y)/s;
sum+=temp;
j=-j;
}
printf("%f",sum);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯