#include<iostream>#include<stdio.h>
using namespace std;voidprintM(int M){//只有一个数的时候输出1if(M ==1){printf("1");}//生成在拉丁方阵中出现的数据序列int*elementArray = new int[M];for(int i =0; i < M; i++){
elementArray[i]= i +1;}//动态生成一个二维数组int**shouList = new int*[M];//开辟行for(int i =0; i < M; i++)
shouList[i]= new int[M];//开辟列for(int i =0; i < M; i++){//写入一行方阵for(int k =0; k < M; k++){
shouList[i][k]= elementArray[k];}//将数据序列循环左移一位int temp;
temp = elementArray[0];for(int i =0; i < M -1; i++){
elementArray[i]= elementArray[i+1];}
elementArray[M -1]= temp;}//打印方阵for(int i =0; i < M; i++){for(int j =0; j < M; j++){printf("%2d", shouList[i][j]);}printf("\n");}};intmain(){int M =0;printf("Please input M :");scanf_s("%d",&M);printM(M);system("pause");return0;}