用c语言写s=1/2+2/3+3/5+5/8+....前20项的和

如题所述

#include <stdio.h>
double theSum(int N)
{
int n;
double An_2,An_1,An;
double S;
S=0.0; An_2 = An_1 = 1.0; //初值 实形数
for(n=0; n<N; n++)
{
An=An_1+An_2; //数列下一项 分母
S += An_1/An; //累加
An_2=An_1; An_1=An; //叠代
}
return S;
}

void main()
{
int Nx;
printf("退出方法: 输入小于0的数 或用CTRL+C\n");
while(1)
{
printf("\n请输入累加的前N项数目:");
fflush(stdin); //清空键盘输入缓冲区
scanf("%d",&Nx); //输入项数
if(Nx<0) return; //小于0项则退出
printf("前%d项的和:%.15lf \n", Nx, theSum(Nx));
}
}
///////////前任意项的和,随你便。 完整调试版 /////////////////////////////////
////////////////////////////////////////////////附精简版本:////////////////////////////////////////
#include <stdio.h>
double theSum(int N)
{
int n;
double S,An_2, An_1, An;
S=0.0; An_2=An_1=1.0; //初值
for(n=0; n<N; n++)
{
An = An_1+An_2; //数列之分子分母的特点
S += An_1/An; //累加
An_2=An_1; An_1=An; //叠代
}
return S;
}
void main()
{
int n=20;
printf("前%d项的和为:%.15lf", n, theSum(n));
}
//////////////////////////精简版结束 这排版真是怪呀,前导空格一样多时还长短不一,晕
//初次没看清题,现已修正 还好有回头检查的习惯 如果确信不会把代码用于计算超过20项的话,选1楼的回答就足够 我这个是把问题复杂化了,可以应付前任意项的和
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-27
#include<stdio.h>
int main()
{
int f1[21]={0,1,2};
int f2[21]={0,2,3};
int i;
for(i=3;i<21;i++)
{
f1[i]=f1[i-1]+f1[i-2];
f2[i]=f2[i-1]+f2[i-2];
}
double sum;//用double精确一些的

sum = 0;

for (k = 1; k <=20; k++)//循环前二十项加起来
{
sum += ((float)f1[i])/((float)f2[i]);//这里多加括号保险一些的
}

printf("sum = %.2lf\n", sum);

return 0;
}
第2个回答  2019-06-12
#include<stdio.h>
int
main()
{
int
f1[21]={0,1,2};
int
f2[21]={0,2,3};
int
i;
for(i=3;i<21;i++)
{
f1[i]=f1[i-1]+f1[i-2];
f2[i]=f2[i-1]+f2[i-2];
}
double
sum;//用double精确一些的
sum
=
0;
for
(k
=
1;
k
<=20;
k++)//循环前二十项加起来
{
sum
+=
((float)f1[i])/((float)f2[i]);//这里多加括号保险一些的
}
printf("sum
=
%.2lf\n",
sum);
return
0;
}
第3个回答  推荐于2017-09-07
void main()
{
int i, j, k, n, t;
float sum;

i = 1;
j = 2;
sum = 0;

for (k = 1; k <=20; k++)
{
sum += (float)i/(float)j;
t = i + j;
i = j;
j = t;
}

printf("sum = %f\n", sum);

return 0;
}本回答被提问者采纳
相似回答