鱼C论坛

 找回密码
 立即注册
查看: 557|回复: 9

[已解决]编译正常,为何执行不了?

[复制链接]
发表于 2020-7-13 14:39:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
// 求圆周率 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 15:09:58
不太明白你所说的
/* 键盘输入一个要求,精确到第一项 */

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

  14.     pai = 4 * pai;
  15.     printf("%lf\n", pai);
  16.     return 0;
  17. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-13 14:47:20 | 显示全部楼层
  1. #include<stdio.h>


  2. int main()
  3. {
  4.     int i, s, n;
  5.     double pai;
  6.     i = 1;
  7.     s = 1;
  8.     pai = 1;
  9.     for (scanf("%d", &n); i < n;)
  10.     {
  11.         s = -s;
  12.         pai = pai + s / (2 * i - 1);
  13.     }

  14.     pai = 4 * pai;
  15.     printf("%lf\n", pai);
  16.     return 0;
  17. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-13 15:09:58 | 显示全部楼层    本楼为最佳答案   
不太明白你所说的
/* 键盘输入一个要求,精确到第一项 */

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

  14.     pai = 4 * pai;
  15.     printf("%lf\n", pai);
  16.     return 0;
  17. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-13 15:17:08 | 显示全部楼层
再给你写一个输入精度要求的
  1. #include<stdio.h>
  2. int main()
  3. {
  4.     int i=1;
  5.     double pai,s,k,e;
  6.     s = 1;
  7.     k = 1;
  8.     pai = 1;
  9.     scanf("%lf", &e);//输入精度要求,例如输入0.00001,就是计算很的最后一项大于0.00001
  10.     while(k>e)
  11.     {
  12.         s = -s;
  13.         k=1.0/(2*++i-1);
  14.         pai = pai + s * k;
  15.     }

  16.     pai = 4 * pai;
  17.     printf("%lf\n", pai);
  18.     return 0;
  19. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-13 15:21:17 | 显示全部楼层

不行,我输入一个5,调试时,按F10,循环了十几圈,都停不下来,进入了死循环了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-13 15:33:12 | 显示全部楼层
sunrise085 发表于 2020-7-13 15:09
不太明白你所说的

什么叫精确到第一项?

错了,是计算到第几项,实际上也就是要求精度。若 n =10,就计算前十项,若 n=20,就计算前20项
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

那就是我在3楼写的咯
三楼写的是计算多少项,
四楼写的是计算的多少精度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-13 15:44:21 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-13 15:44:47 | 显示全部楼层
sunrise085 发表于 2020-7-13 15:35
那就是我在3楼写的咯
三楼写的是计算多少项,
四楼写的是计算的多少精度

三楼正是我要的,四楼的是老师上课时用的方法。所以,我不用老师讲的方法,我得自己思考解决问题。谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-13 17:44:27 | 显示全部楼层

谢谢! 上一次是你帮我的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 17:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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