分数数列求和 (c语言程序)为什么答案不对啊

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和.#include<stdio.h>voidmain(){inta,b,... 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和.

#include<stdio.h>
void main()
{
int a,b,i,t;
float sum;
a=2;b=1;
sum=0;
for(i=1;i<=20;i++)
{
sum=sum+a/b;
t=a,
a=a+b,
b=a+t;
}
printf("sum=%f\n",sum);
}
展开
 我来答
甫桂兰仝雨
2020-02-23 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:30%
帮助的人:1030万
展开全部
其实这个题目根本不用求出s,也不用担心它会超出int范围。
因为是数列,所以就要从数列规律上去找结果。
比如a=1,n=5,s=3.列竖式
1
11
111
1111
11111
------
12345
后3位是345.
个位是5,它是怎么计算出来的?a*n
十位是4,怎么算出来的?a*(n-1)+个的进位(如果有)
百位是3,怎么算出来的?a*(n-2)+低位的进位(如果有)
照这个规律,根本不用计算s。
定义一个数组int
sm[10].sm[0]保存个位,sm[1]保存十位数字就行了,。。。
我没有写出完整的程序,只是给你一个思路。自己理解一下,很好写出代码。遇到问题请教是好事。
百度网友b7cd529
推荐于2018-05-04
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>
void main()
{
float a=2; //你的第一处错误所在
float b=1;
float sum=0;
for(int i=1;i<=20;i++)
{
sum+=a/b;
a=a+b,
b=a-b; //你的第二处错误所在
}
printf("sum=%f\n",sum);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cloudy_n
2008-12-11 · TA获得超过171个赞
知道小有建树答主
回答量:264
采纳率:0%
帮助的人:0
展开全部
呵呵,主要的问题是sum=sum+a/b,这里先计算乘除的时候,除了第一次可以等于二,后面全是零的,整型数的原因,把a,b换成float。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Dragonfly_CHN
2008-12-11
知道答主
回答量:14
采纳率:0%
帮助的人:0
展开全部
#include "stdio.h"
int fbn(int n)
{
if (n==0||n==1)
return 1;
else
return fbn(n-1)+fbn(n-2);
}
int main()
{
int cnt=0;
float sum=0;
for (cnt=1;cnt<=20;cnt++)
sum+=(float)fbn(cnt+2)/(float)fbn(cnt+1);
printf("Sum=%.6lf\n",sum);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式