一、解题思路
我们先观察题目中的分数的分子分母的数字,1,2,3,5,8,13,...... 我们可以发现,从第三个数字开始,后面一个数字是前面的两个数字之和。然后看分数,2/1,3/2,5/3,8/5,13/8,....... 可以看出规律是后一个数字比上前一个数字。
由此,我们可以使用一个数组将上面那些数字存储起来,这样,规律就是array[i + 1] / array[i]。同时这样也能提高代码效率。
那么,我们如何求分子分母那些数字,很简单,就是后一个数字等于前两个数字。也就是array[i] = array[i - 1] + array[i - 2](i >=2)。
二、代码实现
#include <stdio.h> int main() { int N; scanf("%d",&N); //求分数 float fractions[N];//注意浮点型,题目要求保留两位小数 fractions[0] = 1; fractions[1] = 2; //注意i的范围应从2开始 for(int i = 2;i <= N;i++) { fractions[i] = fractions[i - 1] + fractions[i - 2]; } //求和 float sum = 0;//注意浮点型,题目要求保留两位小数 for(int i = 0;i < N;i++) { sum = sum + (fractions[i + 1] / fractions[i]); } printf("%.2f\n",sum); return 0; }
三、运行结果
0.0分
1 人评分
简单的a+b (C++语言代码)浏览:853 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:559 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:798 |
Hello, world! (C语言代码)浏览:714 |
C语言程序设计教程(第三版)课后习题8.2 (C语言代码)浏览:1028 |
汽水瓶 (C语言代码)浏览:530 |
C二级辅导-公约公倍 (C语言代码)浏览:1310 |
1005答案错误为什么浏览:1975 |
简单的a+b (C语言代码)浏览:461 |
Manchester-数字整除最原始易理解方法浏览:4478 |