在for循环中使用模数运算符

时间:2014-09-03 15:51:57

标签: c++ for-loop modulus

我一直试图让输出打印出来,每增加6个数字,就会添加换行符。但是,它没有按预期工作。如果用户在主函数中输入9,则应打印出来:

21    13    8     5     3     2  
1     1     0

但是正在打印

21   13
8     5    3    2    1    1
0

几乎正确但不完全正确。我该如何解决这个问题?我不确定是因为我的索引还是我错误地使用了模数运算符。谢谢!

我的代码:

void Fibonacci(int length)
{

    int arr[20] = {0, 1, 1, 2, 3, 5, 8, 13, 21,
                   34, 55, 89, 144, 233, 377,
                    610, 987, 1597, 2584, 4181};

    for (int i = length - 1; i >= 0; --i)
    {

        if (i % 6 == 0 )
        {

           cout<<endl;

        }
        cout<<setw(5)<<arr[i];

    }
    cout<<endl;

1 个答案:

答案 0 :(得分:0)

尝试

for (int i = length - 1; i >= 0; --i)
{
    cout<<setw(5)<<arr[i];

    if (((length - 1 - i) % 6 == 5)
    {
       cout<<endl;
    }
}

或者,正如 @tadman 建议的那样,

for (int i = 0; i < length; ++i)
{
    cout<<setw(5)<<arr[length - 1 - i];

    if (i % 6 == 5)
    {
       cout<<endl;
    }
}