#include <stdio.h>
void draw(int n, int arr[][11]); //arr 배열에 n x n 달팽이 모양 입력하는 함수
void print(int n, int arr[][11]); //arr 배열 출력하는 함수
int main(){
int n; //n : 입력받는 숫자
int z = 0; //z : 입력받을때 예외 처리 위해
int arr[11][11] = { { 0, }, }; // 11 x 11 배열 생성
while (z == 0){
printf("n(3~11) : ");
z = scanf("%d", &n);
if (z == 0 || n > 11 || n < 3) {
printf("잘못입력하셨습니다. \n");
fflush(stdin);
z = 0;
}
}
draw(n, arr); //arr 배열에 n x n 달팽이 모양 입력
print(n, arr); //arr 배열 출력
return 0;
}
void draw(int n, int arr[][11]){ //arr 배열에 n x n 달팽이 모양 입력하는 함수
int i = 0, j = 0, num = 1, k = 0; //i = 행, j = 열, num = 입력할 숫자
for (; num <= n * n; k++) {
for (; j < n - k; j++, num++) {
arr[i][j] = num;
}
for (i++, j--; i < n - k; i++, num++) {
arr[i][j] = num;
}
for (i--, j--; j >= k; j--, num++) {
arr[i][j] = num;
}
for (i--, j++; i > k; i--, num++) {
arr[i][j] = num;
}
i++, j++;
}
return;
}
void print(int n, int arr[][11]){ //arr 배열 출력하는 함수
int i, j; //i = 행, j = 열
for (i = 0; i < n; i++){
for (j = 0; j < n; j++){
printf("%3d ", arr[i][j]);
}
printf("\n");
}
return;
}