计算sinx的值

ShutEmDown 2021-04-07 06:04:12
已知sinx的近似计算公式如下: sin x = x - x3/3! + x5/5! - x7/7! + ... + (-1)n-1x2n-1/(2n-1)! 其中x为弧度,n为正整数。编写程序根据用户输入的x和n的值,利用上述近似计算公式计算sinx的近似值,要求输出结果小数点后保留8位。 【输入形式】 从控制台输入小数x(0<=x<=20)和整数n(1<=n<=5000),两数中间用空格分隔。 【输出形式】 控制台输出公式结果:小数点后保留8位。 【样例输入1】 0.5236 4 【样例输出1】 0.50000105 【样例输入2】 0.5236 50 【样例输出2】 0.50000106 【样例说明】 输入x为0.5236,n为4,求得sinx近似计算公式的值为0.50000105,小数点后保留8位;同样,输入x为0.5236,n为50,求得sinx近似计算公式的值为0.50000106,小数点后保留8位。 注意:为保证数据的准确性和一致性,请使用double数据类型保存计算结果。
...全文
1109 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qzjhjxj 2021-04-07
  • 打赏
  • 举报
回复 1
供参考:
#include<stdio.h>
#include<math.h>

double fac(int n);
double sinx(double radian,int n);

int main(int argc, char* argv[])
{
    double radian;
    int    n;
    scanf("%lf %d",&radian,&n);
    printf("%.8f\n",sinx(radian,n));
    
    return 0;
}


double fac(int n)
{
    double num=1;
    for(int j=1;j<=n;j++)
        num = num * j;
    return  num;
}

double sinx(double radian,int n)
{
    double x=radian;
    int    i=2,k=0,j=1;
    double temp,result=0.0;
    do{
         k=2*j-1;
         temp=pow(-1,i)*pow(x,k)/fac(k);
         result=result+temp;
         i++;
         j++;
    }while(j<=n);
    return result;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧