问题遇到的现象和发生背景
C语言对称矩阵压缩存储到一维数组后进行乘法运算
用代码块功能插入代码,请勿粘贴截图
#include<stdio.h>
//int Output(Arry *T,int N)
//{
//
//}
int main()
{
int N;
int t1[10];
int t2[10];
int i,j=0;
int k=1;
printf("请输入压缩矩阵的阶:\n");
scanf("%d",&N);
printf("请输入%d个压缩数值:\n",N*(N+1)/2);
while(k<=N*(N+1)/2)//控制输入的数值的个数
{
scanf("%d",&t1[i*(i+1)/2+j]);
printf("数值=%d,在一位数组中的次序是%d\n",t1[i*(i+1)/2+j],i*(i+1)/2+j);
i++;
k++;
if(i==N)
{
i=j+1;
j++;
}
}
printf("第一个矩阵如下:\n");
//输出矩阵:
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(i>=j)
printf("%3d",t1[i*(i+1)/2+j]);
else
printf("%3d",t1[j*(j+1)/2+i]);
}
printf("\n");
}
i=0;j=0;k=1;
printf("请输入%d个压缩数值:\n",N*(N+1)/2);
while(k<=N*(N+1)/2)//控制输入的数值的个数
{
scanf("%d",&t2[i*(i+1)/2+j]);
printf("数值=%d,在一位数组中的次序是%d\n",t2[i*(i+1)/2+j],i*(i+1)/2+j);
i++;
k++;
if(i==N)
{
i=j+1;
j++;
}
}
printf("第二个矩阵如下:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(i>=j)
printf("%3d",t2[i*(i+1)/2+j]);
else
printf("%3d",t2[j*(j+1)/2+i]);
}
printf("\n");
}
i=0;j=0;
//矩阵的乘法运算:
int num=0;
k=0;int count=0;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
for(k=0;k<N;k++)
{
num=num+t1[k*(k+1)/2+i]*t2[k*(k+1)/2+j];
}
printf("%d ",num);
num=0;
}
}
}
运行结果及报错内容
我的这个乘法运算在输出矩阵的前两个数据还是没错的,第三个数据就开始出错了,也找不到问题在哪
我想要达到的结果
输出矩阵1和矩阵2相乘后的矩阵。