风过无痕1989 发表于 2020-7-13 14:39:08

编译正常,为何执行不了?

// 求圆周率 PAI 的近似值
// π/4≈1-1/3+1/5-1/7+…
#include<stdio.h>
#include<conio.h>
int main()
{
    int i,s,n;
        double pai;
        i = 1;
        s = 1;
        pai = 1;
    n = getch();                        /* 键盘输入一个要求,精确到第一项 */
        if(i < n)
        {
                for(;i < n;)
                {
                        s = -s;
                        pai = pai + s / (2 * i - 1);
                }
        }

        pai = 4 * pai;
        printf("%lf\n",pai);

}

另外:getch() 好像只能输入单个字符,如何输入两位及多位数?先谢谢了!

永恒的蓝色梦想 发表于 2020-7-13 14:47:20

#include<stdio.h>


int main()
{
    int i, s, n;
    double pai;
    i = 1;
    s = 1;
    pai = 1;
    for (scanf("%d", &n); i < n;)
    {
      s = -s;
      pai = pai + s / (2 * i - 1);
    }

    pai = 4 * pai;
    printf("%lf\n", pai);
    return 0;
}

sunrise085 发表于 2020-7-13 15:09:58

不太明白你所说的
/* 键盘输入一个要求,精确到第一项 */
什么叫精确到第一项?
getch输入的是字符,不是数字
你需要用scanf读取输入
另外你的if的作用是什么?for没有修改条件,是个死循环。。
总之,很多小错误
帮你修改了一下。输入的数值是计算前多少项
#include<stdio.h>
int main()
{
    int i, n;
    double pai, s;
    s = 1;
    pai = 1;
    scanf("%d", &n);
    for (i=2; i <= n;i++)
    {
      s = -s;
      pai = pai + s / (2 * i - 1);
    }

    pai = 4 * pai;
    printf("%lf\n", pai);
    return 0;
}

sunrise085 发表于 2020-7-13 15:17:08

再给你写一个输入精度要求的
#include<stdio.h>
int main()
{
    int i=1;
    double pai,s,k,e;
    s = 1;
    k = 1;
    pai = 1;
    scanf("%lf", &e);//输入精度要求,例如输入0.00001,就是计算很的最后一项大于0.00001
    while(k>e)
    {
      s = -s;
      k=1.0/(2*++i-1);
      pai = pai + s * k;
    }

    pai = 4 * pai;
    printf("%lf\n", pai);
    return 0;
}

风过无痕1989 发表于 2020-7-13 15:21:17

永恒的蓝色梦想 发表于 2020-7-13 14:47


不行,我输入一个5,调试时,按F10,循环了十几圈,都停不下来,进入了死循环了

风过无痕1989 发表于 2020-7-13 15:33:12

sunrise085 发表于 2020-7-13 15:09
不太明白你所说的

什么叫精确到第一项?


错了,是计算到第几项,实际上也就是要求精度。若 n =10,就计算前十项,若 n=20,就计算前20项

sunrise085 发表于 2020-7-13 15:35:15

风过无痕1989 发表于 2020-7-13 15:33
错了,是计算到第几项,实际上也就是要求精度。若 n =10,就计算前十项,若 n=20,就计算前20项

那就是我在3楼写的咯
三楼写的是计算多少项,
四楼写的是计算的多少精度

小甲鱼的铁粉 发表于 2020-7-13 15:44:21

{:10_312:}

风过无痕1989 发表于 2020-7-13 15:44:47

sunrise085 发表于 2020-7-13 15:35
那就是我在3楼写的咯
三楼写的是计算多少项,
四楼写的是计算的多少精度

三楼正是我要的,四楼的是老师上课时用的方法。所以,我不用老师讲的方法,我得自己思考解决问题。谢谢!

风过无痕1989 发表于 2020-7-13 17:44:27

小甲鱼的铁粉 发表于 2020-7-13 15:44


谢谢! 上一次是你帮我的
页: [1]
查看完整版本: 编译正常,为何执行不了?