【描述】 幻方矩阵中每一行、每一列、每一对角线上的元素之和都是相等的。输入一个5×5的矩阵,判断其是否为幻方矩阵。 【输入】 按行输入矩阵元素,每行元素以空格间隔。 【输出】 若是幻方矩阵,输出"幻方矩阵";否则输出"非幻方矩阵"。 用C语言
时间: 2023-09-17 17:12:15 浏览: 86
“幻方阵”是指一个AN×N矩阵
5星 · 资源好评率100%
以下是一个可能的实现:
```c
#include <stdio.h>
int main() {
int matrix[5][5];
int i, j, sum, diagonal1, diagonal2;
// 读入矩阵
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++) {
scanf("%d", &matrix[i][j]);
}
}
// 计算每行、每列、每个对角线的和
sum = 0;
for (i = 0; i < 5; i++) {
sum += matrix[0][i];
}
for (i = 0; i < 5; i++) {
int row_sum = 0, col_sum = 0;
for (j = 0; j < 5; j++) {
row_sum += matrix[i][j];
col_sum += matrix[j][i];
}
if (row_sum != sum || col_sum != sum) {
printf("非幻方矩阵\n");
return 0;
}
}
diagonal1 = 0;
diagonal2 = 0;
for (i = 0; i < 5; i++) {
diagonal1 += matrix[i][i];
diagonal2 += matrix[i][4-i];
}
if (diagonal1 != sum || diagonal2 != sum) {
printf("非幻方矩阵\n");
return 0;
}
// 如果以上检查都通过,则是幻方矩阵
printf("幻方矩阵\n");
return 0;
}
```
首先我们定义了一个 5x5 的二维数组 `matrix`,用于存储输入的矩阵元素。接着使用双重循环读入矩阵。
然后我们需要检查每行、每列、每个对角线的和是否相等。我们先用一个变量 `sum` 记录第一行的和,然后对于每一行和每一列,都计算它们的和,并与 `sum` 比较。如果有任何一行、一列的和不等于 `sum`,则说明不是幻方矩阵,就可以直接输出 "非幻方矩阵" 并退出程序了。
最后,我们还需要检查两个对角线的和是否等于 `sum`。如果不相等,则同样不是幻方矩阵。
如果以上检查都通过,则说明是幻方矩阵,输出 "幻方矩阵" 即可。
阅读全文