为什么我的 2d 数组的第二行从 RAM 中获取随机值?
Why is the 2nd row of my 2d array taking random values from RAM?
所以我正在为类做这个项目,我正在尝试使用 for 循环为 2d 数组赋值,但我遇到了几个问题。这是我的代码:
#include <iostream>
#include <string>
using namespace std;
const int MAX = 10;
int main()
{
int matrix2[MAX][MAX];
int matrix1[MAX][MAX];
int i, j;
j=0;
for (i=0; i < MAX; i++){
matrix1[i][j] = i + 5;
for (j=1; j < MAX; j++){
matrix1[i][j] = matrix1[i][j-1] + 4;
cout << matrix1[i][j] << " ";
}
cout << endl;
}
}
这就是它输出的内容:
9 13 17 21 25 29 33 37 41
1422620036 1422620040 1422620044 1422620048 1422620052 1422620056 1422620060 1422620064 1422620068
10 14 18 22 26 30 34 38 42
11 15 19 23 27 31 35 39 43
12 16 20 24 28 32 36 40 44
13 17 21 25 29 33 37 41 45
14 18 22 26 30 34 38 42 46
15 19 23 27 31 35 39 43 47
16 20 24 28 32 36 40 44 48
17 21 25 29 33 37 41 45 49
这是我试图获得的输出:
5 9 13 17 21 25 29 33 37 41
6 10 14 18 22 26 30 34 38 42
7 11 15 19 23 27 31 35 39 43
8 12 16 20 24 28 32 36 40 44
9 13 17 21 25 29 33 37 41 45
10 14 18 22 26 30 34 38 42 46
11 15 19 23 27 31 35 39 43 47
12 16 20 24 28 32 36 40 44 48
13 17 21 25 29 33 37 41 45 49
14 18 22 26 30 34 38 42 46 50
我问是否有人我可以做些什么来修复第二行,以及为什么第一列没有打印
j
只对第一次"i
迭代"0
;在所有其他情况下,它是MAX
。
在MAX
的情况下,matrix[i][j]
有未定义的行为。
强大的解决方案是使用循环变量进行循环,而不是其他任何内容。
在尽可能小的范围内声明所有内容。
for (int i = 0; i < MAX; i++){
matrix1[i][0] = i + 5;
for (int j = 1; j < MAX; j++){
matrix1[i][j] = matrix1[i][j-1] + 4;
cout << matrix1[i][j] << " ";
}
cout << endl;
}
问题是j
没有及时重置,所以在matrix1[i][j] = i + 5;
j 的行已经过了数组的末尾。将设置j
移至零向前移动一行
for (i=0; i < MAX; i++){
j = 0;
matrix1[i][j] = i + 5;
for (j=1; j < MAX; j++){
matrix1[i][j] = matrix1[i][j-1] + 4;
cout << matrix1[i][j] << " ";
}
cout << endl;
}
或按照理查德·克里滕的建议将matrix1[i][j] = i + 5;
更改为matrix1[i][0] = i + 5;
你对 j 的重置应该在循环内。在第二轮 (i=1( 中,j 以 MAX 开始。
for (i=0; i < MAX; i++){
j=0;
相关文章:
- C++ 中的二维整数数组,每行中的元素数量不均匀
- 绘制二维矩阵的行和列
- 为什么我的 2d 数组的第二行从 RAM 中获取随机值?
- 每像素字节数,每行字节数-如何在tess二的tessbaseapi.cpp中使用函数nativeSetImageByte
- C++ 如何从文本文件中扫描二维数组并对行求和?
- 如何将 50 行和 50 列的二维数组编码为一个为元素随机分配星号的函数?
- 在 C++ 的二维数组中添加行和列
- 删除二维矢量中的行
- 串行通信和从属RAM C上变量的变化值
- Ram 空间在创建包含 60000 个元素的二叉搜索树时耗尽
- 我们如何将电路板从 TXT 文件加载到二维数组中(没有行大小和列大小)
- 二维数组:计算行的总和和列的乘积
- 从命令行输入分配二维数组
- 将数组值(行)添加到二维数组C++
- 用C++将每行字数不同的文本文件读入二维数组
- 具有可变大小行的C++二维数组
- 如何将二维字符类型数组逐行保存到 c 中的.txt文件中
- 从行指针访问二维数组的行索引
- C++:二维数组,如何找到列中差异最大的行
- 二维哈希映射:行和列类型为指针的矩阵