DDL71783 2021-09-28 20:36 采纳率: 75%
浏览 595
已结题

C语言编程问题,求答

sinx计算公式。

【问题描述】

已知sinx的近似计算公式如下:

式中,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;同样,输入x为0.5236,n为50,求得sinx近似值为0.50000106。

注意:为保证数据的准确性和一致性,应使用double型数据保存计算结果。

输出结束不换行。

img

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2021-09-28 21:44
    关注

    输入小数x(0≤x≤20)和整数n(1≤n≤5000),如果 n = 5000,(2n-1)! 得多大了,以下代码,n > 85 时撑爆,仅供参考:

    
    #include <stdio.h>
    #include <math.h>
    int main()
    {
        int sng=-1,n,i,k;
        double sum=0,s2,s3,x;
        scanf("%lf%d",&x,&n);
        for(i=1;i<=n;i++)
        {
            sng = -sng;
            s2= pow(x,2.0*i-1.0);
            for (k=1,s3=1;k <= 2*i-1;k++)
                 s3=s3*k; //阶乘
            sum += sng*(s2/s3);
        }
        printf("%.8lf",sum);
        
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月6日
  • 已采纳回答 9月28日
  • 创建了问题 9月28日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵