第一种方法http://blog.csdn.net/friendan/article/details/8824682
第二种方法http://www.nowamagic.net/librarys/veda/detail/1044
#define n 4 //矩阵顺时针旋转90度 void Rotation(int a[n][n]) { int i; int k; int j; /*顺时针旋转90°的算法*/ for(i=0;i<n/2;i++)/*共有n/2个旋转环*/ for(k=0;k<n-1-i-i;k++)/*每个旋转环共有n-1-i-i个旋转组,每组4个元素,逐个旋转*/ {/*旋转组4个元素,分别是a[i][k+i]左上角,a[k+i][n-1-i]右上角,a[n-1-i][n-1-i-k]右下角,a[n-1-i-k][i]左下角*/ int t; t =a[i][k+i];//左上角 a[i][k+i]=a[n-1-i-k][i];//左下角的值赋给左上角 a[n-1-i-k][i]=a[n-1-i][n-1-i-k];//右下角赋给左上角 a[n-1-i][n-1-i-k]=a[k+i][n-1-i];//右上角赋给右下角 a[k+i][n-1-i]=t;//左上角赋给右上角 } /*输出旋转后的矩阵*/ printf("After rotating the array is:\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%4d",a[i][j]); printf("\n"); } } void main(void) { int arr[n][n]={ {1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; cout<<"矩阵顺时针旋转前\n"; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) printf("%3d ",arr[i][j]); cout<<endl; } Rotation(arr); cout<<"\n矩阵顺时针旋转90度后\n"; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) printf("%3d ",arr[i][j]); cout<<endl; } cin.get(); }