|
发表于 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>
复制代码 |
|