|  | 
 
 发表于 2022-10-12 00:19:02
|
显示全部楼层 
| 本帖最后由 jackz007 于 2022-10-12 10:30 编辑 
 这一句
 
 复制代码        while(fabs(temp)>=pow(10,-acc))
在进入循环前,temp 没有被赋值。
 下面是我修修改的代码:
 
 复制代码#include<stdio.h>
#include<math.h>
int main(void)
{
        int acc,times                     ;
        int sign                          ;
        double d , pi , i , temp          ;
        printf("请输入想要计算到pi的小数点后的位数:");
        scanf("%d", & acc)                ;
        d = pow(10 , -acc)                ;
        pi = 0.0                          ;
        i = 1.0                           ;
        sign = 1                          ;
        temp = 1.0 / i                    ; // 进入循环前,需要先计算出循环变量 temp 的初值
        while(temp >= d) {
                pi += 1.0 * sign * temp   ;
                i += 2.0                  ;
                temp = 1.0 / i            ;
                sign = -sign              ;
        }                                 ;
        pi = pi * 4                       ;
        printf("%lf\n",pi)                ;
        return 0                          ;
}
下面是我写的代码
 
 复制代码#include <stdio.h>
#include <string.h>
int main(void)
{
        unsigned long long i , k , n                                               ;
        double b , s , PI                                                          ;
        char x[256]                                                                ;
        printf("请输入想要计算到 pi 的小数点后的位数:")                           ;
        scanf("%I64d" , & n)                                                       ;
        if(n < 3 || n > 7) n = 7                                                   ;
        for(k = 10 , i = 0 ; i < n ; i ++) k *= 10                                 ;
        for(PI = 1.0 , b = 3.0 , s = -1.0 ; b < k ; b += 2.0 , s = -s) PI += s / b ;
        sprintf(x , "PI = %%.%dlf\n" , n)                                          ;
        printf(x , PI * 4.0 )                                                      ;
}
编译、运行实况:
 
 复制代码D:\[00.Exerciese.2022]\C>g++ -o x x.c
D:\[00.Exerciese.2022]\C>x
请输入想要计算到 pi 的小数点后的位数:4
PI = 3.1416
D:\[00.Exerciese.2022]\C>x
请输入想要计算到 pi 的小数点后的位数:7
PI = 3.1415926
D:\[00.Exerciese.2022]\C>
 | 
 |