#include <iostream.h> #include <math.h> #include <memory.h> /*函数声明*/ /*为矩阵分配空间并且初始化为0*/ void allocMemAndInit(int ***matrixName, int rowNum, int columnNum); /*释放空间*/ void deallocMem(int **matrixName, int rowNum, int columnNum); /*矩阵输入*/ void inputMatrix(int ***matrixName, int* rowNum, int* columnNum); /*矩阵输出*/ void outputMatrix(int** matrixName, int rowNum, int columnNum); /***********************************end*********************************/ /*函数定义*/ void allocMemAndInit(int ***matrixName, int rowNum, int columnNum) { if(matrixName == NULL) { return; } //first free the former memery deallocMem(*matrixName, rowNum, columnNum); *matrixName = new int*[rowNum]; for(int i=0; i<rowNum; i++) { (*matrixName)[i] = new int[columnNum]; memset((*matrixName)[i], 0x0000, sizeof(columnNum * sizeof(int))); } } //used to dealloc the memory void deallocMem(int **matrixName, int rowNum, int columnNum) { if(matrixName == NULL) { return; } for(int i= 0; i< rowNum; i++) { if(matrixName[i] != NULL) { delete[] matrixName[i]; matrixName[i] = NULL; } } delete[] matrixName; matrixName = NULL; } void inputMatrix(int ***matrixName, int* rowNum, int* columnNum) { if(matrixName == NULL) { cout<<"Bad pointer"<<endl; return; } cout<<"Please input the row number of the matrix: "; cin>>*rowNum; cout<<endl; cout<<"Please input the column number of the matrix: "; cin>>*columnNum; cout<<endl; allocMemAndInit(matrixName, *rowNum, *columnNum); for(int i=0; i<(*rowNum); i++) { for(int j=0; j<(*columnNum); j++) { cout<<"Please input the row: "<<i<<"th, "<<"column: "<<j<<"th value: "; cin>>(*matrixName)[i][j]; cout<<endl; } } } void outputMatrix(int** matrixName, int rowNum, int columnNum) { if(matrixName == NULL) { return; } cout<<"The input matrix is a "<<rowNum<<" * "<<columnNum<<" and the value is as follow:"<<endl; for(int i=0; i<rowNum; i++) { for(int j=0; j<columnNum; j++) { cout<<matrixName[i][j]<<" "; } cout<<endl; } } void main() { int rowNum = 0; int columnNum = 0; int** matrixName = NULL; inputMatrix(&matrixName, &rowNum, &columnNum); outputMatrix(matrixName, rowNum, columnNum); deallocMem(matrixName, rowNum, columnNum); }