You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用math.h在C语言中实现求和计算圆周率,代码运行异常如何解决

莱布尼茨级数求π代码修正

核心错误说明

  • 未做累加计算:原代码每次循环直接为pi变量赋值,覆盖了上一轮的计算结果,没有按照求和公式累积每一项的值
  • 系数位置错误:根据公式规则,需要先完成所有项的求和,再将总和乘以4得到π,原代码将乘4操作放在了循环内部,每一项单独乘4不符合计算逻辑

修正后可运行代码

#include <stdio.h>  

int main(void){
    int num, k;
    double pi = 0;

    printf("请输入大于等于30000的项数:");
    scanf("%d", &num);
    if (num < 30000){
        printf("输入错误");
    }else {
        for (k = 1; k <= num; k++){
            if (k % 2 == 0){
                pi += (double)(-1)/ (2*k -1);
            }else{
                pi += (double)(1)/ (2*k -1);
            }
        }
        pi = pi * 4;
        printf("π的计算结果为:%.10f", pi);
    }
    return 0; 
}

补充说明

莱布尼茨级数收敛速度较慢,输入30000项时,计算结果可以精确到小数点后4位左右,如果需要更高精度可以进一步调大输入的项数,同时调整输出的格式化参数保留更多小数位。

内容的提问来源于stack exchange,提问作者jsovsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:15:02