C 달팽이 배열

최대 1 분 소요

문제

다음처럼 출력되는 프로그램을 작성하시오.

실행의 예

수 입력: 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

해결

코드

#include <stdio.h>
 
int main(void)
{
    int arr[10][10]={};
    int i, j;
    int p=-1;
    int k=0;
    int input=0;
    int check=0;
    int count=0;
    int save=0;
    
    printf("수 입력: ");
    scanf("%d", &input);
    
    save = input;
    
    while(input>0)
    {
        if((check % 2) == 0)
        {
            
            for(i=0;i<input;i++)
            {
                p++;
                arr[k][p] = (++count);
            }
 
            for(j=0;j<input-1;j++)
            {
                k++;
                arr[k][p] = (++count);
            }
            
            check++;
        }
        else
        {
            for(i=0;i<input;i++)
            {
                p--;
                arr[k][p] = (++count);
            }
            
            for(j=0;j<input-1;j++)
            {
                k--;
                arr[k][p] = (++count);
            }
            check++;
        }
        
        input--;
    }
    
    for(i=0;i<save;i++)
    {
        for(j=0;j<save;j++)
        {
            printf("%3d ", arr[i][j]);
        }
        printf("\n");
    }
    
    return 0;
}

댓글남기기