用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止: 例如:num为0.0001,则程序输出3.141393 π/4≈1-1/3+1/5-1/7+…… *********Begin**********和********** End **********不可删除 ------------------------------------------------*/ void TestFunc(); #include <math.h> #include <stdio.h> double fun (double num) { /*********Begin**********/ \ /********** End **********/ } main() { double n1, n2; printf("Enter a double number: "); scanf("%lf", &n1); n2=fun(n1); printf("%f\n",n2); TestFunc(); } void TestFunc() { FILE *IN,*OUT; double s,i; IN=fopen("in.dat","r"); if(IN==NULL) { printf("Read FILE Error"); } OUT=fopen("out.dat","w"); if(OUT==NULL) { printf("Write FILE Error"); } fscanf(IN,"%lf",&i); s=fun(i); fprintf(OUT,"%f",s); fclose(IN); fclose(OUT); }
时间: 2023-07-05 10:32:42 浏览: 354
程序设计-π的近似值.pptx
下面是求 π 近似值的程序代码:
```c
#include <stdio.h>
#include <math.h>
double fun(double num)
{
double pi = 0.0;
double term = 1.0;
int sign = 1;
int i = 1;
while (fabs(term) >= num) {
pi += sign * term;
sign = -sign;
term = 1.0 / (2 * i + 1);
i++;
}
return 4 * pi;
}
int main()
{
double n1, n2;
printf("Enter a double number: ");
scanf("%lf", &n1);
n2 = fun(n1);
printf("%f\n", n2);
TestFunc();
return 0;
}
void TestFunc()
{
FILE *IN, *OUT;
double s, i;
IN = fopen("in.dat", "r");
if (IN == NULL) {
printf("Read FILE Error");
}
OUT = fopen("out.dat", "w");
if (OUT == NULL) {
printf("Write FILE Error");
}
fscanf(IN, "%lf", &i);
s = fun(i);
fprintf(OUT, "%f", s);
fclose(IN);
fclose(OUT);
}
```
该程序中的 `fun` 函数使用了一个 while 循环来计算 π 的近似值。循环变量 `i` 从 1 开始,每次循环都计算出莱布尼兹级数的第 `i` 项的值 `term`,然后将其加入 `pi` 中。循环体中的语句 `sign = -sign` 用于交替改变 `term` 的符号,从而实现加减交替的效果。当最后一项的绝对值小于指定的数 `num` 时,循环结束,函数返回 `4 * pi` 的值。
主函数中先读入一个双精度浮点数 `n1`,然后调用 `fun` 函数计算出 π 的近似值,并输出结果。最后调用 `TestFunc` 函数,该函数从文件中读取一个双精度浮点数,调用 `fun` 函数计算出 π 的近似值,并将结果写入另一个文件中。
阅读全文