问题的参数是一个循环,用于打印二维数组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;
}
答案 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;
}
因此在这里,我们尽可能地限制了这些变量的范围,以使其更加安全。