怎样实现编程检查一个n*n的二维数组是否对称

即对所有的i,j,都有a[i][j]等于a[j][i],其中:n的值和数组元素都由键盘输入

#include "stdio.h"
main()
{
int n,i,j,flag=1;
int **a;
printf("Please input n:\n");
scanf("%d",&n);
a=(int **)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
a[i]=(int*)malloc(sizeof(int)*n);
printf("Please input data:\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(a[i][j]!=a[j][i])
{
flag=0;
break;
}
if(flag==1)
printf("It is a symmetric matrix !\n");
else
printf("It is not symmetric matrices !\n");
}

如果对你有所帮助请记得采纳最佳答案,谢谢!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-01
#include<stdio.h>
#define N 100 //N也可以取其他值,最好大一些,至少要保证N大于n。但N不能设置为动态变量,也就是不能在程序运行是输入。
//这是这个程序的缺点,如果真要动态输入,请看第一个;

int a[N][N];
int n,m = 1,i,j;

void setdata(void) //初始化数组函数
{

printf("Input n=");
scanf("%d",&n);
printf("Please input %d numbers.\n",n);
for(i = 0;i < n;i++)
{
for(j = 0;j < n;j++)
{
scanf("%d", &a[i][j]);
}
}
}
int check(void) //检测函数
{
for(i = 0;i < n;i++)
{
for(j = 0;j < n;j++)
{
if(a[i][j] != a[j][i])
{
m = 0;
break;
}
}
}
return m;
}

void main() //主函数
{
setdata();
check();
if(m) printf("The array is symmetrical.\n");
else printf("The array is not symmetrical.\n");
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网