这是我写的代码,用于求两个矩阵的积,但是结果不对(如图),求高手告知错在哪里:
#include
main(){
while (1){ //计算完一次后循环到下次计算
int h, i, j, k, m, n, l, x, a[100][100], b[100][100], c[100][100], d[100][100] = { 0 };
loop:printf("请分别输入两个矩阵的行列数,以空格隔开:\n");
scanf_s("%d%d%d%d", &h, &i, &j, &k);//得到矩阵1、2的行列数为h、i和j、k
if (i != j)
{
printf("这两个矩阵不能相乘。\n");
goto loop;
}
printf("请输入矩阵1的所有元素,以空格隔开:\n");
for (m = 1; m <=h; m++) //输入矩阵1
{
for (n = 1; n <= i; n++)
scanf_s("%d", &a[m-1][n-1]);
}
printf("矩阵1为:\n"); //输出矩阵1,方便查看
for (m = 1; m <=h; m++)
{
for (n = 1; n <= i; n++)
{
printf("%4d", a[m-1][n-1]);
}
printf("\n");
}
printf("请输入矩阵2的所有元素,以空格隔开:\n");
for (n = 1; n <=i; n++) //输入矩阵2
{
for (l = 1; l <= k; l++)
scanf_s("%d", &b[n-1][l-1]);
}
printf("矩阵2为:\n"); //输出矩阵2,方便查看
for (n = 1; n <= i; n++)
{
for (l = 1; l <= k; l++)
{
printf("%4d", b[n-1][l-1]);
}
printf("\n");
}
for (m = 0; m < i; m++) //求矩阵3的值
{
for (l = 0; l < k; l++)
{
for (x = 0; x < n; x++);
d[m][l] = d[m][l] + a[m][x] * b[x][l];
}
c[m][l] = d[m][l];
}
printf("两矩阵的积是:\n"); //输出矩阵3
for (m = 0; m < i; m++)
{
for (l = 0; l < k; l++)
{
printf("%4d", c[m][l]);
}
printf("\n");
}
printf("运算完成。\n");
}
}