c语言两矩阵相乘为什么实现不了

#include
int main(){
int a[3][3]={1,2,3,2,4,5,4,5,6};
int b[3][3]={1,2,3,4,5,6,3,2,1};
int c[3][3];
for(int i=0;i<3;i++)
for(int j=0;j<3;j++){
for(int k=0;k<3;k++)
{
c[i][j]+=a[i][k]*b[k][j];
}}
for(int i=0;i<3;i++){
printf("\n");
for(int j=0;j<3;j++)
{
printf("%10d",c[i][j]);
}}
printf("\n");
return 0;
}

括号没问题,只是定义了int c[3][3],没有初始化,故c数组中元素开始为垃圾值,后面又用了c[i][j] += a[i][k] * b[k][j],将这些垃圾值代入了计算,
故结果不正确,只要将int c[3][3];改为int c[3][3]={0};希望对你有帮助.

第一个for没有括号

除了括号之外,你这个二维数组需要给定一个初始值,在main前定义的数组默认为0,在里面定义的就需要自己赋值了。