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

1.#include<stdio.h>
void main()
{
int a,c,n;

float t,sum,b;//注意这里的b和下面的b的位置
sum=0;
a=1;
b=2;
for (n=1;n<21;n++)
{
t=b/a;
c=a+b;
sum=sum+t;
a=b;
b=c;
}
printf("%f\n",sum);
}

2.#include<stdio.h>
void main()
{
int a,b,c,n;//把b放在这里为什么不正确?为什么要把b放在float哪里?求解析!!!

float t,sum;
sum=0;
a=1;
b=2;
for (n=1;n<21;n++)
{
t=b/a;
c=a+b;
sum=sum+t;
a=b;
b=c;
}
printf("%f\n",sum);
}

#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个回答  推荐于2018-02-28
举个例子你就明白了,3/2 看起来应该是1.5,但是实际结果是1,因为c语言在处理3/2的时候,由于3和2都是整数,所以进行的整除运算,即结果没有小数部分(是直接去掉,而不是四舍五入)。
但是如果写成3.0/2那么结果就是1.5了,原因就是3.0/2这个式子中有小数,所以进行的是小数运算,结果会保留小数部分。
你的第一个代码中b定义为float类型,所以b/a进行的是小数除法运算,而第二个代码中b定义为int类型,所以进行的是整除运算,结果自然不对。本回答被提问者和网友采纳
第2个回答  2014-03-22
1.在计算机中:两个整型数相除,其结果还是整型(只保存整数部分);浮点数与整型数、浮点数与浮点数相除,结果为浮点数。

2.要想让两个整型数相除得到浮点数,至少要让其中一个整型数强制转换为浮点数。

3.所以,第一段代码能得到正确结果,第二段的结果是错的。

4. 第二段代码中,如果将for循环中的语句t=b/a;改成t=(float)b/a;,一样能得到正确结果,而且更符合题意。
第3个回答  2011-12-27
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;
}
第4个回答  2007-04-02
#include<stdio.h>
main()
{
float numerator = 1, denominator = 2, temp;
float total = 0;
int num;
total += 1;//第一项
for( num=0; num<19; num++ )//后十九项
{
total += numerator / denominator;
temp = denominator;
denominator += numerator;
numerator = temp;
}
printf("total = %f\n",total);
}

VC编译通过,希望对你有点帮助。

C语言s=2\/1+3\/2+5\/3+8\/5+...前20项的和
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));} \/\/\/精简版结束 这排版真是怪呀,前导空格一样多时还长短不一,晕 \/\/初次...

c语言s=2\/1+3\/2+5+3+8\/5...前20项之和
int fib(int n) { int a = 1, b = 2; for(int i=0; i<n; i++) { int c = a + b; \/\/ 第一次执行,c变成3 a = b; \/\/ 第一次执行,a变成2 b = c; \/\/ 第一次执行,b变成3 }}然后就是利用这个东东来计算你说的和:int fun(int n) {\/\/这个传...

C语言如何求2\/1+3\/2+5\/3+8\/5+…
求2\/1+3\/2+5\/3+8\/5+…前20项之和,结果保留2位小数,C语言代码如下:include "stdio.h"void main(){ int a[21]={0};double t=0,sum=0;int i;a[0]=1;a[1]=2;for(i=2;i<21;i++)a[i]=a[i-1]+a[i-2];for(i=0;i<20;i++){ t=a[i+1]*1.0\/a[i];sum+=...

c语言编程题:2\/1+3\/2+5\/3+8\/5+13\/8……前20项和
int i;add=0.0,a=1.0,b=2.0;for(i=1;i<=20;i++){ sum=a\/b;add=add+sum;c=a;\/\/下面3部是实现数列规律的 a=b;b=c+b;} printf("数列的和为%f",add);}

c语言 求2\/1+3\/2+5\/3+8\/5...的前二十项和
可以参考下面的代码:include<stdio.h> main(){ int i,j,n=20;int fz=2,fm=1;float sum=2;for(i=2;i<=n;i++){ fz=fm+fz;fm=fz-fm;sum+=fz*1.0\/fm;} printf("%f",sum);}

...序列2\/1,3\/2,5\/3,8\/5,13\/8,...求出这个数列前20项之和
include <stdio.h> double sum(int n){ int i;double part = 0;for( i = 1.0; i <= n; i++ )part += (1.0 \/ i);return 2 * n - part;} int main(void){ printf( "%.18f\\n", sum(20) );return 0;} 楼主,小数点后的精度你可以根据需要自己调,我选的是18位。

...3\/2,5\/3,8\/5,13\/8,21\/13,…求这个数列的前20项之和。
return 2;else if(n>=3)return fabonaci(n-1)+fabonaci(n-2);else { printf("Input Error!\\n");return 1;} } int main(){ int i;double s=0.0;for(i=1;i<=20;i++)s+=(double)fabonaci2_3(i)\/(double)fabonaci1_2(i);printf("2\/1+3\/2+5\/3+8\/5+13\/8+21\/13+....

...3\/2,5\/3,8\/5,13\/8,21\/13...求出这个数列的前20项之和。
1,2,3,5,8,13,21 ... 从第三项开始,F(n)=F(n-1)+F(n-2),符合斐波那契数列特征。本题的分数序列,以上述数列的第n项作为n项的分母,以n+1项作为n项的分子。不懂C语言。一般来说,分数计算的结果,应该以分数形式精确表达。写了一段fortran代码,计算这个数列前20项的和。sum =...

...语言编写求2\/1,3\/2,5\/3,8\/5,13\/8,...求它的前20项之和?
include <stdio.h> main() { int fenzi=2,fenmu=1,i,tp;double d=0;for(i=0;i<20;i++) { d += 1.0*fenzi\/fenmu;tp=fenzi;fenzi = fenzi+fenmu;fenmu = tp;} printf("%f",d);} 结果 32.660261

...序列:2\/1,3\/2,5\/3,8\/5,13\/8,21\/13...求出前20项之和
{ float i=1.0,j=2.0,sum=0.0,temp;int n;for(n=0;n<20;n++){ sum+=j\/i;temp=j; \/\/temp存储前一个分数的分子j j=i+j; \/\/j赋值为此次循环的分子与分母之和,它将作为下次的分子 i=temp; \/\/i赋值为此次循环的分子,它将作为下次的分母 } printf("The SUM is %f\\n",sum...

相似回答