/* N*N矩阵的旋转 不开辟新空间 programmer:qpz time:2014-11-09 */ #include <iostream> using namespace std; //#define MAX 3 const int MAX=3; class cou{ private: int x; int y; char num[MAX][MAX]; public: cou(){} cou(char num[MAX][MAX]); void Prin(void); void rotate(void); }; void Init(char a[MAX][MAX],int n,int m); int main(void) { char arr[MAX][MAX],time; Init(arr,MAX,MAX); cou Matrix; Matrix=cou(arr); Matrix.Prin(); cout<<"请输入旋转几次:"<<endl; cin>>time; time=time%4; while(time--){ Matrix.rotate(); } Matrix.Prin(); return 0; }/*end main*/ void Init(char a[MAX][MAX],int n,int m) { int i,j; cout<<"请输入矩阵3*3:"<<endl; for(i=0;i<n;i++){ for(j=0;j<m;j++){ cin>>a[i][j]; }/*end for*/ }/*end for*/ }/*end Init*/ cou::cou(char num[MAX][MAX]) { for(x=0;x<MAX;x++){ for(y=0;y<MAX;y++){ this->num[x][y]=num[x][y]; }/*end for*/ }/*end for*/ }/*end cou()*/ void cou::Prin(void) { for(int i=0;i<MAX;i++){ for(int j=0;j<MAX;j++){ cout<<num[i][j]; }/*end for*/ cout<<endl; }/*end for*/ }/*end Prin()*/ void cou::rotate(void) { //cout<<"首先行列互换"<<endl; for(x=0;x<MAX;x++){ for(y=1+x;y<MAX;y++) { num[x][y]=num[x][y]^num[y][x]; num[y][x]=num[x][y]^num[y][x]; num[x][y]=num[x][y]^num[y][x]; } /*end for*/ }/*end for*/ //Prin(); //cout<<endl<<"然后进行左右互换"<<endl; for(x=0;x<MAX;x++){ for(y=0;y<MAX/2;y++){ num[x][y]=num[x][y]^num[x][MAX-y-1]; num[x][MAX-y-1]=num[x][y]^num[x][MAX-y-1]; num[x][y]=num[x][y]^num[x][MAX-y-1]; } /*end for*/ }/*end for*/ //Prin(); }