马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
通过中间加入检查,过程都正确,只是最后输出时,参照第一个矩阵敲入的后面两个,结果第一个不能正确输出了。求助第一个为什么不能正确输出结果。#include<stdio.h>
int main()
{
int m,n,p,q;
int i,j,k,x,row;
printf("请输入第一个矩阵的尺寸(M*P);");
scanf("%d",&m);
getchar();
scanf("%d",&p);
printf("请输入第二个矩阵的尺寸(P*N);");
scanf("%d",&q);
getchar();
scanf("%d",&n);
if(p!=q)printf("矩阵尺寸不能计算");
int array1[m][p];
printf("请输入第一个矩阵的值:\n");
for(i=0;i<m;i++)
{
for(j=0;j<p;j++)
{
scanf("%d",&array1[i][j]);
}
getchar();
}
//临时检查用输出
//输出第一个矩阵值
//printf("第一个矩阵值\n");
//for(i=0;i<m;i++)
//{
// for(j=0;j<p;j++)
// {
// printf("%d ", array1[i][j]);
// }
// printf("\n");
//}
printf("请输入第二个矩阵的值:\n");
int array2[p][n];
for(i=0;i<p;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&array2[i][j]);
}
getchar();
}
//临时检查输入用,输出第二个矩阵值
//printf("第二个矩阵值\n");
//for(i=0;i<p;i++)
//{
// for(j=0;j<n;j++)
// {
// printf("%d ",array2[i][j]);
// }
// printf("\n");
//}
//计算矩阵值
int array3[m][n];
for(i=0;i<m;i++) //矩阵赋初值为0
{
for(j=0;j<n;j++)
{
array3[i][j]=0;
}
}
for(i=0;i<m;i++) //矩阵相乘计算
{
for(j=0;j<n;j++)
{
for(k=0;k<p;k++)
{
array3[i][j]+=array1[i][k]*array2[k][j];
}
}
}
//临时检查,输出运算结果矩阵值
//printf("第三个矩阵计算结果\n");
//for(i=0;i<m;i++)
//{
// for(j=0;j<n;j++)
// {
// printf("%d ",array3[i][j]);
// }
// printf("\n");
//}
//输出
row=m>p?m:p;
for(i=0;i<row;i++)
{
//打印第一个矩阵行
printf("| ");
for(j=0;k<p;j++)
{
if(i<m)
{
printf("\b%d ",array1[i][j]);
printf("|");
}
else
{
printf("\b\b\b ");
}
}
//打印*号
if(i==row/2)
{
printf(" * ");
}
else
{
printf(" " );
}
//打印第二个矩阵行
printf("| ");
for(j=0;j<n;j++)
{
if(i<p)
{
printf("\b%d ",array2[i][j]);
printf("|");
}
else
{
printf("\b\b\b ");
}
}
//打印=号
if(i==row/2)
{
printf(" = ");
}
else
{
printf(" ");
}
//打印第三个矩阵行
printf("| ");
for(j=0;j<n;j++)
{
if(i<m)
{
printf("\b%d ",array3[i][j]);
printf("|");
}
else
{
printf("\b\b\b ");
}
}
printf("\n");
}
return 0;
}
|