程序设计 c语言 帮我改下啊 我谢您啊~~

来源:百度知道 编辑:UC知道 时间:2024/05/03 05:22:53
#编写程序,用如下公式计算圆周率的近似值。
派=4-4/3+4/5-4/7+...
回答程序要计算多少项才能得到数值3.14,3.141,3.1415,3.14159。

include<stdio.h>
#include<math.h>
void main()
{
int e = 1;
double a=4;
while(fabs(a-3.1400)>=1e-3)
{
a+=pow(-1,e)* 4/(1+2*e);
e++;
}
printf("要计算%d项才能得到数值3.14\n",e);

int f = 1;
double b=4;
while(fabs(b-3.1410)>=1e-3)
{
b+=pow(-1,f)* 4/(1+2*f);
f++;
}
printf("要计算%d项才能得到数值3.141\n",f);

int g = 1;
double c=4;
while(fabs(c-3.1415)>=1e-3)
{
c+=pow(-1,g)* 4/(1+2*g);
g++;
}
printf("要计算%d项才能得到数值3.1415\n",g);

int h = 1;
double d=4;
while(fabs(d-3.14159)>=1e-3)
{
d+=pow(-1,h)* 4/(1+2*h);
h++;
}
printf("要计算%d项才能得到数值3.14159\n",h);

}

有错误啊 帮我改啊 太感谢您了

程序本身语言没有错误

唯一有可能的地方就是void main()的使用

这个是vc的标准,不是iso的标准

一般来说使用 int main()更容易正确

其它的话,程序方面,在判断精度上有小毛病

我更改了一下,可以参考

#include<stdio.h>
#include<math.h>
int main() {
int e = 1;
double a = 4;
while (fabs(a - 3.1400) >= 1e-2) {
a += pow(-1, e) * 4 / (1 + 2 * e);
e++;
}
printf("要计算%d项才能得到数值3.14\n", e);

int f = 1;
double b = 4;
while (fabs(b - 3.1410) >= 1e-3) {
b += pow(-1, f) * 4 / (1 + 2 * f);
f++;
}
printf("要计算%d项才能得到数值3.141\n", f);

int g = 1;
double c = 4;
while (fabs(c - 3.1415) >= 1e-4) {
c += pow(-1, g) * 4 / (1 + 2 * g);
g++;
}
printf("要计算%d项才能得到数值3.1415\n", g);

int h = 1;
double d = 4;
while (fabs(d - 3.14159) >= 1e-5) {
d += pow(-1, h) * 4 / (1 + 2 * h);
h++;