C实现矩阵乘法
答案:5 悬赏:50 手机版
解决时间 2021-12-02 09:57
- 提问者网友:蔚蓝的太阳
- 2021-12-02 00:51
C实现矩阵乘法
最佳答案
- 五星知识达人网友:行雁书
- 2021-12-02 02:11
#include
int main()
{
int a[2][2]={{ 1, 1},{ 2, 0}};
int b[2][3]={{ 0, 2, 3},{ 1, 1, 2}};
// int i, j, k, s[2][3];
//问题出现在这里,s[2][3]没有赋初值,看得出来吗。
//而你在下面的循坏里面,就直接用了 ==>s[i][j]=s[i][j]+a[i][k]*b[k][j];
//将代码改成下面的,就得到你要的结果了
//其他地方没有出现什么错误。修改过后,就是你要的答案了
int i, j, k, s[2][3]={0};
for(i=0; i<2; i++)
{
for( j=0; j<3; j++)
{
for( k=0; k<2; k++)
{
s[i][j]=s[i][j]+a[i][k]*b[k][j];
}
}
}
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
printf("%d",s[i][j]);
if(j==2)
printf("
");
}
return 0;
}
不知道,这是你想要的不?
int main()
{
int a[2][2]={{ 1, 1},{ 2, 0}};
int b[2][3]={{ 0, 2, 3},{ 1, 1, 2}};
// int i, j, k, s[2][3];
//问题出现在这里,s[2][3]没有赋初值,看得出来吗。
//而你在下面的循坏里面,就直接用了 ==>s[i][j]=s[i][j]+a[i][k]*b[k][j];
//将代码改成下面的,就得到你要的结果了
//其他地方没有出现什么错误。修改过后,就是你要的答案了
int i, j, k, s[2][3]={0};
for(i=0; i<2; i++)
{
for( j=0; j<3; j++)
{
for( k=0; k<2; k++)
{
s[i][j]=s[i][j]+a[i][k]*b[k][j];
}
}
}
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
printf("%d",s[i][j]);
if(j==2)
printf("
");
}
return 0;
}
不知道,这是你想要的不?
全部回答
- 1楼网友:罪歌
- 2021-12-02 04:58
做乘法前先清0,数组s[2][3]的每个元素初始化为0,或赋值为0,不然其值不确定,后面做加法时结果不正确!
- 2楼网友:煞尾
- 2021-12-02 04:45
for(i=0; i<2; i++)
for( j=0; j<3; j++)
s[i][j]=0;
初始化s[2][3]为0。
for( j=0; j<3; j++)
s[i][j]=0;
初始化s[2][3]为0。
- 3楼网友:零点过十分
- 2021-12-02 03:52
忘了给s[i][j]赋初始值0.
for(i=0;i<2;i++)
for(j=0;j<3;j++)
s[i][j]=0;
或
#include
再在ints[2][3]下面加一句
memset(s,0,sizeof(s));
for(i=0;i<2;i++)
for(j=0;j<3;j++)
s[i][j]=0;
或
#include
再在ints[2][3]下面加一句
memset(s,0,sizeof(s));
- 4楼网友:逐風
- 2021-12-02 03:03
你想要的是这样:
#includeint main()
{
int a[2][2]={{ 1, 1},{ 2, 0}};
int b[2][3]={{ 0, 2, 3},{ 1, 1, 2}};
int i, j, k, s[2][3];
for(i=0; i<2; i++)
{
for( j=0; j<3; j++)
{
s[i][j]=0;//这里初始化就好了!
for( k=0; k<2; k++)
{
s[i][j]=s[i][j]+a[i][k]*b[k][j];
}
}
}
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
printf("%d ",s[i][j]);
if(j==2)
printf(" ");
}
return 0;
}
就是漏了初始化……输出的时候敲几个空格,别让数字连在一起。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯