鱼C论坛

 找回密码
 立即注册
查看: 3741|回复: 2

求助求Π的问题

[复制链接]
发表于 2022-10-12 00:19:02 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-12 10:30 编辑

        这一句
  1.         while(fabs(temp)>=pow(10,-acc))
复制代码

        在进入循环前,temp 没有被赋值。
        下面是我修修改的代码:
  1. #include<stdio.h>
  2. #include<math.h>

  3. int main(void)
  4. {
  5.         int acc,times                     ;
  6.         int sign                          ;
  7.         double d , pi , i , temp          ;
  8.         printf("请输入想要计算到pi的小数点后的位数:");
  9.         scanf("%d", & acc)                ;
  10.         d = pow(10 , -acc)                ;
  11.         pi = 0.0                          ;
  12.         i = 1.0                           ;
  13.         sign = 1                          ;
  14.         temp = 1.0 / i                    ; // 进入循环前,需要先计算出循环变量 temp 的初值
  15.         while(temp >= d) {
  16.                 pi += 1.0 * sign * temp   ;
  17.                 i += 2.0                  ;
  18.                 temp = 1.0 / i            ;
  19.                 sign = -sign              ;
  20.         }                                 ;
  21.         pi = pi * 4                       ;
  22.         printf("%lf\n",pi)                ;
  23.         return 0                          ;
  24. }
复制代码

        下面是我写的代码
  1. #include <stdio.h>
  2. #include <string.h>

  3. int main(void)
  4. {
  5.         unsigned long long i , k , n                                               ;
  6.         double b , s , PI                                                          ;
  7.         char x[256]                                                                ;
  8.         printf("请输入想要计算到 pi 的小数点后的位数:")                           ;
  9.         scanf("%I64d" , & n)                                                       ;
  10.         if(n < 3 || n > 7) n = 7                                                   ;
  11.         for(k = 10 , i = 0 ; i < n ; i ++) k *= 10                                 ;
  12.         for(PI = 1.0 , b = 3.0 , s = -1.0 ; b < k ; b += 2.0 , s = -s) PI += s / b ;
  13.         sprintf(x , "PI = %%.%dlf\n" , n)                                          ;
  14.         printf(x , PI * 4.0 )                                                      ;
  15. }
复制代码

        编译、运行实况:
  1. D:\[00.Exerciese.2022]\C>g++ -o x x.c

  2. D:\[00.Exerciese.2022]\C>x
  3. 请输入想要计算到 pi 的小数点后的位数:4
  4. PI = 3.1416

  5. D:\[00.Exerciese.2022]\C>x
  6. 请输入想要计算到 pi 的小数点后的位数:7
  7. PI = 3.1415926

  8. D:\[00.Exerciese.2022]\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-31 07:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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