函数fun是根据输入n,求数列s=1/2- (1/2) * (3/4)+(1/2) * (3/4) * (5/6)-(1/2) * (3/4) * (5/6) * (7/8)+. . . 前n项的和 ,
例如输入10 ,结果输出为0.206936。要求在/Begin/与/End/之间编写程序,其它部分不得增删语句。
#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;
}
一个实现,供参考:
#include<stdio.h>
#include<stdlib.h>
double fun(int n)
{
double sum=0; //数列和
int i,j,k;
int flag=-1; //符号位
double single=1; //每项数列的乘积
for(i=1;i<=n;i++){ //计算从1到n的数列和
flag*=-1; //符号位运算
for(j=1,k=1;j<=i;k+=2,j++){ //计算每项数列的乘积
single*=(double)k/(k+1);
//printf("single=%lf,i=%d,j=%d,k=%d\n",single,i,j,k);
}
single*=flag; //每项数列乘积乘上符号位
//printf("single=%lf,i=%d\n",single,i);
sum+=single;//累加每项数列的乘积到和中
single=1; //每项数列的乘积置为1
}
return sum;
}
int main()
{
int n;
double s;
FILE *in,*out;
printf("输入n:");
scanf("%d",&n);
s=fun(n);
printf("%lf\n",s);
in=fopen("f:\\in2019-2-3-2.dat","r");
out=fopen("f:\\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;
}
#include<stdio.h>
void sum(int n){
float s=0;
int j = -1;
float item = 1;
for (int i = 2,k=0; i <= n; i += 2,k++)
{
j *= -1;
item *= (i - 1.0) / i;
s = s + item * j;
}
printf("%f", s);
}
int main() {
sum(10);
}