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

C 언어로 구구단(곱셈표) 출력 프로그램 만들기 – 중첩 do-while 루프 활용법


문제 정의

1 × 1부터 12 × 10까지의 곱셈표(구구단)를 아래 형식과 같이 화면에 출력하는 프로그램을 작성하는 것이 이번 글의 목표입니다.

1 2 3 4 5 6 7 8 9 10
2 4 6 8 ……………….20
3 6 9………………………30
4 8 12 16………………..40
-
-
-
12 24……………………..120

해결 방법

중첩(nested) 형태로 구성된 두 개의 do-while 루프를 사용하면 곱셈표를 간단하고 깔끔하게 출력할 수 있습니다.

곱셈표를 표시하는 핵심 로직은 다음과 같습니다.

  • 외부 루프(바깥 루프): 변수 row에 의해 제어되며, 총 12번 반복 실행됩니다.
  • 내부 루프(안쪽 루프): 변수 column에 의해 제어되며, 외부 루프가 한 번 실행될 때마다 10번씩 반복 실행됩니다.
do /*......외부 루프 시작........*/{
    column = 1;
    do /*.......내부 루프 시작.......*/{
        y = row * column;
        printf("%4d", y);
        column = column + 1;
    }
    while (column <= COLMAX); /*... 내부 루프 끝 ...*/
    printf("\n");
    row = row + 1;
}
while (row <= ROWMAX);/*..... 외부 루프 끝 .....*/

전체 예제 코드

다음은 곱셈표를 출력하는 C 프로그램의 전체 소스 코드입니다.

#include<stdio.h>
#define COLMAX 10
#define ROWMAX 12
main(){
    int row,column, y;
    row = 1;
    printf(" MULTIPLICATION TABLE \n");
    printf("-----------------------------------------\n");
    do /*......외부 루프 시작........*/ {
        column = 1;
        do /*.......내부 루프 시작.......*/ {
            y = row * column;
            printf("%4d", y);
            column = column + 1;
        }
        while (column <= COLMAX); /*... 내부 루프 끝 ...*/
        printf("\n");
        row = row + 1;
    }
    while (row <= ROWMAX);/*..... 외부 루프 끝 .....*/
    printf("-----------------------------------------\n");
}

실행 결과

위 프로그램을 컴파일하여 실행하면 다음과 같은 결과가 출력됩니다.

MULTIPLICATION TABLE
-----------------------------------------
 1  2  3  4  5  6  7  8   9  10
 2  4  6  8 10 12 14 16  18  20
 3  6  9 12 15 18 21 24  27  30
 4  8 12 16 20 24 28 32  36  40
 5 10 15 20 25 30 35 40  45  50
 6 12 18 24 30 36 42 48  54  60
 7 14 21 28 35 42 49 56  63  70
 8 16 24 32 40 48 56 64  72  80
 9 18 27 36 45 54 63 72  81  90
10 20 30 40 50 60 70 80  90 100
11 22 33 44 55 66 77 88  99 110
12 24 36 48 60 72 84 96 108 120
-----------------------------------------

코드 핵심 포인트

  • #define COLMAX 10#define ROWMAX 12처럼 매크로 상수를 사용하면 열과 행의 최대값을 한눈에 파악할 수 있고, 나중에 범위를 변경할 때도 유지보수가 쉽습니다.
  • %4d 서식 지정자는 숫자를 4칸 너비로 오른쪽 정렬하여 출력하기 때문에 표 형태의 결과물이 가지런히 정렬됩니다.
  • 내부 루프가 한 행의 출력을 모두 마치면 printf("\n")으로 줄을 바꾸고, 외부 루프 변수 row를 1 증가시켜 다음 단을 계산합니다.
  • do-while 문은 조건식을 검사하기 전에 본문을 먼저 실행하므로, 루프 본문이 최소 한 번은 반드시 실행된다는 특징이 있습니다.