求助求Π的问题
我的代码如下:#include<stdio.h>
#include<math.h>
int main()
{
int acc,times;
int sign=1;
double pi,i,temp;
printf("请输入想要计算到pi的小数点后的位数:");
scanf("%d",&acc);
pi=0.0;
i=1.0;
while(fabs(temp)>=pow(10,-acc))
{
pi+=temp;
i+=2;
temp=sign/i;
sign=-sign;
}
pi = pi*4;
printf("%lf\n",pi);
return 0;
}
不知道为啥输入之后打印出的pi值是0 c++的算六位小数
#include<bits/stdc++.h>
using namespace std;
double arctanx(double x)
{
double sum=0;
for(double i=1;i<99;i+=2)
{
if(pow(x,int(i))/i<=0.000001)break;//改这
if(int(i)%4==1)
{
sum+=1.0*pow(x,int(i))/i;
}
if(int(i)%4==3)
{
sum-=1.0*pow(x,int(i))/i;
}
}
return sum;
}
int main()
{
double a=6.0*arctanx(1.0/sqrt(3));
printf("%.10lf",a);
return 0;
} 本帖最后由 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 ;
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:\\C>g++ -o x x.c
D:\\C>x
请输入想要计算到 pi 的小数点后的位数:4
PI = 3.1416
D:\\C>x
请输入想要计算到 pi 的小数点后的位数:7
PI = 3.1415926
D:\\C>
页:
[1]