发布网友 发布时间:2024-10-23 19:43
共2个回答
热心网友 时间:2024-10-26 09:37
代码如下, 可多次计算求和.
输入非正整数时,程序结束.
/*
求和
a(1)=1, b(1)=2,
c(n)=b(n)/a(n), a(n+1)=b(n), b(n+1)=a(n)+b(n),
sum = sum_{k=1->n}(-1)^(k-1)c(k)
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void main()
{
int n;
char cn[200];
double fn;
do
{
// 输入和项数目 n
printf("\n请输入和项数目, (输入非正整数将使程序结束)\n");
scanf("%s", cn);
fn = atof( cn );
n = int( fn );
if( ( n <= 0 ) || ( fn != n ) )
{
printf("和项数目为非正整数,程序结束!\n");
break;
}
// c(n)=b(n)/a(n), a(n+1)=b(n), b(n+1)=a(n)+b(n),
// sum = sum_{k=1->n}(-1)^(k-1)c(k)
float c, a=1, b=2;
float x,sum=0;
int i, nsgn = 1;
// 开始求和
for(i=1; i<=n; i++)
{
c = b/a;
c = nsgn*c;
sum = c + sum;
x = a + b;
a = b;
b = x;
nsgn = (-1)*nsgn;
}
// 输出和
printf("前%d项的和为 %.18f\n",n, sum);
}while(n);
return;
}
热心网友 时间:2024-10-26 09:34
C程序源代码如下
#include <stdio.h>
#include <iostream.h>
void main()
{
float n,c,a=1,b=2;
float x,sum=0;
for(n=1;n<21;n++)
{
x=b/a;
sum=x+sum;
c=a;
a=b;
b=a+c;
}
printf("The answer is %f",sum);
}
结果:32.660259