利用循环给C++中的数组赋值
在C++编程中,数组是一种常用的数据结构。利用循环给数组赋值是常用的方法。但是用的最多的是利用两层for循环给二位数组赋值,其实通过一层for循环也可以实现。
1、使用两层for循环给二位数组赋值
先来看看传统的利用两层for
循环给三行四列的二维数组赋值为 1-12
的方法:
#include <iostream>
int main() {
int a[3][4];
// 利用两层for循环给二维数组赋值
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 4; col++) {
a[row][col] = row * 4 + col + 1;
}
}
// 输出数组内容
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 4; col++) {
std::cout << a[row][col] << " ";
}
std::cout << std::endl;
}
return 0;
}
代码解释
- 定义数组:
int a[3][4];
定义了一个3行4列的二维数组。 - 利用两层
for
循环赋值:- 外层循环遍历数组的行:
for (int row = 0; row < 3; row++)
- 内层循环遍历数组的列:
for (int col = 0; col < 4; col++)
a[row][col] = row * 4 + col + 1;
计算每个元素的值并赋值。
- 外层循环遍历数组的行:
- 输出数组内容:使用双重循环输出数组的内容,以验证赋值是否正确。
这种方法直观且易于理解,但在某些情况下,可以通过更简洁的方式来实现相同的功能。
2. 利用一个循环赋值
下面是利用一个循环给二维数组赋值的示例代码:
#include <iostream>
int main() {
int a[3][4];
int i;
// 利用一个循环给二维数组赋值
for (i = 0; i < 12; i++) {
a[i / 4][i % 4] = i + 1;
}
// 输出数组内容
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 4; col++) {
std::cout << a[row][col] << " ";
}
std::cout << std::endl;
}
return 0;
}
代码解释
让我们逐步解析这段代码:
-
定义数组:
int a[3][4];
定义了一个3行4列的二维数组。 -
定义循环变量:
int i;
定义了一个循环变量i
。 -
利用循环赋值:
for (i = 0; i < 12; i++) { a[i / 4][i % 4] = i + 1; }
- 循环从
i = 0
开始,到i < 12
结束,即循环12次。 a[i / 4][i % 4]
利用下标运算符将一维数组的索引i
转换为二维数组的行列索引。i / 4
计算行索引。i % 4
计算列索引。
i + 1
将i
的值加1并赋值给数组元素。
- 循环从
-
输出数组内容:使用双重循环输出数组的内容,以验证赋值是否正确。
4. 优点
相比传统的双重循环,这种方法的优点在于:
- 简化了代码,使其更为紧凑。
- 减少了循环的嵌套,提升了可读性。
- 利用下标运算符,使代码更具逻辑性和数学美感。
5、注意
需要注意的是二维数组在函数内如果只定义不做初始化(赋值)操作,则二维数组内的元素会随机赋值,而二位数组在函数外部声明,会自动赋值为0
则当在函数内部定义了一个数组时,一定要进行初始化操作。
5. 结论
利用一个循环给C++中的二维数组赋值是一种高效且简洁的方法。在实际编程中,这种技巧可以帮助我们编写出更为优雅和高效的代码。希望通过这篇文章,大家能对这种方法有更深入的理解,并在实际编程中灵活应用。
如果你有任何问题或想法,欢迎在评论区留言。