一个C++程序,为什么无法输出结果

#include<iostream>usingstd::cout;usingstd::cin;usingstd::endl;classMatrix{intn,array[... #include<iostream>
using std::cout;
using std::cin;
using std::endl;
class Matrix
{
int n,array[100][100];
public:
Matrix()//默认构造函数,默认创建一个100行100列方阵,数值全为0
{
int n=100;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
array[i][j]=0;
}
}
}
Matrix(int n,int a[100][100])//带参数的构造函数
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
array[i][j]=a[i][j];
}
}
}
friend Matrix operator + (Matrix &m1,Matrix &m2)//重载运算符+,计算两个矩阵相加
{
Matrix temp;
int i,j;
cout<<"方阵m1+方阵m2=:"<<endl;
for(i=0;i<m1.n;i++)
{
for(j=0;j<m1.n;j++)
{
temp.array[i][j]=m1.array[i][j]+m2.array[i][j];
}
}
return temp;
}
friend Matrix operator - (Matrix &m1,Matrix &m2)//重载运算符-,计算两个矩阵相减
{
Matrix temp;
int i,j;
cout<<"方阵m1-方阵m2=:"<<endl;
for(i=0;i<m1.n;i++)
{
for(j=0;j<m1.n;j++)
{
temp.array[i][j]=m1.array[i][j]-m2.array[i][j];
}
}
return temp;
}
friend Matrix operator * (Matrix &m1,Matrix &m2)//重载运算符*,计算两个矩阵相乘
{
Matrix temp;
int i,j,k;

cout<<"方阵m1*方阵m2=:"<<endl;
for(i=0;i<m1.n;i++)
{
for(j=0;j<m1.n;j++)
{
temp.array[i][j]=0;
for(k=0;k<m1.n;k++)
{
temp.array[i][j]=temp.array[i][j]+m1.array[i][k]*m2.array[k][j];
}
}
}
return temp;
}
friend void Print(Matrix &m)//输出经运算后的方阵
{
int i,j;
for(i=0;i<m.n;i++)
{
for(j=0;j<m.n;j++)
{
cout<<m.array[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
}
};
int main()
{
int N,a[100][100],b[100][100],i,j;
Matrix m3,m4,m5;
cout<<"请输入方阵的阶数:"; cin>>N;
while(N!=0)//输入为0,则退出程序
{
while(N<2)
{
cout<<"您输入的数据有错误!请重新输入:"; cin>>N;
}
cout<<"请输入第1个方阵的数据:"<<endl;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
cin>>a[i][j];
}
}
Matrix m1(N,a);
cout<<"请输入第2个方阵的数据:"<<endl;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
cin>>b[i][j];
}
}
Matrix m2(N,b);
m3=m1+m2;
Print(m3);
m4=m1-m2;
Print(m4);
m5=m1*m2;
Print(m5);
cout<<"请输入方阵的阶数:"; cin>>N;//输入为0,则退出程序
}
return 0;
}
展开
 我来答
欢乐多Ek
2012-12-12 · TA获得超过478个赞
知道小有建树答主
回答量:477
采纳率:0%
帮助的人:413万
展开全部
错误一大堆,首先构造函数里面n就没初始化过,其次输入n的时候就没给n赋过值,没拷贝构造函数,返回就是两个不一样的值了。所以print根本无法打印。

最想吐槽的是:
Matrix()//默认构造函数
{
int n=100; //你这到底是在定义还是在赋值呢???
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
array[i][j]=0;
}
}
}
五妹3313
2012-12-12
知道答主
回答量:1
采纳率:0%
帮助的人:1541
展开全部
Print(Matrix &m)函数中m.n没值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式