在循环中使用模数运算符

Using Modulus operator in for-loop

本文关键字:运算符 循环      更新时间:2023-10-16

我一直在尝试让输出打印出每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;

尝试

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;
    }
}