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