对称矩阵(Symmetric Matrices)是指以主对角线为对称轴,各元素对应相等的矩阵。
在一个n阶方阵 (或是n阶行列式)中,从左上角到右下角这一斜线方向上的n 个元素所在的对角线,叫做n 阶方阵 (或行列式)的主对角线。
7-3 sdut-C语言实验- 对称矩阵的判定
分数 13
全屏浏览题目
切换布局
作者 马新娟
单位 山东理工大学
输入矩阵的行数,再依次输入矩阵的每行元素,判断该矩阵是否为对称矩阵,若矩阵对称输出“Yes.",不对称输出"No."。
输入格式:
输入有多组,每一组第一行输入一个正整数N(N<=20),表示矩阵的行数(若N=0,表示输入结束)。
下面依次输入N行数据。输出格式:
若矩阵对称输出“Yes.",不对称输出”No.”。
输入样例:
3 6 3 12 3 18 8 12 8 7 3 6 9 12 3 5 8 12 6 3 0
输出样例:
Yes. No.
#include<stdio.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF&&n!=0)
{
int a[n][n];
int f=0;//若设为全局变量记得次次归零
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
for(int i=1;i<n;i++){
for(int j=1;j<n;j++){
if(j==i){continue;}//根据对称要求,需要跳过对主对角线上数的判断
else{
if(a[i][j]!=a[j][i]){f=1;break;}
}
}
}
if(f==1){printf("No.\n");}
else {printf("Yes.\n");}
}
return 0;
}
判断部分可以省去 if 语句,即:
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(a[i][j]!=a[j][i]){f=1;break;}
}
}
总结:希望以后题目给的信息多一点,这样就不会一直纠结那第一个矩阵的6、7了。也是一个提醒:及时补充知识,上网查一下一劳永逸。