Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 숫자 패턴을 출력하는 프로그램 완벽 가이드


프로그램 설명

숫자 패턴(numerical pattern)은 일정한 규칙, 즉 패턴 규칙(pattern rule)에 따라 만들어진 수열을 의미합니다. 패턴 규칙은 하나 이상의 수학적 연산을 활용하여 수열에서 연속된 숫자들 사이의 관계를 설명할 수 있습니다.

이번 글에서는 C 언어를 이용해 대표적인 두 가지 숫자 패턴을 화면에 출력하는 방법을 살펴보겠습니다.

패턴 예시

패턴 1

1
2 6
3 7 10
4 8 11 13
5 9 12 14 15

패턴 1은 각 행의 시작 값이 행 번호와 같고, 같은 행 안에서는 일정한 간격(5 - 열 위치)만큼씩 커지는 구조입니다.

패턴 2

        1
      1 2 3
    1 2 3 4 5
  1 2 3 4 5 6 7
1 2 3 4 5 6 7 8 9
  1 2 3 4 5 6 7
    1 2 3 4 5
      1 2 3
        1

패턴 2는 위쪽으로 갈수록 홀수 개의 숫자가 늘어나며, 다섯 번째 행을 기준으로 대칭을 이루는 마름모 형태의 피라미드 패턴입니다.

알고리즘

패턴 1:
i는 행(row), j는 열(column)을 나타낸다.
5는 5행 5열 패턴을 만들기 위한 값이다.
각 행(i)마다 반복한다.
K를 i로 초기화한다.
각 열(j)마다 반복한다.
현재 열(j)에 대한 패턴을 처리한다.
K의 값을 출력한다.
K를 k + 5 - j로 다시 초기화한다.

패턴 2:
첫 번째 행: 1을 출력한다.
두 번째 행: 1, 2, 3을 출력한다.
세 번째 행: 1, 2, 3, 4, 5를 출력한다.
네 번째 행: 1, 2, 3, 4, 5, 6, 7을 출력한다.
다섯 번째 행: 1, 2, 3, 4, 5, 6, 7, 8, 9를 출력한다.
다섯 번째 행 아래에 네 번째 행부터 첫 번째 행까지 동일한 내용을 역순으로 출력한다.

예제 코드

/* 숫자 패턴 출력 프로그램 */
#include<stdio.h>
int main(){
   int i,j,k;
   printf("숫자 패턴 1");
   printf("\n");
   printf("\n");
   for(i=1;i<=5;i++){
      k = i;
      for(j=1;j<=i;j++){
         printf("%d ", k);
         k += 5-j;
      }
      printf("\n");
   }
   printf("\n");
   printf("숫자 패턴 2");
   printf("\n");
   printf("\n");
   /* 위쪽 피라미드 부분 출력 */
   for(i = 1;i<=5;i++){
      for(j = i;j<5;j++){
         printf(" ");
      }
      for(k = 1;k<(i*2);k++){
         printf("%d",k);
      }
      printf("\n");
   }
   /* 아래쪽 역방향 피라미드 부분 출력 */
   for(i = 4;i>=1;i--){
      for(j = 5;j>i;j--){
         printf(" ");
      }
      for(k = 1;k<(i*2);k++){
         printf("%d",k);
      }
      printf("\n");
   }
   getch();
   return 0;
}

코드 핵심 포인트

  • 패턴 1: 바깥 반복문(i)이 행을 담당하고, 안쪽 반복문(j)이 열을 담당합니다. 변수 k는 각 행의 시작 값으로 초기화된 뒤, 한 칸 출력할 때마다 5 - j씩 증가하여 계단식으로 늘어나는 숫자 배열을 만듭니다.
  • 패턴 2: 먼저 공백을 출력해 들여쓰기를 맞춘 후, k < i*2 조건을 이용해 홀수 개의 숫자를 출력합니다. 이후 반복문을 역방향으로 돌려 아래쪽 대칭 부분을 완성합니다.

출력 결과

C 언어로 숫자 패턴을 출력하는 프로그램 완벽 가이드