0

我对 C++ 仍然很陌生,并决定制作一个斐波那契数列。它起作用了(哇!),但它并没有我想要的那么好。

我的意思是说,例如,我告诉我的程序计算我将得到的序列的前 10 个项

“0, 1, 1”,然后我必须为每个额外的数字按 Enter 键,直到它达到 10,在这种情况下程序返回 0 并结束。

如何让程序显示我想要的所有数字,而无需为每个额外的数字输入?

这是我的脚本:

#include <iostream>
using namespace std;

int main()
{
    int FibNum;
    cout << "How many numbers of the Fibonacci Sequence would you like to see? \n\n";
    cin>> FibNum;
    cin.ignore();
    int a = 0;
    int b = 1;
    int c = 2;
    cout << "Fibonacci Sequence up to " << FibNum << " terms.\n\n";
    cout << a << "\n" << b << "\n";

    for (int c = 2; c < FibNum; c++) {
        int d = a + b;
        cout << d;
        cin.ignore();
        a = b;
        b = d;
    }
}

提前感谢您的帮助!

Ps 另外,如果您发现我在做任何可怕的事情,请随时纠正我,我很清楚我可能做错了很多,我只是在努力学习。:]

4

3 回答 3

5

一些东西:

1)在循环内int c = 2;重新定义时删除。cfor

2)删除行cin.ignore();:在您的for循环中:这将解决您的“输入”问题;该行等待一些输入然后忽略它。

3)在你的输出中放一些空格:例如cout << d << ' ',你的数字是分开的。

4) [Acknowledge vincent_zhang] 考虑将 touint64_t作为 、 和 的a数据b类型d。这是 C++11 中的标准类型。它是一个 64 位无符号整数类型;足以应付大量的条款。

还有一件小事,与个人意见接壤,

5)使用++c而不是c++因为前者永远不会运行得更慢,因为至少在概念上,后增量必须获取原始值的副本。

于 2013-10-02T20:35:07.683 回答
2

除了前面的回答,

  1. 为了更好地格式化输出,通过改变这个来添加空格

    cout << d; 
    

    cout << d << " ";
    
  2. 您可能想要更改a,bdfrom intto的类型double以防止溢出。

    (如果你让FibNum=100你的代码,你应该能够观察到溢出,这意味着你将在序列的末尾得到一些不正确的数字。)

于 2013-10-02T20:48:56.460 回答
1

将 cin.ignore() 移出循环,则无需输入即可打印斐波那契数列的所有 10 个数字

于 2013-10-02T20:35:57.427 回答