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

for 루프와 while 루프로 숫자 패턴을 순서대로 출력하는 C 프로그램

문제 개요

C 언어에서 for 루프 또는 while 루프를 사용하여 아래와 같은 패턴을 순서대로 출력하는 방법을 알아봅니다.

1. E
2. 01
3. 0011
4. 000111
5. 00001111

첫 번째 줄은 문자 'E'를 출력하고, 두 번째 줄부터는 줄 번호에서 1을 뺀 개수만큼 '0'과 '1'을 차례로 나열합니다.

for 루프를 사용한 예제 코드

#include <stdio.h>
#include <conio.h>

void main() {
    int i, j, a = 0, b = 1, n;
    clrscr();
    printf("****************OUTPUT*****************\n\n");
    printf("enter the value of n : ");
    scanf("%d", &n);
    printf("\n the required order is: \n\n");

    for (i = 1; i <= n; i++) {
        if (i == 1)
            printf("%d. E", i);
        else {
            printf("%d. ", i);
            /* 0을 (i-1)번 출력 */
            for (j = 1; j <= i - 1; j++)
                printf("%d", a);
            /* 1을 (i-1)번 출력 */
            for (j = 1; j <= i - 1; j++)
                printf("%d", b);
        }
        printf("\n");
    }
    getch();
}

코드 동작 원리

  • a = 0, b = 1 : 출력에 사용할 두 숫자를 저장합니다.
  • 외부 for 루프 : 1부터 n까지 반복하며 각 줄을 생성합니다.
  • i == 1 조건 : 첫 번째 줄에서는 숫자 대신 문자 'E'를 출력합니다.
  • 내부 for 루프 2개 : 첫 번째 루프는 0을 (i-1)번, 두 번째 루프는 1을 (i-1)번 출력하여 한 줄의 패턴을 완성합니다.

참고로 clrscr(), getch(), conio.h는 구형 Turbo C 컴파일러 전용 요소입니다. 최신 컴파일러(GCC 등)에서는 이 부분을 제거하고 main 함수의 반환형을 int로 선언하는 것이 좋습니다.

while 루프 버전

같은 결과는 while 루프로도 구현할 수 있습니다. 초기화, 조건 검사, 증감식을 직접 작성해야 한다는 점만 다릅니다.

#include <stdio.h>

int main() {
    int i = 1, j, a = 0, b = 1, n;
    printf("enter the value of n : ");
    scanf("%d", &n);
    printf("\n the required order is: \n\n");

    while (i <= n) {
        if (i == 1)
            printf("%d. E", i);
        else {
            printf("%d. ", i);
            j = 1;
            while (j <= i - 1) {
                printf("%d", a);
                j++;
            }
            j = 1;
            while (j <= i - 1) {
                printf("%d", b);
                j++;
            }
        }
        printf("\n");
        i++;
    }
    return 0;
}

실행 결과 (n = 5 입력 시)

****************OUTPUT*****************

enter the value of n : 5

 the required order is: 

1. E
2. 01
3. 0011
4. 000111
5. 00001111

마무리

중첩 루프의 기본 원리만 이해하면 별 찍기, 삼각형 패턴 등 다양한 출력 문제에 같은 방식을 응용할 수 있습니다. 반복 횟수가 정해져 있다면 for 루프가, 조건에 따라 유연하게 반복해야 한다면 while 루프가 더 적합하므로 상황에 맞게 선택하면 코드 가독성이 크게 향상됩니다.