c语言,圆周率

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;
}

满意的话记得采纳哦~~~

追问

结果不对

追答

请问你的判断条件是什么?

公式直到最后一项的绝对值小于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
追问

代码

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网