qq_36519547
2016-11-08 14:38
采纳率: 47.1%
浏览 943
已采纳

新人求解一道C语言问题!!!!

输出[m,n]范围内的所有斐波那契(Fibonacci)数,m,n这两个数由键盘输入。
【提示】
1,1,2,3,5,8,13,21,34,……这是斐波那契(Fibonacci)数列的前几项。斐波那契数列的特点:前两项均为1,后面任意一项都是其前面两项之和。
本实验虽然只要求输出在[m,n]范围内的斐波那契数,但是依然需要从第1个Fibonacci数开始依次得到下一个,并判断是否是需要输出的那个。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • pengyou2002000 2016-11-09 03:19
    已采纳

    首先先开一个数组,把斐波那契数列存到数组里,然后再读入两个数字m和n,寻找数组中满足条件数字,输出来

     #include<stdio.h>
    int main()
    {
        int f[100];
        int m, n, i;
    
        f[0] = 1; f[1] = 1;
        for (i = 2; i < 100; i++)f[i] = f[i - 1] + f[i - 2];
    
        scanf("%d%d", &m, &n);
    
        for (i = 0; f[i] < m; i++);
        for (; f[i]<n; i++) printf("%d ",f[i]);
    
        return 0;
    }
    

    程序有些小毛病没有太细致的修改。比如斐波那契数列后续的数目越来越大,int很有可能存不下,如果m和n比较大的话会出错。如果出现这种情况,建议你用long或者更大的数来存。再有,我默认了m比较小而n比较大。如果程序有其他要求或条件的话,需要进行相应的修改

    已采纳该答案
    打赏 评论
  • 当作看不见 2016-11-08 14:43

    ok,解决请采纳

    #include <stdio.h>
    
    int main()
    {
    int f1=1,f2=1,f=2;
    int m,n;
    scanf("%d%d",&m,&n);
    //获取输入的m,n的值
    while(f<=n){
    if(f>m){
    printf("%d ,",f);
    //输出
    }else{
    
    }
    f1=f2;
    f2=f;
    f=f2+f1;//数据交换
    
    }
       return 0;
    }
    
    打赏 评论

相关推荐 更多相似问题