永发信息网

C++纠错 求两矩阵相乘的程序

答案:3  悬赏:20  手机版
解决时间 2021-07-20 17:47
  • 提问者网友:锁深秋
  • 2021-07-20 09:50

#include<iostream>
using namespace std;
int i,j,m,n;
int main()
{
int mul(int a[3][4],int b[4][3],int c[3][3]);
int a[3][4],b[4][3],c[3][3];
cout<<"请输入3*4矩阵元素"<<endl;
for(i=0;i<=2;i++)
{for(j=0;j<=3;j++)
cin>>a[i][j];}
cout<<"请输入4*3矩阵元素"<<endl;
for(m=0;m<=3;m++)
{for(n=0;n<=2;n++)
cin>>b[m][n];}
mul(a,b,c);
cout<<"两矩阵相乘得"<<endl;
int x,y;
for(x=0;x<3;x++)
for(y=0;j<3;y++)
cout<<c[x][y]<<" ";
cout<<endl;
return 0;
}

int mul(int a[3][4],int b[4][3],int c[3][3])
{
int l=0;
for(i=0;i<=2;i++)
for(j=0;j<=2;j++)
for(m=0;m<=2;m++)
l=a[i][m]*b[m][j]+l;
c[i][j]=l;
return(c[3][3]);
}

系统没有报错,但为什么输出不了相乘后的矩阵??

望高手指点

最佳答案
  • 五星知识达人网友:持酒劝斜阳
  • 2021-07-20 11:13
#include<iostream>
using namespace std;
int i,j,m,n;

int main()
{
// 返回值完全没用- -
void mul(int a[3][4],int b[4][3],int c[3][3]);
int a[3][4],b[4][3],c[3][3];

cout<<"请输入3*4矩阵元素"<<endl;
for(i=0;i<=2;i++)
{for(j=0;j<=3;j++)
cin>>a[i][j];}
cout<<"请输入4*3矩阵元素"<<endl;
for(m=0;m<=3;m++)
{for(n=0;n<=2;n++)
cin>>b[m][n];}
mul(a,b,c);

cout<<"两矩阵相乘得"<<endl;
int x,y;
for(x=0;x<3;x++) { // 注意大括号
for(y=0;y<3;y++) // 这里是y非j
cout<<c[x][y]<<" ";
cout<<endl;
}

return 0;
}

void mul(int a[3][4],int b[4][3],int c[3][3])
{
int l=0;
for(i=0;i<=2;i++)
for(j=0;j<=2;j++) { // 注意大括号
l = 0; // l要先赋0
for(m=0;m<=2;m++)
l=a[i][m]*b[m][j]+l;
c[i][j]=l;
}
//return(c[3][3]);
}
全部回答
  • 1楼网友:梦中风几里
  • 2021-07-20 12:27
for(x=0;x<3;x++) {for(y=0;y<3;y++) //y写成了j ,要加{} cout<<c[x][y]<<" "; cout<<endl;} return 0; }

int mul(int a[3][4],int b[4][3],int c[3][3]) { int l=0; for(i=0;i<=2;i++) for(j=0;j<=2;j++) {for(m=0;m<=2;m++) //要加{} l=a[i][m]*b[m][j]+l; c[i][j]=l;} return(c[3][3]); }

  • 2楼网友:爱难随人意
  • 2021-07-20 11:51

#include<iostream> using namespace std; int i,j,m,n; int main() { int mul(int a[3][4],int b[4][3],int c[3][3]); int a[3][4],b[4][3],c[3][3];

cout<<"请输入3*4矩阵元素"<<endl; for(i=0;i<=2;i++) { for(j=0;j<=3;j++) cin>>a[i][j]; }

cout<<"请输入4*3矩阵元素"<<endl; for(m=0;m<=3;m++) { for(n=0;n<=2;n++) cin>>b[m][n]; } mul(a,b,c); cout<<"两矩阵相乘得"<<endl; int x,y; //可以用i j做下标.不用在重新定义变量.你可以自己修改下. for(x=0;x<3;x++) { //这里应该加上花括号.

for(y=0;y<3;y++) //这里的循环条件写错了.用y循环,但判断的是j. cout<<c[x][y]<<" "; cout<<endl;

} return 0; }

int mul(int a[3][4],int b[4][3],int c[3][3]) { int l=0; for(i=0;i<=2;i++) for(j=0;j<=2;j++) { //这里应该加个花括号. for(m=0;m<=2;m++) l=a[i][m]*b[m][j]+l; c[i][j]=l; //否则这句只执行一次. } return(c[3][3]); }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯