用c语言写以下程序:在魔方阵中,所有的行、列和对角线都拥有相同的和。写一个程序读入一个二维整型数组并判断它是否为魔方矩阵。 **输入格式要求:"%d" 提示信息:"请输入矩阵的阶数(<=10):" "请输入矩阵:\n" "a[%d][%d]:" **输出格式要求:"该矩阵不是魔方阵!\n" "该矩阵为魔方矩阵!"
时间: 2023-07-07 18:15:14 浏览: 108
C语言程序设计-编写程序,产生16个随机数到4行4列的数组中,求其主对角线元素之和
5星 · 资源好评率100%
好的,下面是代码实现:
```
#include<stdio.h>
int main()
{
int n, i, j, sum_row, sum_col, sum_diag1, sum_diag2;
int matrix[10][10];
printf("请输入矩阵的阶数(<=10):");
scanf("%d", &n);
// 输入矩阵
printf("请输入矩阵:\n");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf("a[%d][%d]:", i, j);
scanf("%d", &matrix[i][j]);
}
}
// 计算每行、每列、对角线的和
sum_diag1 = 0;
sum_diag2 = 0;
for(i=0; i<n; i++)
{
sum_row = 0;
sum_col = 0;
for(j=0; j<n; j++)
{
sum_row += matrix[i][j];
sum_col += matrix[j][i];
}
if(i == 0)
{
sum_diag1 = matrix[i][i];
sum_diag2 = matrix[i][n-1];
}
else
{
sum_diag1 += matrix[i][i];
sum_diag2 += matrix[i][n-1-i];
}
if(sum_row != sum_col)
{
printf("该矩阵不是魔方阵!\n");
return 0;
}
}
if(sum_diag1 != sum_diag2 || sum_diag1 != sum_row)
{
printf("该矩阵不是魔方阵!\n");
}
else
{
printf("该矩阵为魔方矩阵!\n");
}
return 0;
}
```
程序先输入矩阵的阶数n,然后输入n行n列的矩阵。程序使用两个循环遍历矩阵,计算每行、每列、对角线的和,并判断它们是否相等。如果有任何一行、一列或一条对角线的和与其他的不相等,就说明该矩阵不是魔方阵,输出相应的提示信息。否则,就输出该矩阵为魔方矩阵的提示信息。
阅读全文