初学C语言,遇到给困难。

题目:利用泰勒级数:sinx≈x-x3/3!+x5/5!-x7/7!+x9/9!-…,计算sinx的值。要求最后一项的绝对值小于10-6,并统计出共累加了多少项。
我写的代码为:

#include
int main()
{
int i,f,n1,n2,s,t;
long double m1,M,x;
M=0;
s=0;
f=1;
printf("请输入X的值:");
scanf("%f",&x);
for(t=1;m1>=1e-6;t+2)
{
for(i=1;i<=t;i++)
{
n1=1;
n2=1;
n1*=i;
n2*=x;
}
m1=(n2/n1)*f;
M+=m1;
f=f*(-1);
s+=1;
if(m1<0)m1*=-1;
}
printf("sinx=%lf\n",M);
printf("共累加了%d项",s);
}

图片说明

请问有错吗,哪里出错了

1个回答

错误很多,double用lf的,n2/n1这个是整除,肯定不对了,m1没有初始化,循环逻辑也混乱。

给你写了一个

 #include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    int n=1,count=1;
    double x,term,sum;
    printf("请输入X的值:");
    scanf("%lf",&x);
    x = x / 180.0 * 3.1416; //如果用弧度,把这行注释掉
    term = x;
    sum = x;
    do{
        term= -term*x*x/((n+1)*(n+2));
        sum +=term;
        n=n+2;
        count++;
    }while(fabs(term)>=1e-6);
    printf("sinx=%lf\n共累加了%d项\n",sum,count);
    return 0;
}

图片说明

如果问题得到了解决,麻烦点下我回答右边的采纳,谢谢

qq_43363210
xg丶pilot 好的 谢谢
一年多之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复qq_43363210: 你采纳了这个问题,再提问一次,把代码贴好,这么评论的连分行都没有怎么看。
一年多之前 回复
qq_43363210
xg丶pilot 回复caozhy: 我想自己试试,不想照抄。。。能帮我看看我重新写的有没有对吗
一年多之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复qq_43363210: 你是完整复制的代码么?你看我都运行验证了。你说你不行,我也很无奈。
一年多之前 回复
qq_43363210
xg丶pilot #include<stdio.h> int main(void) { double x,term,sum,term2; int count=1,n=1; printf("请输入x的值: "); scanf("%lf",&x); term=x; sum=x; do { term=-term*x*x/(n+1)/(n+2); sum+=term; n+=2; count+=1; if(term<0)term2=-term; else term2=term; }while(term2>=1e-6); printf("sinx=%lf\n",sum); printf("共累加了%d次",count); }
一年多之前 回复
qq_43363210
xg丶pilot 我看了你的,然后自己重新写了一个,但是答案跟你不一样。。。
一年多之前 回复
qq_23126581
渊渟无迹静涛君 这么好的答案,应该采纳了!!
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问