반응형

C 언어로 만든 달팽이 배열 출력 예제입니다.

 

#include <stdio.h>

int n    = 0;    // 숫자 1, 2, 3, ...
int step = 1;    // 증가/감소 크기: 1, -1
int y    = 0;    // 줄 위치
int x    = -1;   // 칸 위치 (배열 선두보다 한칸 앞)
int arr[21][21] = {0, }; // 2차원 배열 구조 (size: 1~20)

int main() {
  int SIZE, size;
  int i, j;

  printf("달팽이 배열 크기(1~20): ");
  scanf(" %d", &SIZE);
  size = SIZE;

  while (1) {
    for(i=0; i<size; i++) {  // 몇 칸 진행할까
      n++;
      x += step;
      arr[y][x] = n;
  }
    size--;
    if (size < 1)  // 출력할 게 없으면 종료
      break;
    for(i=0; i<size; i++) { // 몇 줄 진행할까
      n++;
      y += step;
      arr[y][x] = n;
   }
    step = -step;  // 증감 방향을 반대로
  }
  // 2차원 리스트 출력하기
  for(i=0; i<SIZE; i++) {
    for(j=0; j<SIZE; j++)
      printf("%4d", arr[i][j]);
    printf("\n");
  }


  return 0;
}

 

[실행 결과]

 

달팽이 배열 크기(1~20): 5
   1   2   3   4   5
  16  17  18  19   6
  15  24  25  20   7
  14  23  22  21   8
  13  12  11  10   9

 

<이상>

 

반응형

+ Recent posts