#include
#include
using namespace std;
int c[3][3];
void Matadd();
void show(int c[3][3]); //返回类型与定义时不一致,已由int变为void
int a[3][3] = {{1,2,-1},
{-2,1,0},
{1,0,3}};
int b[3][3] = {{5,7,8},
{2,-2,4},
{1,1,1}};
int main()
{
Matadd();
show(c);
cout<<4;
return 0; //你少了这步
}
void Matadd(){
for (int i = 0;i < 3; i ++)
for (int j = 0;j < 3; j ++){
c[i][j] = a[i][j] + b[i][j];
}
}
void show(int c[][3])
{
for (int i = 0;i < 3; i ++)
{ for (int j = 0;j < 3; j ++)
cout<
}
你的问题还不少呢,上面的注释并不是所有你的错误,还有其他错误,因为说不清所以没打出来,你还犯了逻辑性错误,我顺手改了,你没有输出原来两个矩阵的数,这个你自己应该会吧。
从你的错误点来分析,你对函数的定义和用法比较模糊,建议去看看函数那章
#include
using namespace std;
class CMatrix
{
public:
CMatrix(unsigned long m,unsigned long n);
CMatrix(CMatrix& A); // COPY构造函数,必须要。
CMatrix(){_m=0;_n=0;_data=NULL;}//无参数构造函数,必须要。
~CMatrix(){if(_data!=NULL)delete _data;}
void DisplayOnCMD();
bool SetCell(unsigned long x,unsigned long y,double data);
double GetCell(unsigned long x,unsigned long y);
unsigned long GetM(){return _m;}
unsigned long GetN(){return _n;}
CMatrix operator+(const CMatrix &A);
CMatrix operator=(const CMatrix &A);
private:
unsigned long _m,_n;
double* _data;
};
CMatrix::CMatrix(unsigned long m,unsigned long n)
{
_m=m;_n=n;
_data=new double[_m*_n];
for(int i=0;i<_m*_n;i++)
_data[i]=0;
}
CMatrix::CMatrix(CMatrix& A)
{
_m=A._m;_n=A._n;
_data=new double[_m*_n];
for(int i=0;i<_m*_n;i++)
_data[i]=A._data[i];
}
bool CMatrix::SetCell(unsigned long x,unsigned long y,double data)
{
if(_data==NULL)throw;
_data[x*_n+y]=data;
return true;
}
double CMatrix::GetCell(unsigned long x,unsigned long y)
{
if(_data==NULL)throw;
return _data[x*_n+y];
}
CMatrix CMatrix::operator+(const CMatrix &A)
{
CMatrix CMTemp(_m,_n);
for(int i=0;i<_m*_n;i++)
CMTemp._data[i]=_data[i]+A._data[i];
return CMTemp;
}
CMatrix CMatrix::operator=(const CMatrix &A)
{
if(&A==this)return *this;
if(_data==NULL)CMatrix(A);
for(int i=0;i<_m*_n;i++)
_data[i]=A._data[i];
return *this;
}
void CMatrix::DisplayOnCMD()
{
if(_data==NULL)return;
for(int i=0;i<_m*_n;i++)
{
if(i%_n==0)cout<
}
cout<
int main(void)
{
unsigned long m,n;
cout<<"m=";cin>>m;
cout<<"n=";cin>>n;
CMatrix A(m,n);
CMatrix B(m,n);
CMatrix C(m,n);
for(int i=0;i
A.SetCell(i,k,i+k);
B.SetCell(i,k,i+k*2);
}
cout<<"Auto Test:"<
cout<<"B:";B.DisplayOnCMD();
C=A+B;
cout<<"A+B=C,C:";C.DisplayOnCMD();
cout<<"A:";A.DisplayOnCMD();
cout<<"B:";B.DisplayOnCMD();
A.SetCell(1,2,100);
A.DisplayOnCMD();
cout<
}
int Matadd(int a[][3],int b[][3]);
int show(int c[3][3]);
这2条不知道你想表达的是什么?
void Matadd();
void show();
调用时不需要使用void,这个是定义对象属性的。
太久不碰c++,语法大概还会有错,你看个意思
#include
using namespace std;
int a[3][3] = {{1,2,-1},
{-2,1,0},
{1,0,3}};
int b[3][3] = {{5,7,8},
{2,-2,4},
{1,1,1}};
int c[3][3];
int main()
{
show();
}
void Matadd(){
for (int i = 0;i < 3; i ++)
for (int j = 0;j < 3; j ++){
c[i][j] = a[i][j] + b[i][j];
}
}
void show(){
void Matadd();
for (int i = 0;i < 3; i ++)
for (int j = 0;j < 3; j ++){
cout<
}
当然,这样就吧 int c[3][3]放在外面作为全局变量了,如果想用参数的话可以改一下函数声明和调用,我记得大约是这样,你可以搜一下
show(&c[i][j]);
void show(ref c[i][j]){
void Matadd();
for (int i = 0;i < 3; i ++)
for (int j = 0;j < 3; j ++){
cout<
}
int Matadd(int a[][3],int b[][3]);
int show(int c[3][3]);
C++从来没有这种写法