我试图在C语言中乘以二维矩阵。我在下面提供了代码供您参考。当我尝试打印'myC'时,我会不断出现零。我哪里错了?我尝试了很多东西,但仍然无法解决这个问题。有没有人有想法,非常感谢。
#include <stdio.h>
#define mysize 4
int myA[mysize][mysize];
int myC[mysize][mysize];
int i,k;
int j,l;
int total;
int iLimit;
int jLimit;
void printMatrix(int iLimit,int jLimit,int myA[iLimit][jLimit]){
i=0;
while (i<iLimit){
j=0;
while (j<jLimit){
printf ("%7d", myA[i][j]);
j=j+1;
}
printf ("\n");
i=i+1;}
}
int main(void){
iLimit=mysize;
jLimit=mysize;
k=0;
while (k < iLimit){
l=0;
while (l < jLimit) {
scanf ("%d",&myA[k][l]);
l=l+1;
}
k=k+1;
}
printMatrix(mysize,mysize,myA);
myC[i][j]=myA[i][k]*myA[k][j];
printf("\n");
printMatrix(mysize,mysize,myC);
return 0;
}
答案 0 :(得分:2)
必须对所有元素进行矩阵的乘法运算。所以它应该在嵌套的for循环中。你在代码中做了什么
myC[i][j]=myA[i][k]*myA[k][j];
此语句只会乘以由索引i,j,k
表示的矩阵的一个元素(在代码中超出范围)。上面的语句必须保存在3个嵌套for循环中。像这样......
for (i=0;i<m;i++)
{
for(j=0;j<q;j++)
{
myC[i][j]=0;
for(k=0;k<n;k++)
myC[i][j]+= myA[i][k]*myA[k][j];
}
}
答案 1 :(得分:1)
这只乘以两个元素,其中i j和k都超出范围。
myC[i][j]=myA[i][k]*myA[k][j];
它应该是一个三重循环,你可以适当地设置i j和k。