|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
初始化一个整数矩阵a[2][3]={{1,0,1},{0,1,1}},输入b[3][2],输出两个矩阵乘运算的结果。
输出格式:"%3d"
1.jpg
【样例输入】
1 0
1 1
0 1
【样例输出】
1 1
1 2
#include <stdio.h>
int main()
{
int a[2][3]={{1,0,1},{0,1,1}},b[3][2],c[2][2];
int i,j,k,temp=0;
for(i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
for(j=0;j<2;j++)
scanf("%d",&b[i][j]);
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
for(k=0; k<3; k++)
{
temp=a[i][0]*b[0][j]+a[i][1]*b[1][j]+a[i][2]*b[2][j];
c[i][j]=temp;
}
}
}
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
printf("%3d ",c[i][j]);
}
printf("\n");
}
return 0;
}
为什么不对啊
[b]问题在于矩阵乘法的计算方式不正确,应该是:
c[ i][j] = a[i ][0]*b[0][j] + a[ i][1]*b[1][j] + a[i ][2]*b[2][j];
而当前代码中没有累加`temp`变量的不同计算过程,`temp`变量每次被更新后又立刻被赋值给`c[ i][j]`。
你需要把上面的更正后的计算方式替换一下原来的计算方式,修改为如下代码:
- for (i = 0; i < 2; i++) {
- for (j = 0; j < 2; j++) {
- temp = 0;
- for (k = 0; k < 3; k++) {
- temp += a[i[b][/b]][k] * b[k][j];
- }
- c[i][j] = temp;
- printf("%3d ", c[[b][/b]i][j]);
- }
- printf("\n");
- }
复制代码
这样输出就会正确了。
有用请设置最佳答案[/b]
|
|