用C语言编写 题目描述 魔法矩阵是指任意大小的矩阵,每行每列以及两个主对角线的数字和都相等的矩阵。输入一个(3*3)的矩阵,判断该矩阵是否为魔法矩阵。如果是则输出“yes",否则输出”no"。 输入 3*3的矩阵 输出 yes 或者 no
时间: 2023-09-16 16:12:45 浏览: 116
C# 实现魔法矩阵 算法
4星 · 用户满意度95%
以下是用C语言编写的程序,可以判断一个3x3矩阵是否为魔法矩阵:
```c
#include <stdio.h>
int main() {
int matrix[3][3];
int row_sum[3] = {0, 0, 0}; // 每行的和
int col_sum[3] = {0, 0, 0}; // 每列的和
int diag_sum1 = 0; // 主对角线1的和
int diag_sum2 = 0; // 主对角线2的和
// 输入矩阵
printf("请输入3x3矩阵的元素:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
scanf("%d", &matrix[i][j]);
row_sum[i] += matrix[i][j];
col_sum[j] += matrix[i][j];
if (i == j) {
diag_sum1 += matrix[i][j];
}
if (i == 2 - j) {
diag_sum2 += matrix[i][j];
}
}
}
// 判断是否为魔法矩阵
int is_magic = 1;
int magic_num = row_sum[0];
for (int i = 1; i < 3; i++) {
if (row_sum[i] != magic_num || col_sum[i] != magic_num) {
is_magic = 0;
break;
}
}
if (diag_sum1 != magic_num || diag_sum2 != magic_num) {
is_magic = 0;
}
// 输出结果
if (is_magic) {
printf("yes\n");
} else {
printf("no\n");
}
return 0;
}
```
程序首先定义一个3x3的矩阵和一些辅助数组,用于计算每行、每列、两个主对角线的数字和。然后程序输入矩阵,并同时计算出这些数字和。最后,程序判断这些数字和是否相等,如果相等则为魔法矩阵,否则不是。
阅读全文