#include #define SIZE 3 // SIZE来控制数组宽度 using namespace std; const int S = 20; //数组的容器大小 int a[S][S]; //一个输出函数 void display() { int i, j; for (i = 0; i < SIZE; i++) { for (j = 0; j < SIZE; j++) { cout << a[i][j] << " "; } cout << endl; } cout << endl; } // https://blog.csdn.net/BppleMan/article/details/50456645?locationNum=2&fps=1 // 关于45度遍历二维数组的一点记录 int main(int argc, const char *argv[]) { int x, y, count = 1; /* 1 3 6 2 5 8 4 7 9 */ // 2 * SIZE - 1就是扫描行的最大行数 for (y = 0; y < 2 * SIZE - 1; y++) { for (x = 0; x < SIZE; x++) { //控制纵坐标的范围是0~SIZE if (y - x >= 0 && y - x < SIZE) //通过找规律的到y与x的关系以此确定纵坐标 a[y - x][x] = count++; } } display(); /* 1 2 4 3 5 7 6 8 9 */ count = 1; for (y = 0; y < 2 * SIZE - 1; y++) { for (x = 0; x < SIZE; x++) { if (y - x >= 0 && y - x < SIZE) a[x][y - x] = count++; } } display(); /* 4 2 1 7 5 3 9 8 6 */ count = 1; for (y = 0; y < 2 * SIZE - 1; y++) { for (x = 0; x < SIZE; x++) { if (x + y - (SIZE - 1) >= 0 && x + y - (SIZE - 1) < SIZE) a[x + y - (SIZE - 1)][x] = count++; } } display(); /* 6 3 1 8 5 2 9 7 4 */ count = 1; for (y = 0; y < 2 * SIZE - 1; y++) { for (x = SIZE - 1; x >= 0; x--) { if (x + y - (SIZE - 1) >= 0 && x + y - (SIZE - 1) < SIZE) a[x + y - (SIZE - 1)][x] = count++; } } display(); /* 6 8 9 3 5 7 1 2 4 */ count = 1; for (y = 0; y < 2 * SIZE - 1; y++) { for (x = SIZE - 1; x >= 0; x--) { if (x + y - (SIZE - 1) >= 0 && x + y - (SIZE - 1) < SIZE) a[x][x + y - (SIZE - 1)] = count++; } } display(); /* 4 7 9 2 5 8 1 3 6 */ count = 1; for (y = 0; y < 2 * SIZE - 1; y++) { for (x = 0; x < SIZE; x++) { if (x + y - (SIZE - 1) >= 0 && x + y - (SIZE - 1) < SIZE) a[x][x + y - (SIZE - 1)] = count++; } } display(); return 0; }