728x90
300x250
C언어 반복문 심화편(for, while, do-while)
반복문의 기초 복습
C언어에서 반복문은 특정 코드 블록을 여러 번 반복 실행하는 데 사용되는 중요한 제어 구조입니다. 이전 강의에서 다룬 반복문의 기본적인 개념을 간단히 복습해 보겠습니다.
- while문: 주어진 조건이 참인 동안 코드 블록을 반복 실행합니다.
- do while문: 코드 블록을 최소 한 번 실행하고, 이후 주어진 조건이 참인 동안 계속해서 반복 실행합니다.
- for문: 초기화, 조건 검사, 증감식을 한 줄에 표현하여 반복 횟수가 정해져 있을 때 효과적으로 사용합니다.
2024.11.26 - [프로그래밍/C, C++] - C언어 반복문 완벽 정복 가이드:기초편(for, while, do-while)
이번 강의에서는 이러한 반복문들을 심층적으로 다루고, 다양한 예제를 통해 각 문법의 특징과 활용 방법을 익힐 것입니다.
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
'프로그래밍 > C, C++' 카테고리의 다른 글
# C언어 포인터(Pointer) 완벽 가이드 (0) | 2024.12.03 |
---|---|
C언어 배열 완벽 가이드 (2) | 2024.11.28 |
C언어 반복문 완벽 정복 가이드:기초편(for, while, do-while) (0) | 2024.11.26 |
C언어 조건문 완벽 정복 가이드: 심화편 (1) | 2024.11.25 |
C언어 조건문 완벽 정복 가이드: 기초편(if, else if, else, switch, 조건연산자) (1) | 2024.11.24 |