正弦函数(C语言),不知道哪里出问题了

输入1,结果是0.632,但是正确结果是0.841,不知道哪里错了,请帮忙看看,谢谢啦!

img

img

你这个循环不对啊,你每次只乘一次,但实际公式中每一项都是奇数次方啊

很明显,你的item和nume错了

1.nume错了
for(int i=0;i<10;i++)
nume=pow(x,i*2+1);
2.deno也不对,指数是奇数,可是分母是阶乘,你不能只乘奇数不乘偶数啊


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

int fact(int n)
{
    int ans = 1;
    for(int i=1; i<=n; i++)
    {
        ans *= i;
    }
    return ans;
}

int main()
{
    double x;
    scanf("%lf", &x);
    double sum1 = 0, sum2 = 0, ans;
    for(int i = 1; i <= 10; i++)
    {
        if(i % 2 != 0)
        {
            sum1 += pow(x, (2*i - 1)) / fact(2*i - 1);
        }
        if(i % 2 == 0)
        {
            sum2 += pow(x, (2*i - 1)) / fact(2*i - 1);
        }
    }
    ans = sum1 - sum2;
    printf("%.3f", ans);
    return 0; 
}
#include <math.h>
#include <stdio.h>

#define EPSILON 1e-4

double my_sin(double x) {
  double x2 = x * x;
  double f = x;
  double s = f;
  int n = 0, n2;
  while (fabs(f) > EPSILON) {
    n++;
    n2 = 2 * n;
    f *= x2 / (n2 * (n2 + 1));
    if (n % 2 == 0)
      s += f;
    else
      s -= f;
  }
  return s;
}

int main() {
  double x;
  scanf("%lf", &x);
  printf("%.3lf\n", my_sin(x));
  return 0;
}