如果方阵b(行列数相等的二维数组)各元素沿主对角线对称,则称其为对称矩阵,以下为5(5对称矩阵的例子:
编写函数Symmetric,判断一个N(N方阵b是否为对称矩阵(#define N 5)。
要求:
(1) 函数以指针形式接收二维数组名
(2) 数组元素的值自定
(3) 若为对称矩阵则返回1,否则返回0
(4) 测试数据至少包含两组,一为对称,另一个非对称
供参考:
#include <stdio.h>
#define N 5
int Symmetric(int(*a)[N], int rank)//判断一个N*N矩阵,是否是对称矩阵,是返回1,否返回0
{
int i, j, flag;
for (i = 0, flag = 1; i < rank; i++)
{
for (j = 0; j < i; j++)
{
if (a[i][j] != a[j][i])
{
flag = 0;
break;
}
}
if (j < i) break;
}
return flag;
}
void printmatrix(int a[][N], int Row, int Col)
{
int i, j;
for (i = 0; i < Row; i++) {
for (j = 0; j < Col; j++)
{
printf(j == 0 ? "%d" : " %d", a[i][j]);
}
if (i < Row - 1)
printf("\n");
}
}
int main()
{
int a[N][N] = { 0 }, i, j, n = 3;
scanf("%d", &n); //输入阶数
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
scanf("%d", &a[i][j]); //输入矩阵元素
if (Symmetric(a, n))//判断矩阵是否对称
printf("YES\n");
else
printf("NO\n");
printmatrix(a, n, n); //输出矩阵
return 0;
}