习题6-4 使用函数输出指定范围内的Fibonacci数

简介: 本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。

本题要求实现一个计算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 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;
}
/* 你的代码将被嵌在这里 */


20210526131820254.png

int fib( int n ){
  int i=1,j=1,m=1,k;
  for(k=1;k<=n-2;k++){//递归是否可以(注意超时)
    m=i;
    i=m+j;
    j=m;
  }
  return i;
}
//注意时间是否超时
//格式是否错误
void PrintFN( int m, int n ){
  int i=1,fb,cut=0;
  while(fib(i)<m){i++;}
  if(fib(i)<=n){
    printf("%d",fib(i));cut++;}
  for(i++;fib(i)<=n;i++){
    fb=fib(i);
    if(fb<=n){
      printf(" %d",fb);
      cut++;
    }
  }
  if(cut== 0){
    printf("No Fibonacci number");
  }
}
目录
相关文章
|
5月前
|
C语言
【C语言】输入一个数n,输出从n到n+100的范围内所有的素数,并统计素数的个数
【C语言】输入一个数n,输出从n到n+100的范围内所有的素数,并统计素数的个数
79 0
|
4月前
|
机器学习/深度学习 C语言
每日一数——使用函数求Fibonacci数
每日一数——使用函数求Fibonacci数
|
5月前
习题6-3 使用函数输出指定范围内的完数 (20分)
习题6-3 使用函数输出指定范围内的完数 (20分)
|
5月前
|
存储 弹性计算 运维
打印斐波那契数列
【4月更文挑战第29天】
34 0
wustojc5007输出Fibonacci数列的前n项
wustojc5007输出Fibonacci数列的前n项
42 0
|
C语言
C语言一个判断素数的函数fun,在主函数中计算1000以内所有素数的平均值并输出
C语言一个判断素数的函数fun,在主函数中计算1000以内所有素数的平均值并输出
128 0
打印 斐波那契数列
打印 斐波那契数列
84 0
复习C部分:1.看代码求值题 2.写三个整数代码从大到小输出 3.打印1~100中所有3的倍数 4.给定两个数,求最大公约数(递减法,辗转相除法)
复习C部分:1.看代码求值题 2.写三个整数代码从大到小输出 3.打印1~100中所有3的倍数 4.给定两个数,求最大公约数(递减法,辗转相除法)
137 0
复习C部分:1.看代码求值题 2.写三个整数代码从大到小输出 3.打印1~100中所有3的倍数 4.给定两个数,求最大公约数(递减法,辗转相除法)
打印出100-200之间素数及总个数(用math函数)
打印出100-200之间素数及总个数(用math函数)
112 0
打印出100-200之间素数及总个数(用math函数)
|
C语言
C语言(素数)[解法]:编写prime(m)判断m是否为素数,当m为素数返回1,否则返回0;
C语言(素数)[解法]:编写prime(m)判断m是否为素数,当m为素数返回1,否则返回0;
348 0