按列打印二维数组时出现问题

  • 本文关键字:问题 二维数组 打印 c++
  • 更新时间 :
  • 英文 :


问题的参数是一个循环,用于打印二维数组 iArr,以便打印第 0 列中的所有 3 个数字,然后在下一行打印第 1 列中的所有 3 个数字,依此类推,直到第 4 列。逐列打印。我也只能使用 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;
}

显然,打印的循环中有一个拼写错误:

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

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

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

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

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

最新更新