C语言作业求助
(4)使用函数输出指定范围内的 Fibonacci 数:输人两个正整数m 和 n ( 1≤m,n ≤10 000),输出 m~n之间所有的 Fibonacci 数。Fibonacci序列(第1项起):1、1、2、3、5、8,13、21、…。【要求定义并调用函数 fib(n),它的功能是返回第n项Fibonacci数。例如,fib(7)的返回值是13。】输入输出示例(括号内为说明文字)
20 ( m= 20)
100 ( n = 100)
21 34 55 89 (20到100之间的Fibonacci数)
本帖最后由 jackz007 于 2022-12-23 19:20 编辑
#include <stdio.h>
int fib(int n)
{
int a , b , c , i ;
for(i = 3 , a = b = 1 ; i < n + 1 ; i ++) {
c = a + b ;
a = b ;
b = c ;
}
return b ;
}
int main(void)
{
int c , i , m , n , x ;
scanf("%d%d" , & m , & n) ;
for(i = 1 ; fib(i) < m ; i ++) ;
for(c = 0 ; (x = fib(i)) < n + 1 ; i ++) {
if(c) printf(" ") ;
printf("%d" , x) ;
c ++ ;
}
printf("\n") ;
}
编译运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
20 100
21 34 55 89
D:\\C> 本帖最后由 jhq999 于 2022-12-23 20:10 编辑
#include <stdio.h>
#include <math.h>
int fib(int n )
{
double s=sqrt(5);
return (int)((pow(1.0+s,n)-pow(1.0-s,n)))/(s*pow(2,n))+1;//过19就溢出完蛋了
int main()
{
int i=0,a,m,n;
scanf("%d%d",&m,&n);
i=1;
while((a=fib(i++))<=n)
if(a>=m)printf("%d",a);
return 0;
}
页:
[1]