在按列打印二维数组时遇到问题

时间:2019-09-25 19:08:31

标签: c++

问题的参数是一个循环,用于打印二维数组iArr,以便打印第0列中的所有3个数字,然后在下一行中,通过第4列打印第1列中的所有3个数字,等等。逐列。我也只能使用cnt1,cnt2和列出的数组,而不能使用其他函数或变量(因此重新使用cnt1),而且我不得不更早地使Arr元素的随机数在1到53之间。

我有一些循环,但是我认为它们不能正确打印行。

#include <iostream>
#include <string>
#include<iomanip>
using namespace std;
int iArr[3][5];

for (cnt1 = 0; cnt1 < 3; cnt1++)
{
    for (cnt2 = 0; cnt2 < 5; cnt2++)
    {
        iArr[cnt1][cnt2] = rand() % 53 + 1; 
    }
}



for (cnt1 = 0; cnt1 < 3; cnt1++)
{
    for (cnt2 = cnt1; cnt2 < 5; cnt2++)
    {
        cout << setw(5) << iArr[cnt1][cnt2] << ' ';
    }
    cout << endl;
}

2 个答案:

答案 0 :(得分:1)

我认为有些错字,您需要在第二个嵌套循环中更新计数器(打印时)

for (cnt1 = 0; cnt1 < 5; cnt1++)
{
    for (cnt2 = 0; cnt2 < 3; cnt2++)
    {
        cout << setw(5) << iArr[cnt2][cnt1] << ' ';
    }
    cout << endl;
}

这将以列方式打印值。第一列的前3个值,下一行,然后第二列的下3个值,依此类推...

答案 1 :(得分:1)

显然,在打印循环中有一个错字:

for (cnt2 = cnt1; cnt2 < 5; cnt2++)

所以我想你是说:

for (cnt2 = 0; cnt2 < 5; cnt2++)
  • 如果被允许并使用C ++的较新版本,那为什么不在循环内部声明循环变量呢?

  • 因为它更安全,更不易出错,并且这些变量可重复使用且易于跟踪和检查。而且它们彼此不依赖:

    for (int cnt1 = 0; cnt1 != 3; cnt1++){
        for (int cnt2 = 0; cnt2 != 5; cnt2++){
            //...
        }
    }
    
    for (int cnt1 = 0; cnt1 != 3; cnt1++){
        for (int cnt2 = 0; cnt2 != 5; cnt2++){
            //...
        }
        cout << endl;
    }
    

因此在这里,我们尽可能地限制了这些变量的范围,以使其更加安全。