能运行,但是跑不出正确结果
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int even = 0, factorial = 1, sgn;
double x, term = 1, cosx = 0, sxm = 0, i = 0;
scanf_s("%lf", &x);
while (term > 1e-7)
{
factorial = 1;
for (even = 2 * i; even > 0; even--)
factorial *= even;
even = i * 2;
sxm = pow(x, even);
term = sxm / factorial;
sgn = pow(-1, i + 1);
cosx = cosx + sgn * term;
i++;
}
printf("cosx=%lf", cosx);
return 0;
}
后来找了一个循环语句换成for语句的代码,就跑对了
#include <stdio.h>
#include<stdlib.h>
#include <math.h>
int main()
{
int t, sgn = 1;
double x, term=0, factorial = 1, sum = 1, sxm;
scanf_s("%lf", &x);
for (t = 2;; t++)
{
factorial = factorial * t;
if (t % 2 == 0)
{
sgn = sgn * (-1);
sxm = pow(x, t);
term = sxm / factorial;
sum = sgn * term + sum;
}
if (fabs(term) <= 1e-7)
break;
}
printf("cosx=%lf", sum);
return 0;
}
for的那个是对的,while那个就不对,求大佬解释下