【问题标题】:Why can't my program show Fibonacci series?为什么我的程序不能显示斐波那契数列?
【发布时间】:2019-03-23 12:25:06
【问题描述】:

我的程序无法显示斐波那契数列,但我认为代码是正确的,有人知道为什么吗?

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>

using namespace std;

int main()
{

  int a=0,b=1,c;
  cout << "Fibonacci number" << endl;
  cout << a << "      ";
  cout << b << "      ";
    while (c<100)
   {
     c=a+b;
     a=b;
     b=c;
   }
   cout << c << "      ";
   return 0;
}

【问题讨论】:

  • 听起来您可能需要学习如何使用调试器来单步调试您的代码。使用好的调试器,您可以逐行执行您的程序,并查看它与您期望的偏差在哪里。如果您要进行任何编程,这是必不可少的工具。延伸阅读:How to debug small programs
  • c 从未初始化。
  • 如果你想打印每个词,打印语句不应该是你计算每个词的地方吗?
  • @NeilButterworth C 不应该初始化
  • @alifarokhi no c 需要为while (c&lt;100) 初始化

标签: c++ while-loop logic fibonacci


【解决方案1】:

您的代码中有两个错误,正如其他人在 cmets 中所述。

首先,您尝试使用 c 而不对其进行初始化。请记住,在 C++ 中,当声明一个内置类型而不初始化它时,它是“默认初始化的”。换句话说,如果你在函数中声明一个内置类型的变量(在本例中为main() 函数),它的值是未定义的。因此,您不能在为其赋值之前使用它来检查条件,而这正是您的 while 循环所做的。

其次,您只是将最后一个计算值c 推入 ostream。换句话说,您只打印斐波那契序列的最后一个值。 尝试将 cout &lt;&lt; c 语句放入循环中。

PS.:尽可能使用C++ 版本的C 库(即&lt;cstdio&gt; 而不是&lt;stdio.h&gt; 等)

【讨论】:

    猜你喜欢
    • 2012-12-29
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多