프로그래밍/C, C++

C언어 반복문 완벽 정복 가이드:심화편(for, while, do-while)

ridev0901 2024. 11. 27. 09:53
728x90
300x250

C언어 반복문 심화편(for, while, do-while)

 

반복문의 기초 복습

C언어에서 반복문은 특정 코드 블록을 여러 번 반복 실행하는 데 사용되는 중요한 제어 구조입니다. 이전 강의에서 다룬 반복문의 기본적인 개념을 간단히 복습해 보겠습니다.

  • while문: 주어진 조건이 참인 동안 코드 블록을 반복 실행합니다.
  • do while문: 코드 블록을 최소 한 번 실행하고, 이후 주어진 조건이 참인 동안 계속해서 반복 실행합니다.
  • for문: 초기화, 조건 검사, 증감식을 한 줄에 표현하여 반복 횟수가 정해져 있을 때 효과적으로 사용합니다.

2024.11.26 - [프로그래밍/C, C++] - C언어 반복문 완벽 정복 가이드:기초편(for, while, do-while)

 

C언어 반복문 완벽 정복 가이드:기초편(for, while, do-while)

C언어 반복문: 똑같은 작업을 반복하고 싶을 때!(for, while, do-while)이전 포스팅에서 조건문을 공부했습니다. if. else if, switch, 조건연산자 기초편과 심화편을 한번 보시고 반복문을 공부하면 어떨

ridev0901.tistory.com

 

 

이번 강의에서는 이러한 반복문들을 심층적으로 다루고, 다양한 예제를 통해 각 문법의 특징과 활용 방법을 익힐 것입니다.

 

while문 심화 예제

1. 팩토리얼 계산

#include <stdio.h>

int main() {
    int num, fact = 1;
    printf("정수 입력: ");
    scanf("%d", &num);

    while (num > 0) {
        fact *= num;
        num--;
    }

    printf("%d의 팩토리얼은 %d입니다.\n", num, fact);
    return 0;
}
코드를 사용할 때는 주의가 필요합니다.
 
  • 설명: while문을 이용하여 팩토리얼을 계산하는 예제입니다. num이 0보다 클 때까지 반복하며 fact에 num을 곱하고 num을 1씩 감소시킵니다.
  • int num, fact = 1;: num 변수에 사용자가 입력한 정수를 저장하고, fact 변수에 팩토리얼의 결과를 누적하여 저장합니다. 초기값은 1로 설정합니다.
  • printf("정수 입력: "); scanf("%d", &num);: 사용자에게 정수를 입력받아 num 변수에 저장합니다.
  • while (num > 0) { ... }: num이 0보다 클 동안 반복합니다. 즉, 입력받은 정수만큼 반복하게 됩니다.
  • fact *= num;: fact에 num을 곱하여 팩토리얼을 계산하고, fact에 다시 저장합니다.
  • num--;: num의 값을 1 감소시켜 다음 반복에서는 이전보다 1 작은 수를 곱하게 됩니다.

2. 소수 판별

#include <stdio.h>
#include <math.h>

int main() {
    int num, i;
    printf("정수 입력: ");
    scanf("%d", &num);

    if (num <= 1) {
        printf("%d는 소수가 아닙니다.\n", num);
    } else {
        for (i = 2; i <= sqrt(num); i++) {
            if (num % i == 0) {
                printf("%d는 소수가 아닙니다.\n", num);
                return 0;
            }
        }
        printf("%d는 소수입니다.\n", num);
    }
    return 0;
}
코드를 사용할 때는 주의가 필요합니다.
 
  • 설명: while문 대신 for문을 사용하여 소수를 판별하는 예제입니다. num의 제곱근까지의 모든 정수로 나누어 떨어지는지 확인하여 소수 여부를 판단합니다.
  • for (i = 2; i <= sqrt(num); i++): i를 2부터 num의 제곱근까지 1씩 증가시키며 반복합니다. 왜냐하면 어떤 수 num이 합성수라면, 그 약수 중 하나는 반드시 sqrt(num) 이하이기 때문입니다.
  • if (num % i == 0): num을 i로 나누었을 때 나머지가 0이면 num이 i로 나누어 떨어진다는 의미이므로 소수가 아닙니다.
  • printf("%d는 소수가 아닙니다.\n", num); return 0;: num이 소수가 아니라는 메시지를 출력하고 프로그램을 종료합니다.

 

do while문 심화 예제

1. 메뉴 선택 프로그램

#include <stdio.h>

int main() {
    int choice;

    do {
        printf("메뉴를 선택하세요:\n");
        printf("1. 더하기\n");
        printf("2. 빼기\n");
        printf("3. 곱하기\n");
        printf("4. 나누기\n");
        printf("0. 종료\n");
        scanf("%d", &choice);

        // 선택한 메뉴에 따른 처리
    } while (choice != 0);

    return 0;
}
코드를 사용할 때는 주의가 필요합니다.
 
  • 설명: do while문을 이용하여 메뉴를 선택하고, 선택한 메뉴에 따라 다른 작업을 수행하는 프로그램입니다. 최소 한 번은 메뉴를 출력하고 사용자의 입력을 받습니다.
  • do { ... } while (choice != 0);: do-while 문은 최소 한 번은 실행되고, 조건이 거짓이 될 때까지 반복합니다. 여기서는 사용자가 0을 입력할 때까지 메뉴를 계속 출력하고 선택을 받습니다.

 

for문 심화 예제

1. 구구단 출력

#include <stdio.h>

int main() {
    int i, j;

    for (i = 2; i <= 9; i++) {
        for (j = 1; j <= 9; j++) {
            printf("%d x %d = %d\n", i, j, i * j);
        }
        printf("\n");
    }

    return 0;
}
코드를 사용할 때는 주의가 필요합니다.
 
  • 설명: 이중 for문을 이용하여 구구단을 출력하는 예제입니다.
  • 이중 for문: 두 개의 중첩된 for문을 사용하여 2단부터 9단까지의 구구단을 출력합니다.
  • 외부 for문: i는 2부터 9까지 변하며, 각 단을 나타냅니다.
  • 내부 for문: j는 1부터 9까지 변하며, 각 단의 곱셈 결과를 출력합니다.

2. 피보나치 수열

#include <stdio.h>

int main() {
    int n, first = 0, second = 1, next;

    printf("피보나치 수열의 항 수 입력: ");
    scanf("%d", &n);

    printf("피보나치 수열: ");
    for (int i = 0; i < n; ++i) {
        printf("%d ", first);
        next = first + second;
        first = second;
        second = next;
    }

    return 0;
}
코드를 사용할 때는 주의가 필요합니다.
 
  • 설명: for문을 이용하여 피보나치 수열을 출력하는 예제입니다.
  • for (int i = 0; i < n; ++i): i를 0부터 n-1까지 1씩 증가시키며, 피보나치 수열의 항을 출력합니다.
  • printf("%d ", first);: 현재 first에 저장된 피보나치 수를 출력합니다.
  • next = first + second; first = second; second = next;: 다음 피보나치 수를 계산하여 next에 저장하고, first와 second를 업데이트합니다.

 

결론

이번 강의에서는 while문, do while문, for문의 심화 예제를 통해 다양한 문제를 해결하는 방법을 학습했습니다. 각 반복문의 특징을 이해하고, 적절한 상황에 맞게 사용하여 효율적인 프로그램을 작성할 수 있도록 연습해야 합니다.

다음 강의에서는 배열에 대해 학습하며, 반복문과 배열을 함께 활용하여 더욱 복잡한 문제를 해결하는 방법을 알아볼 것입니다.

728x90
300x250