尝试一次将两个数字打印到屏幕时遇到简单循环问题

Having trouble with a simple loop when trying to print two numbers to the screen at once

我需要询问用户在屏幕上显示了多少个斐波那契数列。我已经完成了几乎所有的事情,但是因为我一次在屏幕上打印两个数字,所以它打印的是用户输入的两倍。我只是将用户输入的数字除以二,但奇数不起作用。如果有人能想到解决方案,谢谢。 http://en.wikipedia.org/wiki/Fibonacci_number <-- 斐波那契数如果你不知道的话

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    cout << "How many numbers do you want generated in the Fibonacci sequence.\n";

    int num;
    cin >> num;

    int num1 = 0, num2 = 1;
    int sum;
    int f = 1;

    while (f <= num)
    {
        cout << num1 << setw(5) << num2 << setw(5);
        sum = num1 + num2;
        num1 = sum;
        num2 = sum + num2;
        ++f;
    }
}

由于您一次生成两个数字,因此您需要一次递增计数器 2:

int f = 0;
for (; f < num; f += 2) {
    // body
}

然后如果num是偶数,打印最后一个

if (f == num) {
    // print num1
}

循环如下:

while ( f <= num )
{
    cout << num1 << setw(5);
    if ( ++f <= num )
    {
        cout << num2 << setw(5);

    /// rest of calcs
       ++f;
    }
}

在斐波那契数列中,你至少需要2,少了没有意义。超过 2 你只需要打印总和。

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    cout << "How many numbers do you want generated in the Fibonacci sequence.\n";

    int num;
    cin >> num;

    int num1 = 0, num2 = 1;
    int sum;
    cout << num1 << setw(5) << num2 << setw(5);
    int f = 3;

    while (f <= num)
    {
        sum = num1 + num2;
        cout << sum << setw(5);
        num1 = num2;
        num2 = sum;
        ++f;
    }
    cout << std::endl;
}