已知A和B为两个n*n阶的对称矩阵,在输入时,对称矩阵只输入下三角形元素,存入一维数组中 求和与积?

2025-04-07 21:43:14
推荐回答(1个)
回答1:

#include
#include
#define Ok 1
#define ERROR -1
#define Maxsize 100 //用户自定义三元组最大长度
#define Maxc 10
typedef int status;
typedef int sun[Maxsize];
status InitTriTupleNode(sun M,int n) {
int i;
for(i=0;iscanf("%d",&M[i]);
return Ok;
}
status TransposeSMatrix(sun a,sun b,sun c,int n)
{int i,j,k,a1,b1;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{c[i*(i-1)/2+j-1]=0;
for(k=1;k<=n;k++)
{if(i>=k)a1=a[i*(i-1)/2+k-1];
else a1=a[k*(k-1)/2+i-1];
if(k>=j)b1=b[k*(k-1)/2+j-1];
else b1=b[j*(j-1)/2+k-1];
c[i*(i-1)/2+j-1]+=a1*b1;}
}
return Ok;
}
status showMatrix(sun c,int n)
{int i,j;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
{if(i>=j)printf("%d\t",c[i*(i-1)/2+j-1]);
if(i }
printf("\n");}
return Ok;
}
void main( )
{int n;
sun d,f,c;
printf("ShuRuJieShu:\n");
scanf("%d",&n);
printf("ShuRu:\n");
InitTriTupleNode(d,n);
printf("ShuRu:\n");
InitTriTupleNode(f,n);
TransposeSMatrix(d,f,c,n);
showMatrix(c,n); /*转置后*/
}
请楼主认真的运行一下 希望能帮到你