c语言求一个 5×5 矩阵(5阶魔方阵)的所有行之和、列之和、两条对角线上的元素之和。
时间: 2023-09-04 19:15:47 浏览: 309
好的,让我来帮您解决这个问题。
首先,我们要定义一个5×5的矩阵,可以使用二维数组来表示:
```
int matrix[5][5] = {
{17, 24, 1, 8, 15},
{23, 5, 7, 14, 16},
{4, 6, 13, 20, 22},
{10, 12, 19, 21, 3},
{11, 18, 25, 2, 9}
};
```
接下来,我们可以使用循环来计算每一行的和,每一列的和,以及两条对角线上的元素之和:
```
int row_sum[5] = {0}; // 存储每一行的和
int col_sum[5] = {0}; // 存储每一列的和
int diag_sum1 = 0; // 存储斜对角线1的和
int diag_sum2 = 0; // 存储斜对角线2的和
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
row_sum[i] += matrix[i][j]; // 计算第i行的和
col_sum[j] += matrix[i][j]; // 计算第j列的和
if (i == j)
{
diag_sum1 += matrix[i][j]; // 计算主对角线的和
}
if (i == 4 - j)
{
diag_sum2 += matrix[i][j]; // 计算副对角线的和
}
}
}
```
最后,我们可以输出每一行的和,每一列的和,以及两条对角线上的元素之和:
```
for (int i = 0; i < 5; i++)
{
printf("第 %d 行的和为 %d\n", i+1, row_sum[i]);
}
for (int j = 0; j < 5; j++)
{
printf("第 %d 列的和为 %d\n", j+1, col_sum[j]);
}
printf("主对角线的和为 %d\n", diag_sum1);
printf("副对角线的和为 %d\n", diag_sum2);
```
希望这个代码能够帮助您解决问题。如果您还有其他问题,欢迎随时问我!
阅读全文