用公式π/4≈1-1/3+1/5……求π的近似值,要求直到最后一项的绝对值小于0.000001为止。
输出格式:
按照“pi= 结果”的顺序输出,其中结果输出的格式宽度为10列,并保留4位小数。
输出样例:
pi= 3.1416
#include <stdio.h>
#include <math.h>
int main(){
double pi=0,result;
int i=1;
int s=-1;
do{
s*=-1;
result=1.0/i*s;
i+=2;
pi+=result;
}while(fabs(result)>0.000001);
printf("pi=%10.4lf\n",pi*4);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2019-10-26
你说的程序如下:
main()
{
float pi=0, x;
int n=1,k=1;
do
{
x=1.0/n;
pi=pi+k*x;
n+=2;
k=-k;
}while(x>=1E-6);
pi*=4;
printf("pi=%10.4f\n",pi);
}
有什么问题请留言。
main()
{
float pi=0, x;
int n=1,k=1;
do
{
x=1.0/n;
pi=pi+k*x;
n+=2;
k=-k;
}while(x>=1E-6);
pi*=4;
printf("pi=%10.4f\n",pi);
}
有什么问题请留言。
第2个回答 2019-10-26
#include<stdio.h>
int main()
{ double pi=0;
int i;
for(i=1;i<1000000; i+=2)
pi+=i%4==1?1.0/i:-1.0/i; //π/4≈1-1/3+1/5……
printf("%.4f\n",4*pi);
return 0;
}
第3个回答 2019-10-26
示例代码如下:
#include <stdio.h>
#include <math.h>
int main()
{
double result,fn,t;
int i;
i=1;
result=0;
fn=t=1.0; //fn表示每一项的值
while(fabs(fn)>=1e-6)
{
result+=fn; //将每一项的fn累加
i+=2;
t*=-1; //切换符号
fn=t/i; //计算当前项的值
}
result*=4;
printf("pi = %-10.4f\n",result); //列宽为10,小数点后保留4位,-表示左对齐
return 0;
}
运行结果:
pi = 3.1416
希望对你有帮助,忘采纳哦。追问
#include <stdio.h>
#include <math.h>
int main()
{
double result,fn,t;
int i;
i=1;
result=0;
fn=t=1.0; //fn表示每一项的值
while(fabs(fn)>=1e-6)
{
result+=fn; //将每一项的fn累加
i+=2;
t*=-1; //切换符号
fn=t/i; //计算当前项的值
}
result*=4;
printf("pi = %-10.4f\n",result); //列宽为10,小数点后保留4位,-表示左对齐
return 0;
}
运行结果:
pi = 3.1416
希望对你有帮助,忘采纳哦。追问
可是为什么交上去还是错误
追答提示什么错误呢,是不是输出格式不对?
你把printf("pi = %-10.4f\n",result);修改如下:
printf("pi= %10.4f\n",result);