编写程序,它的功能是:求Fibonacci数列中大于t的最小的一个数。其中Fibonnacci数列

编写程序,它的功能是:求Fibonacci数列中大于t的最小的一个数。其中Fibonnacci数列,第1张

#include<stdioh>

int main()

{

long t,F=1,a=0,b=1,i;

scanf("%ld",&t);

for(i=2;F<=t;i++)

{

F=a+b;

a=b;

b=F;

}

printf("首个大于%ld的数是第%ld个数,是%ld\n",t,i,F);

getch();

return 0;

}

斐波那契数列是一个经典的数列,前两项为0和1,后续项为前两项之和,即:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34,

以下是C语言程序文件,用于求解小于自然数n的斐波那契数列第50项的值:

#include <stdioh>

int main() {

int n = 100;  // 假设n为100

int a = 0, b = 1, c;

int i;

for (i = 2; i < 50; i++) {

c = a + b;

if (c > n) break;

a = b;

b = c;

}

printf("小于%d的斐波那契数列第50项为%d", n, b);

return 0;

}

解释:

我们假设n为100,可以根据实际情况修改。

定义a=0,b=1为前两项,c为当前项,i从2开始循环,因为前两项已经确定。

每次循环,c为a和b之和,判断c是否大于n,如果大于,则退出循环,否则将a和b往后移动一项。

输出小于n的斐波那契数列第50项,即b。

注意:这里求的是小于n的斐波那契数列第50项,如果要求恰好等于n的斐波那契数列第几项,需要对程序进行修改。

最主要原因是for语句后面不应加分号,由于有分号其后面{}中的语句就不属于for了

还有一些其他细节需要修改:比如f3应先计算再输出,因为没有给f3赋初值;

因为是从f3开始输出的,应该先输出f1和f2,再执行for循环,然后i从3开始

对于long整型数输出最好用"%ld",为了美观可以用"%6ld"使输出位宽一致

修改后的代码和运行结果如下:

可见正确输出了Fibonacci数列的前30个数,望采纳~

附源码:

#include <stdioh>

int main() {

  int i;

  long f1 = 1, f2 = 1, f3;

  printf("%6ld %6ld ", f1, f2); // 先输出前两项

  for (i = 3; i <= 30; i++) // 这里没有分号

  {

      f3 = f1 + f2; // 计算并输出第三项

      printf("%6ld ", f3);

      f1 = f2;

      f2 = f3;

      if (i % 6 == 0)

          printf("\n");

  }

  return 0;

}

以上就是关于编写程序,它的功能是:求Fibonacci数列中大于t的最小的一个数。其中Fibonnacci数列全部的内容,包括:编写程序,它的功能是:求Fibonacci数列中大于t的最小的一个数。其中Fibonnacci数列、1编写一个程序文件,求小于任意自然数n的斐波那契(Fibonacci)数列第50项斐波那、用c语言求Fibonacci数列前30个,求这个程序哪里错了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10104991.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存