#include<stdio.h>
int main()
{float y=1,z=1,pi=0;
int x;
for(x=1;y>=10e-6;x+=2)
{y=1/x;
if(x%4==1)
z=z+y;
else
z=z-y;
}
pi=z*4;
printf("%f",pi);
return 0;
}
这样哪里有问题了呀?为什么输出结果是8呢🤔
for循环内改为y = 1.0/ x;
此外,z的初始值应为0
代码改为
#include <stdio.h>
int main()
{
float y = 1, z = 0, pi = 0;
int x;
for (x = 1; y >= 10e-6; x += 2)
{
y = 1.0/ x;
if (x % 4 == 1)
z = z + y;
else
z = z - y;
}
pi = z * 4;
printf("%f", pi);
return 0;
}
.
#include <stdio.h>
void main()
{
int n=1;
float temp;
float sum=0;
do
{
temp=(float)1/(2*n-1);
if(n%2==1)
sum+=temp;
else
sum-=temp;
n++;
}while(temp>=10e-6);
printf("Pi=%f\n",sum*4);
}