/* 函数fun是根据输入n,求下面数列前n项的和s=1/2-1/2*3/4+1/2*3/4*5/6-1/2*3/4*5/6 *7/8+......, 输入10 ,结果:0.206936。要求在fun函数的注释语句之间编写程序,其它部分不得增删语句。 */ #include<stdio.h> #include<stdlib.h> double fun(int n) { /*Begin/ /*End/ } int main() { int n; double s; FILE *in,*out; printf("输入n:"); scanf("%d",&n); s=fun(n); printf("%lf\n",s); /***********************/ in=fopen("in2019-2-3-2.dat","r"); out=fopen("out2019-2-3-2.dat","w"); while(!feof(in)) { fscanf(in,"%d",&n); fprintf(out,"%lf\n",fun(n)); } fclose(in); fclose(out); system("pause"); return 0; }
时间: 2023-07-23 07:42:35 浏览: 85
以下是完整的程序代码:
```
#include <stdio.h>
#include <stdlib.h>
double fun(int n) {
double s = 0, t = 1, p = 1;
int i, j;
for (i = 1; i <= n; i++) {
t *= i;
p *= 2 * i - 1;
if (i % 2 == 0) {
s -= t / p;
} else {
s += t / p;
}
}
return s;
}
int main() {
int n;
double s;
FILE *in, *out;
printf("输入n:");
scanf("%d", &n);
s = fun(n);
printf("%lf\n", s);
/*Begin*/
in = fopen("in2019-2-3-2.dat", "r");
out = fopen("out2019-2-3-2.dat", "w");
while (!feof(in)) {
fscanf(in, "%d", &n);
fprintf(out, "%lf\n", fun(n));
}
fclose(in);
fclose(out);
/*End*/
system("pause");
return 0;
}
```
其中,函数 `fun` 计算数列前 n 项的和,变量 s 为和,t 为当前项的分子,p 为当前项的分母,i 为计数器,j 为辅助变量。在循环中,根据奇偶性来加减每一项的值,并且更新 t 和 p 的值。最终返回 s 的值。
在主函数中,先输入 n,并调用函数 fun 计算数列前 n 项的和。然后,在 `/*Begin*/` 和 `/*End*/` 之间,打开输入文件和输出文件,分别读入 n 的值,调用函数 fun 计算数列前 n 项的和,并将结果写入输出文件中。最后,关闭文件,输出 s 的值,等待用户按下任意键结束程序。
阅读全文