描述:输入两个个矩阵的行 列 m n;并输入其数值
如:输入
3
2
1 2
3 4
5 6
2
3
1 2 3
4 5 6
输出:
9 12 15
19 26 33
29 40 51
我写的是这样的,但错了,哪位大神帮我看看?
#include<stdio.h>
void main()
{
double a[100][100],b[100][100],h[100][100];
int m,n,p,q,i,j,k,l,c,d;
scanf("%d %d",&m,&n);//输入行数和列数
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%lf",&a[i][j]);//输入第一个矩阵
scanf("%d %d",&p,&q);//输入行数和列数
for(l=0;l<p;l++)
for(k=0;k<q;k++)
scanf("%lf",&a[l][k]);//输入第二个矩阵
for(c=0;c<m;c++)//行数小于等于第一个矩阵的行数
for(d=0;d<q;d++)//列数小于等于第二个矩阵的列数
{
for(i=0,k=0;i<m,k<q;i++,k++)//第一个矩阵行数和第二个矩阵列数
for(j=0,l=0;j<n,l<p;j++,l++)
h[c][d]+=a[i][j]*b[l][k];//计算
}
for(c=0;c<m;c++)
{
for(d=0;d<q;d++)
printf("%.0f",h[c][d]);//输出
printf("\n");
}
}
水平不行,算法比较难看懂噢,如果不想改的话请帮我写一个,我琢磨下,嘿嘿......要是C编写的,其他没学
?
两处错,输入第二个矩阵要用b
然后回去好好翻翻矩阵运算的公式,照着公式算。
然后按楼上说的,每个都括起来,没坏处