📅  最后修改于: 2023-12-03 14:51:14.516000             🧑  作者: Mango
在C/C++中打印2D矩阵经常出现的情况是使用循环和嵌套循环遍历整个矩阵,然后使用花括号打印每个元素。但有时我们想要以不同的行打印矩阵,并且不使用花括号。这里有几种方法可以满足我们的需求。
使用换行符来打印每行矩阵元素是一种简单的方法,它避免了使用花括号并将每个元素打印在自己的行上。下面是一个示例:
#include <iostream>
const int ROWS = 3;
const int COLS = 3;
int main() {
int matrix[ROWS][COLS] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
std::cout << matrix[i][j] << " ";
}
std::cout << "\n";
}
return 0;
}
输出结果为:
1 2 3
4 5 6
7 8 9
使用制表符打印每个元素,可以在每行中自动对齐矩阵列。下面是一个示例:
#include <iostream>
const int ROWS = 3;
const int COLS = 3;
int main() {
int matrix[ROWS][COLS] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for (int i = 0; i < ROWS; ++i) {
for (int j = 0; j < COLS; ++j) {
std::cout << matrix[i][j] << "\t";
}
std::cout << "\n";
}
return 0;
}
输出结果为:
1 2 3
4 5 6
7 8 9
使用std::stringstream
类来构建我们要打印的字符串,我们可以使用std::setw()
函数来定义每个元素的宽度,从而对齐每个元素。下面是一个示例:
#include <iostream>
#include <iomanip>
#include <sstream>
const int ROWS = 3;
const int COLS = 3;
int main() {
int matrix[ROWS][COLS] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for (int i = 0; i < ROWS; ++i) {
std::stringstream ss;
for (int j = 0; j < COLS; ++j) {
ss << std::setw(4) << matrix[i][j];
}
std::cout << ss.str() << "\n";
}
return 0;
}
输出结果为:
1 2 3
4 5 6
7 8 9
总结
以上就是在C/C++中以不同的行打印2D矩阵并且没有花括号的方法。我们可以根据实际需求来选择不同的方法。