现在我有了这段代码
int main() {
int cols;
cout << "cols";
cin >> cols;
int rows;
cout << "rows";
cin >> rows;
char** charArray = new char*[rows];
for (int i = 0; i < rows; ++i) {
charArray[i] = new char[cols];
}
// Fill the array
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
charArray[i][j] = char('1' + i + j );
}
}
// Output the array
for (int i = 0; i < rows; ++i) {
for (int j = i; j < cols ; ++j) {
cout << charArray[i][j];
}
cout << endl;
}
// Deallocate memory by deleting
for (int i = 0; i < rows; ++i) {
delete[] charArray[i];
}
,输出就像 1 2 3 2 3 4
我怎样才能做到 1 2 3 4 5 6
我尝试了很多,我是编程新手,所以请你解释一下这个问题是什么问题!非常感谢!!
答案 0 :(得分:3)
只需改变一下:
charArray[i][j] = char('1' + i + j );
由:
charArray[i][j] = char('1' + i*cols + j);
顺便说一句: 输出数组循环中有一个拼写错误:
for (int j = i; j < cols ; ++j) {
应该是:
for (int j = 0; j < cols ; ++j) {
答案 1 :(得分:1)
数组填充循环应该是
int count = 0;
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
charArray[i][j] = char('1' +count );
count++;
}
}
尝试上面的代码
答案 2 :(得分:0)
你正在构建一个矩阵,就在这里。所以它是二维的。 输出的含义是矩阵看起来像:
1 2 3
2 3 4
这是很自然的,因为在填充它时,你为坐标i,j的每个元素写了值1 + i + j。这意味着如果i和j都等于1(第二行,第二列,因为索引从0开始),你将值1 + 1 + 1 = 3。
如果你想获得矩阵:
1 2 3
4 5 6
你必须填写
charArray[i][j] = char('1' + i*ncols + j );
这样当你填充第一行时,i = 0,所以它是一样的。 但是在第二行,i = 1,所以得到1 + 3 + 0 = 4.然后1 + 3 + 1 = 5,等等。
编辑:人们在这里很快。当我写下我的答案时,已经有2个人发布了他们的答案:D