解题思路:通过观察题目所给出的1 2 3 5 8 13 21...可得出该数是斐波那契数,由斐波那契数列的递推公式Fn(n)=Fn(n-1)+Fn(n-2) (n>2);所以我们可以先定义一个浮点型的数组用来储存该数列,然后定义一个函数通过递推来求得每一项的值,利用循环赋值给数组;最后进行求解
注意事项:要求保留两位小数,因此数组与用来求和的sum需要用到浮点型来定义,同时在打印结果时也需要用%.2f来确保输出两位小数。
参考代码:
#include<stdio.h>
int feibonaqi(int x);
int main(void)
{
float arr[1000],sum;
int n,i;
scanf("%d",&n);
for(i=0;i<=n;i++) //求前n项时需要n+1个数
{
arr[i]=feibonaqi(i); //给数组进行赋值,函数传参。
}
for(i=0;i<n;i++)
{
float m;
m=arr[i+1]/arr[i];
sum=sum+m; //将每一项的值进行求和。
}
printf("%.2f",sum);
}
int feibonaqi(int x)
{
if(x==0)
{
return 1; //定义第一项的值为1
}
else if(x==1)
{
return 2; //定义第二项的值为2
}
else
{
return feibonaqie(x-1)+feibonaqie(x-2); //利用递归来求剩余每一项的值。
}
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复