#include<stdio.h> #include<windows.h> #include<conio.h>
//数组大小,可变化 #define ARRAY_SIZE 21 int n, i, j, direction = 0;
void display(int s[ARRAY_SIZE][ARRAY_SIZE]) { ?? ?COORD pos = {0}; ?? ?SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); ?? ?for(int i = 0; i < ARRAY_SIZE; i++) ?? ?{ ?? ??? ?for(int j = 0;j < ARRAY_SIZE;j++) ?? ??? ??? ?if(0 != s[i][j]) ?? ??? ??? ??? ?printf("%3d", s[i][j]); ?? ??? ??? ?else ?? ??? ??? ??? ?printf(" ? ");?? ? ?? ??? ??? ? ?? ??? ?putchar('\n'); ?? ?} ?? ?putchar('\n'); ?? ?printf("行:%3d 列:%3d 方向:%3d", i, j, direction);?? ? }
void ArraySet(int s[ARRAY_SIZE][ARRAY_SIZE], int i, int j, int value, int d) { ?? ?s[i][j]= value; ?? ?display(s); ? ?Sleep(10); direction = d; }
int main() { ?? ?int s[ARRAY_SIZE][ARRAY_SIZE] = {0}; ?? ? ?? ?for(n = 0; n <= ARRAY_SIZE/2; n++) ?? ?{?? ??? ??? ? ?? ??? ?for(i = n, j = i; j < ARRAY_SIZE - n; j++) ?? ??? ??? ?ArraySet(s, i, j, n + 1, 1); ?? ??? ??? ? ?? ? ? ?for(++i, --j; i < ARRAY_SIZE - n; i++) ?? ??? ??? ?ArraySet(s, i, j, n + 1, 2); ?? ??? ??? ??? ??? ? ?? ??? ?for(--i, --j; j >= n; j--) ?? ??? ??? ?ArraySet(s, i, j, n + 1, 3); ?? ??? ??? ??? ??? ? ?? ??? ?for(--i, ++j; i >= n + 1; i--) ?? ??? ??? ?ArraySet(s, i, j, n + 1, 4);?? ? ?? ?} }
运行效果:
?
|