c语言题目 编写一个函数 判定n的维数组a是否为对称矩阵6
发布网友
发布时间:2023-09-20 00:38
我来回答
共3个回答
热心网友
时间:2024-11-16 19:50
#include <stdio.h>
#define n 3 /* 此处假设为3阶矩阵*/
int is_ichenjuzhen (int N,int *p[n][n]) /*定义函数*/
{
int i,j;
int flag=1; /*定义标志位*/
for(i=0;i<N;i++)
for(j=0;j<i;j++)
if(p[i][j]!=p[j][i])
flag=0;
return flag;
}
main()
{
int x,y;
int juzhen [n][n];
printf("请输入数组:\n");
for(x=0;x<n;x++)
for(y=0;y<n;y++)
scanf("%d",&juzhen[x][y]);
printf("您所输入的数组为:\n");
for(x=0;x<n;x++)
for(y=0;y<n;y++)
{
printf("%8d",juzhen[x][y]);
if(y==n-1)
printf("\n");
}
if(is_ichenjuzhen (n,juzhen)) /*调用函数*/
printf("您所输入的矩阵是对称矩阵!\n");
else printf("您所输入的矩阵不是对称矩阵!\n");
}
/*注:由于本及程序中有中文,所以建议在VC或Win TC下运行。*/
/*本程序经本人调试成功后提交答案,望楼主给分。*/
我看看,有两个警告,但不影响结果,我再试试消除警告。
热心网友
时间:2024-11-16 19:50
#include<stdlib.h>
main()
{ int a[3][3]={1,2,3,2,1,2,3,2,1,},k;
k=f(a,3);
if(k==1) printf("对称");
else printf("非对称“);
system("pause");
}
int f(int pa[],int n)
{ int *a[n],i,j,k;
for(i=0;i<n;i++)
a[i]=(int*)malloc(sizeof(int)*n);
for(k=0,i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=pa[k++];
for(k=1,i=0;i<n;i++)
{ for(j=0;j<n;j++)
if(a[i][j]!=a[j][i])
{ k=0; break; }
if(k==0) break;
}
return k;
}
或者,可以更简单一点,在子函数内直接用一维数组判断:
#include<stdlib.h>
main()
{ int a[3][3]={1,2,3,2,1,2,3,2,4,},k;
k=f(a,3);
printf("%d",k);
system("pause");
}
int f(int pa[],int n)
{ int i,j,k;
for(k=1,i=0;i<n;i++)
{ for(j=0;j<n;j++)
if( pa[i*n+j]!= pa[j*n+i] )
{ k=0; break; }
if(k==0) break;
}
return k;
}
热心网友
时间:2024-11-16 19:51
#include <iostream.h>
#define n 100
void main()
{int i,j,k;
double a[n,n];
for(i=0;i<n;i++)
{for(j=i;j<n;j++)
if(a[i,j]!=a[j,i])
k=k+1;
}
if(k!=0)
cout<<"不是对称矩阵";}