编写一个程序,要求用户(按任意次序)输入1到16的所有整数,然后用4x4矩阵的形式将它们显示出来,再计算出每行、每列和每条对角线上的和:使用C++语言#include<stdio.h>
时间: 2024-10-15 08:21:36 浏览: 26
在C++中,你可以按照以下步骤编写程序来满足这个需求:
```cpp
#include <iostream>
using namespace std;
// 定义一个4x4的矩阵结构
struct Matrix {
int data[4][4];
};
// 函数来获取用户输入并填充矩阵
void inputMatrix(Matrix& matrix) {
for (int i = 0; i < 4; ++i) {
cout << "请输入第" << (i+1) << "行的4个元素:" << endl;
for (int j = 0; j < 4; ++j) {
cin >> matrix.data[i][j];
}
}
}
// 函数来打印矩阵
void printMatrix(const Matrix& matrix) {
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 4; ++j) {
cout << matrix.data[i][j] << " ";
}
cout << endl;
}
}
// 计算每行、每列、主对角线和副对角线的和
void calculateSums(const Matrix& matrix) {
int rowSums[4] = {0};
int colSums[4] = {0};
// 每行和
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 4; ++j) {
rowSums[i] += matrix.data[i][j];
}
}
// 每列和
for (int j = 0; j < 4; ++j) {
for (int i = 0; i < 4; ++i) {
colSums[j] += matrix.data[i][j];
}
}
// 主对角线和
int diagSum1 = 0;
for (int i = 0; i < 4; ++i) {
diagSum1 += matrix.data[i][i];
}
// 副对角线和
int diagSum2 = 0;
for (int i = 0; i < 4; ++i) {
diagSum2 += matrix.data[i][3-i];
}
cout << "每行和: " << endl;
for (int i = 0; i < 4; ++i) {
cout << "Row " << (i+1) << ": " << rowSums[i] << endl;
}
cout << "每列和: " << endl;
for (int i = 0; i < 4; ++i) {
cout << "Col " << (i+1) << ": " << colSums[i] << endl;
}
cout << "主对角线和: " << diagSum1 << endl;
cout << "副对角线和: " << diagSum2 << endl;
}
int main() {
Matrix matrix;
inputMatrix(matrix);
printMatrix(matrix);
calculateSums(matrix);
return 0;
}
```
在这个程序中,我们首先定义了一个`Matrix`结构体,包含一个4x4的数组用于存储用户的输入。接着有三个函数分别负责获取用户输入、打印矩阵以及计算总和。在`main()`函数中,我们将这些功能串联起来,先获取用户输入,然后打印矩阵,最后计算和并输出结果。
阅读全文