sin(x) = x-x3/3!+x5/5!-x7/7!+...         输入x,计算上面公式的前10项和。

#include <stdio.h>
#include <math.h>
/*
描述:sin(x) = x-x3/3!+x5/5!-x7/7!+...
        输入x,计算上面公式的前10项和。
输入:输入一个实数x。
输出: 输出一个实数,即数列的前10项和,结果保留3位小数。
样例:输入1
    输出
    0.841
*/
float Sin(float x)
    {
       int n;                //项数n。    
       n=10;
       float sum=0;               //前n项和sum。
       float t;
       int i;
       t=x;
       sum=t;
       for(i=2;i<=n;i++)
       {
        t=-1*t*x*x/((2*i-2)*(2*i-1));           //t赋值第i项。
        sum+=t;
    }
    return sum;
    }
    void main(){
    float x;
    scanf("%f",&x);
    printf("%0.3f\n",Sin(x));
}
 

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C语言中,可以使用循环和递归的方法来计算sin x = x - x3/3! + x5/5! - x7/7! + ... (-1)n-1x2n-1/(2n-1)!的值。 首先,可以使用循环来计算n次幂和阶乘,然后将它们组合成sin x的表达式。代码示例如下: ```c #include <stdio.h> double power(double base, int exponent) { double result = 1.0; for (int i = 0; i < exponent; i++) { result *= base; } return result; } int factorial(int n) { int result = 1; for (int i = 1; i <= n; i++) { result *= i; } return result; } double sinX(double x, int n) { double result = 0; for (int i = 0; i < n; i++) { int sign = i % 2 == 0 ? 1 : -1; result += sign * (power(x, 2 * i + 1) / factorial(2 * i + 1)); } return result; } int main() { double x = 0.5; int n = 10; printf("sin(%lf) = %lf\n", x, sinX(x, n)); return 0; } ``` 另一种方法是使用递归来计算sin x的值。代码示例如下: ```c #include <stdio.h> double power(double base, int exponent) { if (exponent == 0) { return 1.0; } else { return base * power(base, exponent - 1); } } int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); } } double sinX(double x, int n) { if (n == 0) { return 0; } else { int sign = (n - 1) % 2 == 0 ? 1 : -1; return sinX(x, n - 1) + sign * (power(x, 2 * n - 1) / factorial(2 * n - 1)); } } int main() { double x = 0.5; int n = 10; printf("sin(%lf) = %lf\n", x, sinX(x, n)); return 0; } ``` 以上是使用C语言中的循环和递归方法来计算sin x = x - x3/3! + x5/5! - x7/7! + ... (-1)n-1x2n-1/(2n-1)!的值的示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值