鱼C论坛

 找回密码
 立即注册
查看: 1076|回复: 3

[已解决]急急急

[复制链接]
发表于 2023-11-14 22:17:40 | 显示全部楼层 |阅读模式
10鱼币
运用这个公式输入不同的n求圆周率,公式为pi/4=1-1/3+1/5-1/7+1/9-...+(-1)的(n+1)次方*1/(2n-1)。
#include <stdio.h>
#include<math.h>
int main()
{
int n,i=1,l;
        double pi;
        scanf("%d",&n);
        while (fabs(i)<=(2*n-1))
        {
        i*=i+2;
                pi+=l*1.0/i;
                l=-1*l;
        }
        printf("%8.3lf",pi);
}
请问这个程序错在哪里了,为什么输出很奇怪?
最佳答案
2023-11-14 22:17:41
王小二° 发表于 2023-11-14 22:20
可以用while循环写一下吗
#include <stdio.h>
#include <math.h>

int main() {
    int n, l = 1, i = 0;
    double pi = 0.0;

    scanf("%d", &n);

    while(i < n) {
        pi += l * 1.0 / (2 * i + 1);
        l = -l;
        i++;
    }

    pi *= 4;
    printf("%8.3lf", pi);
    
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-14 22:17:41 | 显示全部楼层    本楼为最佳答案   
王小二° 发表于 2023-11-14 22:20
可以用while循环写一下吗
#include <stdio.h>
#include <math.h>

int main() {
    int n, l = 1, i = 0;
    double pi = 0.0;

    scanf("%d", &n);

    while(i < n) {
        pi += l * 1.0 / (2 * i + 1);
        l = -l;
        i++;
    }

    pi *= 4;
    printf("%8.3lf", pi);
    
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-14 22:17:50 | 显示全部楼层
这个程序中存在几个问题。首先,变量 pi 没有被初始化,所以在计算时它的值是未定义的。其次, i 的更新逻辑有误,导致它不会按预期方式增加。最后,循环的终止条件也不正确。

以下是修复后的代码:
#include <stdio.h>
#include <math.h>

int main() {
    int n, l = 1;
    double pi = 0.0;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        pi += l * 1.0 / (2 * i + 1);
        l = -l;
    }
    pi *= 4;
    printf("%8.3lf", pi);
    return 0;
}

修复后的代码使用了 for 循环来迭代 n 次,每次迭代都更新了 pi 的值,并最终乘以4以得到圆周率的近似值。同时,修复了 l 的初始化问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-11-14 22:20:56 | 显示全部楼层
isdkz 发表于 2023-11-14 22:17
这个程序中存在几个问题。首先,变量 pi 没有被初始化,所以在计算时它的值是未定义的。其次, i 的更新逻 ...

可以用while循环写一下吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 18:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表