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