c语言,圆周率/*有多组测试数据,每组测试数据一行。 该行输入一个小数f(小数点后最多6位).
输出利用pai/4=1-1/3+1/5-1/7+...公式直到最后一项的绝对值小于f为止后求出的pai值(保留6位小数)
Sample Input
2
1
0.34
Sample Output
4.000000
2.666667
2.666667*/
供参考——
#include <stdio.h>int main(void){
int i;
double f,t,s;
printf("Input f(R: f>=0.000001,0 end)...\nf=");
while(1){
if(scanf("%lf",&f)!=1 || f<0.000001){
printf("Input error or end, exit...\n");
return 0;
}
for(s=0.0,t=i=1;t>f;i++){
t=1.0/((i<<1)-1);
s += i&1 ? t : -t;
}
printf("f=%f π≈%f\n",f,s*4);
}
return 0;
}追问
你运行一下,结果都是0
温馨提示:答案为网友推荐,仅供参考
第1个回答 2016-11-19
#include<stdio.h>
#include<math.h>
int main()
{
float s,x,i;
s=1;i=1;
scanf("%d",&x);
while(1/(i+1)<x)
{
s=s+pow(-1,i)/(i+1);
i++;
}
printf("%2f",s*4);
return 0;
}
#include<math.h>
int main()
{
float s,x,i;
s=1;i=1;
scanf("%f",&x);
while(1/(i+1)-x>=0)
{
s=s+pow(-1,i)/(2*i+1);
i++;
}
printf("%.6f",s*4);
return 0;
}追问
#include<math.h>
int main()
{
float s,x,i;
s=1;i=1;
scanf("%d",&x);
while(1/(i+1)<x)
{
s=s+pow(-1,i)/(i+1);
i++;
}
printf("%2f",s*4);
return 0;
}
满意的话记得采纳哦~~~
追问结果不对
追答请问你的判断条件是什么?
公式直到最后一项的绝对值小于f为止后求出的pai值
是什么意思?哪一项?
如果输入f是1,那么哪一项与1相比较,需要小于1?
程序确实有点问题,
1、读取时是:scanf("%f",x);
2、while判断条件是:1/(i+1)-x>=0
3、while循环里的表达式是:s=s+pow(-1,i)/(2*i+1);
4、输出时是:printf("%.6f",s*4);
#include<stdio.h>#include<math.h>
int main()
{
float s,x,i;
s=1;i=1;
scanf("%f",&x);
while(1/(i+1)-x>=0)
{
s=s+pow(-1,i)/(2*i+1);
i++;
}
printf("%.6f",s*4);
return 0;
}追问
你应该运行一下才知道行不行~
追答我运行了没问题,所以要问你有什么问题
追问样例不对
追答样例哪里不对?
??
第2个回答 2016-11-19
有追问
代码