求一个N×N矩阵主、次对角线上所有元素之和。矩阵输入、矩阵输出、矩阵对角线求和分别用三个子函数实现。(N的值由用户从键盘输入) c++
时间: 2023-12-10 20:41:06 浏览: 126
下面是实现该功能的 C++ 代码:
```cpp
#include <iostream>
using namespace std;
void inputMatrix(int **matrix, int n);
void outputMatrix(int **matrix, int n);
int sumMainDiagonal(int **matrix, int n);
int sumSecondaryDiagonal(int **matrix, int n);
int main() {
int n;
cout << "请输入矩阵的大小:";
cin >> n;
// 动态分配二维数组
int **matrix = new int*[n];
for (int i = 0; i < n; i++) {
matrix[i] = new int[n];
}
// 输入矩阵
inputMatrix(matrix, n);
// 输出矩阵
cout << "矩阵为:" << endl;
outputMatrix(matrix, n);
// 求主对角线元素之和
int sum1 = sumMainDiagonal(matrix, n);
cout << "主对角线元素之和为:" << sum1 << endl;
// 求次对角线元素之和
int sum2 = sumSecondaryDiagonal(matrix, n);
cout << "次对角线元素之和为:" << sum2 << endl;
// 释放内存
for (int i = 0; i < n; i++) {
delete[] matrix[i];
}
delete[] matrix;
return 0;
}
// 输入矩阵
void inputMatrix(int **matrix, int n) {
cout << "请输入" << n << "×" << n << "的矩阵:" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> matrix[i][j];
}
}
}
// 输出矩阵
void outputMatrix(int **matrix, int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << matrix[i][j] << "\t";
}
cout << endl;
}
}
// 求主对角线元素之和
int sumMainDiagonal(int **matrix, int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += matrix[i][i];
}
return sum;
}
// 求次对角线元素之和
int sumSecondaryDiagonal(int **matrix, int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += matrix[i][n-i-1];
}
return sum;
}
```
代码中 `inputMatrix` 函数用于从键盘输入矩阵,`outputMatrix` 函数用于输出矩阵,`sumMainDiagonal` 函数用于求主对角线元素之和,`sumSecondaryDiagonal` 函数用于求次对角线元素之和。
阅读全文