프로그램 개요
이 프로그램은 사용자로부터 행(row)의 개수를 입력받아, 각 행이 대각선 방향으로 값이 감소하는 규칙을 가진 숫자 패턴을 화면에 출력합니다.
예를 들어 행의 개수를 5로 입력하면 다음과 같은 결과가 출력됩니다.
1 6 2 10 7 3 13 11 8 4 15 14 12 9 5
알고리즘
패턴은 다음과 같은 순서로 생성됩니다.
- 각 행의 가장 오른쪽(마지막) 위치부터 패턴을 구성합니다.
- 먼저 각 행의 마지막 열을 채웁니다.
- 두 번째 행의 뒤에서 두 번째 열부터 시작해 나머지 값을 계산합니다.
- 사용자가 지정한 행의 개수만큼 위 과정을 반복합니다.
예제 코드
/* 숫자 패턴 출력 프로그램 */
#include<stdio.h>
#include<conio.h>
int main()
{
int k, l, m, count = 1;
int rows;
clrscr();
printf("\n 숫자 패턴의 행 개수를 입력하세요: ");
scanf("%d", &rows);
for (k = 1; k <= rows; k++) {
m = count;
for (l = 1; l <= k; l++) {
printf("%d ", m);
m = m - (rows + l - k);
}
printf("\n");
count = count + 1 + rows - k;
}
getch();
return 0;
}코드 설명
- 외부 for 루프(k) : 전체 행을 제어합니다. 1행부터 사용자가 입력한 rows행까지 반복합니다.
- 변수 count : 각 행의 첫 번째 값입니다. 한 행이 끝날 때마다
count = count + 1 + rows - k공식에 따라 다음 행의 시작 값이 계산됩니다. - 내부 for 루프(l) : 현재 행에서 왼쪽부터 오른쪽으로 값을 하나씩 출력합니다.
- 변수 m : 실제로 출력되는 값입니다.
m = m - (rows + l - k)연산을 통해 대각선 방향으로 값이 줄어드는 규칙을 구현합니다.
참고 : clrscr()과 getch()는 Turbo C 계열 컴파일러에서 제공되는 함수이므로 conio.h 헤더가 필요합니다. GCC 등 최신 표준 컴파일러 환경에서 실행하려면 이 두 함수 호출과 #include<conio.h> 부분을 제거하면 됩니다.
출력 결과
행 개수로 5를 입력했을 때의 실행 결과는 다음과 같습니다.


이처럼 중첩 for 루프와 간단한 산술 규칙만 활용하면 다양한 형태의 숫자 패턴을 손쉽게 만들 수 있습니다. 행 개수를 바꿔가며 직접 실행해 보면 패턴이 생성되는 원리를 더욱 명확하게 이해할 수 있습니다.