本帖最后由 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>
|