我有一个任务是制作一个关于马克劳林系列的 C 程序,特别是 Sin X 系列。我不知道我做错了什么



[Maclaurin系列Sinx][1]
[1]:https://i.stack.imgur.com/y0vnG.png

事实上,我已经解决了问题,但使用pow(x,y(。因为我的老师没有教我们使用pow函数。所以我试着用";对于循环";增加的功率

#include <stdio.h>

int main() {


int N;
int factorial =1;
int a=3;
float sum;
float x;
int sign= 1;

printf("enter N: ");
scanf("%d", &N);

printf("enter x in degrees: ");
scanf("%f", &x);
x=x/180*3.14;

sum=x;
printf("degrees in radian: %f ",x );


for (a = 3; a <=N ; a+=2)
{    
int powersum= 1;
for (int b=1; b<=a; b++)
{
powersum=powersum*(x);
}

factorial=factorial*a*(a-1);
sum= sum + sign* powersum/ factorial;
sign=sign*-1;
}


printf("n sum: %.4f", sum);


return 0;
}

当我输入N=10和x=45时,我的输出是0.7850(应该是0.7071(,我不知道我做错了什么

  • 所有的signpowersumfactorial都是int,因此整数除法sign* powersum/ factorial处完成,值变错。powersum应该是float。如果要支持更大的n,则factorial也应该是float
  • sign的初始值错误。它应该是-1,而不是1,因为首先要添加的是- x**3 / 3!
  • 你的pi值是错误的,你的程序用上面的两个补丁给了我0.7068的结果。我用3.1415代替3.14得到了0.7071

相关内容

最新更新