C语言高手站出来吧!详细的告诉我这个编程序的思路,以及每步都是什么意思!我是C语言菜鸟啊!

来源:百度知道 编辑:UC知道 时间:2024/06/02 16:55:58
这是求两个矩阵的乘积的程序!看不懂啊!
#include<stdio.h>
main()
{ int a[10][10],b[10][10],c[10][10],m,n,x,y,i,j,k;
printf("请输入 m,n,x,y的值: \n");
scanf("%d,%d,%d,%d",&m,&n,&x,&y);
printf("请输入矩阵a的值: \n");
for(i=0;i<m;i++)
{for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
printf("请输入矩阵b的值: \n");
for(i=0;i<x;i++)
{ for(j=0;j<y;j++)
scanf("%d",&b[i][j]);
}
if(n!=x)
printf("\n error \n");
else
for(i=0;i<m;i++)
for(j=0;j<y;j++)
c[i][j]=0;
for(i=0;i<m;i++)
{for(j=0;j<y;j++)

{ for(k=0;k<x;k++)

c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
for(i=0;i<m;i++)
{for(j=0;j<y;j++)
printf("%d ",c[i][j]);
}
}

/*这个相当于一个包什么的吧,用include包含进来*/
#include<stdio.h>
/*main主函数是程序的入口点*/
main()
{ /*定义数组和变量*/
int a[10][10],b[10][10],c[10][10],m,n,x,y,i,j,k;
/*输入数,用来确定数组a,b的大小*/
printf("请输入 m,n,x,y的值: \n");
scanf("%d,%d,%d,%d",&m,&n,&x,&y);
printf("请输入矩阵a的值: \n");
/*用一个双循环来给二维数组a赋值*/
for(i=0;i<m;i++)
{for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
printf("请输入矩阵b的值: \n");
/*用一个双循环来给二维数组b赋值*/
for(i=0;i<x;i++)
{ for(j=0;j<y;j++)
scanf("%d",&b[i][j]);
}
/*判断第一个数组的竖坐标的个数是否和第二个的横坐标个数相等*/
if(n!=x)
printf("\n error \n");
else
/*给C赋值*/
for(i=0;i<m;i++)
for(j=0;j<y;j++)
c[i][j]=0;
for(i=0;i<m;i++)
{for(j=0;j<y;j++)

{ for(k=0;k<x;k++)
/*这里可以看到每次执行后和积*/
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}