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

时间:2015-01-08 17:39:49

标签: c++ visual-c++

我需要询问用户屏幕上显示的Fibonacci序列数量。我已经完成了所有工作,但由于我一次在屏幕上打印两个数字,它打印的是用户输入的两倍。我只想将用户输入的数字除以2,但不能用于奇数。如果有人能想到这个解决方案,谢谢。 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;
    }
}

3 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

循环类似:

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

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

答案 2 :(得分:0)

在Fibonacci系列中,你需要至少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;
}