问题的参数是一个循环,用于打印二维数组 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 个值,依此类推...