解题思路:
根据算式:知道后一项的分子等一前一项分子加分母;

后一项的分母为前一项的分子;


注意事项:


参考代码:

#include<stdio.h>
int main()
{
   long double n=2,m=1,N,t,sum=0.00;
   scanf("%Lf",&N);

    while(N)
    {
      sum=sum+n/m;

      t=m;
      m=n;
      n=n+t;
     N--;
    }
printf("%.2Lf",sum);
return 0;
}


点赞(52)
 

0.0分

43 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 52 条评论

WKR 3年前 回复TA
#include<stdio.h>
int main()
{
    int N,n=2,m=1,t;
    double sum=0.00;
    scanf("%d",&N);
    while(N--)
	{
    sum=sum+n/m;
    t=m;
    m=n;
    n=n+t;;
	}
    printf("%.2lf",sum);
    return 0;
}
为什么m,n是int,答案不对?
酒天 3年前 回复TA
@游弦 应该是大写N
晨曦 4年前 回复TA
n应该等于t+m吧
gonna 4年前 回复TA
while(N)为什么不用改为while(N!=0)
余余 4年前 回复TA
为什么m,n不用打成1.00,2.00?都是整数m/n不是取整的吗
游弦 4年前 回复TA
#include <stdio.h>
int fun(int n);

int main(void)
{
	int n;
	scanf("%d", &n);
	fun(n);
	return 0;
}

int fun(int n)
{
	float z=2, m=1, i=0, t=0, sum=0.00;//z分子、m分母 
	while(n)//这样写可以从0开始循环 
	{
		
		t=m;
		m=z;
		z+=t;
		sum+=(z/m);		
		n--;
	}
	printf("%.2lf", sum);
}输入10,也得16.48。但提交显示答案错误。有哪位高手知道,是哪里出错了吗?
实战演练 4年前 回复TA
@Meixi.oO @zxyi ???求解释
踏上星辰 4年前 回复TA
#include <stdio.h>
int main(void)
{
    double a=2.0,b=1.0;
    double c=0.0;
    int N;
    scanf("%d",&N);
    double sum=0.00;
    for(int i=1;i<=N;i++)
    {
        sum+=a/b;
        c=a;
        a=a+b;
        b=c;
    }
    printf("%.2lf",sum);
    return 0;
}
又是一波常规操作
onemorecod 4年前 回复TA
#include <stdio.h>

int main()
{
	int n;
	scanf("%d",&n);
	double a=2,b=1;
	int i;
	double t,sum=0;
	
	for( i=1;i<=n;i++ ){
		sum += a/b;
		t = b;
		b = a;
		a = a+t;
	}
	
	printf("%.2f",sum);
	
	return 0;
}
算法好难 4年前 回复TA
@雷步云 a,b,m应该用double类型