#include "stdio.h"
int fib(int n){
int a,b;
for(a=b=1;n>1;b+=a,a=b-a,n--);
return a;
}
void PrintFN(int m,int n){
int x,t,f;
x=f=0;
while(fib(++x)while((t=fib(x++))<=n){
printf(fib(x)f++;
}
if(!f)
printf("No Fibonacci number.\n");
}
int main(int argv,char *argc[]){
int m,n;
printf("Input m & n(int 0if(scanf("%d%d",&m,&n)!=2 || m<1 || n>10000 || m>n){
printf("Input error, exit...\n");
return 0;
}
PrintFN(m,n);
return 0;
}
运行样例:
跳过if后的print语句,防止两次打印同一个数。
if 只有在第一次循环,index=1时才执行,而if中执行的内容又与if外的相同,所以要避免这种矛盾