题目要求
本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。
函数接口定义:
int fib( int n );
void PrintFN( int m, int n );
其中函数fib须返回第n项Fibonacci数;
函数PrintFN要在一行中输出给定范围[m, n]内的所有Fibonacci数,相邻数字间有一个空格,行末不得有多余空格。
如果给定区间内没有Fibonacci数,则输出一行“No Fibonacci number”。
代码
#include <stdio.h>int fib( int n );
void PrintFN( int m, int n );
int fib( int n ){if(n==1||n==2) return 1;else{int a1=1,a2=1,a;for(int i=3;i<=n;++i){//生成斐波那契数 a=a1+a2;a1=a2;a2=a;}return a;}
}
void PrintFN( int m, int n ){int s=0;//标记有没有斐波那契数 for(int i=1;;++i){int c=fib(i);//斐波那契数列的某一项 if(c>=m&&c<=n){//在m和n的区间内 if(s==0) {//格式要求 printf("%d",c);}else{printf(" %d",c);}s++;}if(c>n) break; } if(s==0) printf("No Fibonacci number");//没出现过斐波那契
}
int main()
{int m, n, t;scanf("%d %d %d", &m, &n, &t);printf("fib(%d) = %d\n", t, fib(t));PrintFN(m, n);return 0;
}/* 你的代码将被嵌在这里 */