如何创建一个4x4的整数二维数组并初始化?然后分别计算每行的最大值,每列的最小值,以及主对角线和副对角线的累加和是多少?
时间: 2024-12-19 19:25:43 浏览: 3
将如下一个4X4矩阵存入数组中,输出数组,求出其中的最大数和最小数:.c
创建一个4x4的整数二维数组并初始化非常直接,你可以使用C++标准库中的`std::vector`或手动分配内存来实现。这里我们用`std::vector`作为例子:
```cpp
#include <iostream>
#include <vector>
int main() {
int rows = 4;
int cols = 4;
// 创建一个4x4的整数二维数组
std::vector<std::vector<int>> matrix(rows, std::vector<int>(cols));
// 初始化矩阵
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
matrix[i][j] = i + j; // 这里只是一个简单的示例,你可以替换为任何初始值
}
}
// 计算每行的最大值、每列的最小值、主对角线和副对角线的累加和
// 每行最大值
std::vector<int> row_maxes(rows);
for (int i = 0; i < rows; ++i) {
row_maxes[i] = *std::max_element(matrix[i].begin(), matrix[i].end());
}
// 每列最小值
std::vector<int> col_mins(cols);
for (int j = 0; j < cols; ++j) {
col_mins[j] = *std::min_element(std::begin(matrix), std::begin(matrix) + rows * j + 1);
}
// 主对角线累加和
int diag_sum = 0;
for (int i = 0; i < rows && i < cols; ++i) {
diag_sum += matrix[i][i];
}
// 副对角线累加和(如果矩阵是对称的)
int anti_diag_sum = 0;
if (rows == cols) {
for (int i = 0; i < rows; ++i) {
anti_diag_sum += matrix[i][rows - 1 - i];
}
} else {
anti_diag_sum = 0; // 如果不是正方形矩阵,副对角线不存在
}
// 打印结果
std::cout << "Row maxima: ";
for (const auto& max : row_maxes) {
std::cout << max << ' ';
}
std::cout << "\nColumn minima: ";
for (const auto& min : col_mins) {
std::cout << min << ' ';
}
std::cout << "\nDiagonal sum: " << diag_sum << '\n';
if (anti_diag_sum != 0) {
std::cout << "Anti-diagonal sum: " << anti_diag_sum << '\n';
}
return 0;
}
```
阅读全文