C语言
题目要求:使用格雷戈里公式求pi的近似值,要求精确到最后一项的绝对值小于10^-4。
大家觉得哪个对,为什么。感谢。
代码1:
#include<stdio.h>
#include<stdio.h>
int main()
{
int flag = 1;
double item = 1,PI = 0,e,denominator = 1;
printf("请输入精度:");
scanf("%lf",&e);
while(fabs(item) >= e)
{
item = flag * (1/denominator); //两句中的这一行代码换了位置
PI += item;
denominator += 2;
flag = -flag;
}
PI = PI * 4;
printf("PI的值为%.4f",PI);
}
代码二:
#include<stdio.h>
#include<stdio.h>
int main()
{
int flag = 1;
double item = 1,PI = 0,e,denominator = 1;
printf("请输入精度:");
scanf("%lf",&e);
while(fabs(item) >= e)
{
PI += item;
denominator += 2;
flag = -flag;
item = flag * (1/denominator); //两句中的这一行代码换了位置
}
PI = PI * 4;
printf("PI的值为%.4f",PI);
}
代码2,因为pi的求法中第一项就是1 本帖最后由 墨羽岚 于 2020-3-29 17:37 编辑
都不对
你为啥两个都调用了两次stdio.h库函数?第二个#应该是math.h
还有变量名称尽量短小简洁,不然容易打错
最后int main()要返回一个值
更正后的话楼上就是对的
#include<stdio.h>
#include<math.h>
int main()
{
double PI=1.0,i=3.0;
int k=-1;
do
{
PI+=k/i;
i+=2;
k=-k;
}while(fabs(k/i)>=1e-4);
PI=PI*4;
printf("%.6f",PI);
return 0;
}
采用do……while还是while随个人喜好来(我做的题里面答案大多是do……while)
页:
[1]