#include #include #include #define N 9 void print(int matrix[9][9]); int main() { srand(time(NULL)); int matrix[9][9]={0}; int i=1,j=1; int col=0; int val=0; int k=0,l=0; //此循环变量用于判断随机生成的数是否重复 int isrepeat=0; for(i=0;i<9;i++) //每一行 { for(j=0;j<3;j++) //三个位置 { label_col: col=rand()%9; if(matrix[i][col]!=0) { goto label_col; //如果随机生成的列对应的值不等于0,则重新生成随机列 } else { if(i>=0&&i<3) { label_val1: val=rand()%9+1; //生成随机数值 isrepeat=0; //此变量用于记录随机数值是否重复 for(k=0;k<3;k++) //此循环用于判断生成的值是否重复 { for(l=0;l<9;l++) { if(val==matrix[k][l]) { isrepeat=1; goto label_val1; } } } } else if(i>=3&&i<6) { label_val2: val=rand()%9+1; //生成随机数值 isrepeat=0; for(k=3;k<6;k++) { for(l=0;l<9;l++) { if(val==matrix[k][l]) { isrepeat=1; goto label_val2; } } } } else if(i>=6&&i<9) { label_val3: val=rand()%9+1; //生成随机数值 isrepeat=0; for(k=6;k<9;k++) { for(l=0;l<9;l++) { if(val==matrix[k][l]) { isrepeat=1; goto label_val3; } } } } if(isrepeat==0) { matrix[i][col]=val; } } } } print(matrix); // for(i=0;i<9;i++) // { // for(j=0;j<9;j++) // { // printf("%d ",matrix[i][j]); // } // printf("\n"); // } return 0; } void print(int matrix[9][9]) { int i=0,j=0; printf("|-----------------------------|\n"); for ( i = 0; i < N; i++) { printf("|"); for (j = 0; j < N; j++) { printf("%2d ", matrix[i][j]); if ((j + 1) % 3 == 0 ) printf("|"); } printf("\n"); if ((i + 1) % 3 == 0 && i < 8) { printf("|-----------------------------|\n"); } } printf("|-----------------------------|\n"); }