#include<stdio.h>
#include<stdlib.h>
void main()
{
int off(int i,int j);//偏移量函数off的函数声明
int i,j,s,n;int *pa,*pb,*pc;
printf("请输入矩阵的阶数n=");
scanf("%d",&n);
pa=(int *)malloc(sizeof(int)*n*(n+1)/2);
pb=(int *)malloc(sizeof(int)*n*(n+1)/2);
pc=(int *)malloc(sizeof(int)*n*(n+1)/2);
printf("请输入矩阵A=\n");
for(i=0;i<n;i++)
for(j=0;j<=i;j++)
scanf("%d",&pa[off(i,j)]);
printf("请输入矩阵B=\n");
for(i=0;i<n;i++)
for(j=0;j<=i;j++)
scanf("%d",&pb[off(i,j)]);
for(i=0;i<n;i++)
for(j=0;j<=i;j++)
{
pc[off(i,j)]=0;
for(s=j;s<=i;s++)
pc[off(i,j)]+=pa[off(i,s)]*pb[off(s,j)];
}
printf("A*B=\n");
for(i=0;i<n;i++)
for(j=0;j<=i;j++)
{
printf("%4d",pc[off(i,j)]);
if(i==j)printf("\n");
}
}
int off(int i,int j)
{
return i*(i+1)/2+j;//按行存储时,偏移量公式(下标从(0,0)开始)
}
基于压缩存储的半三角矩阵乘法运算的实现
最新推荐文章于 2021-05-25 05:24:34 发布