목차
저번시간에는 조거문에대해 설명했죠? 이번시간은 반복문에대해 설명합니다. 조건문과 반복문은 정말 많이 사용되는 문법이니 어제 내용과 오늘 포스팅 내용을 꼭 이해하시고 넘기시길 바랍니다.
반복문은 프로그래밍에서 특정 작업을 반복적으로 수행할 때 사용됩니다. C 언어에는 for, while, 그리고 do-while 반복문이 있으며, 각각의 사용 방법과 특성을 이해하는 것이 중요합니다
While문
while 문은 조건이 참인 동안 코드 블록을 반복해서 실행하는 제어 구조이고, 조건이 거짓이 되면 반복이 종료됩니다. while 문을 사용하면 반복 횟수가 명확하지 않은 경우에도 반복을 제어할 수 있습니다. 다음은 while 문의 기본 구조와 예제입니다:
while (조건) {
// 실행할 코드 블록
}
#include <stdio.h>
int main() {
int i = 0; // 초기화
while (i < 10) { // 조건
printf("i의 값: %d\n", i);
i++; // 증감
}
return 0;
}
1. 초기화: int i = 0; 변수를 초기화합니다.
2. 조건: while (i < 10) 조건이 참이면 반복을 계속합니다. 조건이 거짓이면 반복이 종료됩니다.
3. 코드 블록 실행: printf("i의 값: %d\n", i); 현재 i의 값을 출력합니다.
4. 증감: i++; 변수를 1씩 증가시킵니다.
위 예제에서는 i가 10보다 작을 동안 while 문이 계속 실행되며, i가 10이 되면 반복이 종료됩니다.
무한 루프
조건이 항상 참인 경우, while 문은 무한 루프가 될 수 있습니다. 이런 경우 반복을 종료하려면 코드 블록 내에서 조건을 변경하거나 break 문을 사용하여 반복을 종료해야 합니다.
#include <stdio.h>
int main() {
int i = 0;
while (1) { // 무한 루프
printf("i의 값: %d\n", i);
i++;
if (i == 10) {
break; // 반복 종료
}
}
return 0;
}

위 예제에서는 i가 10이 되면 break 문을 사용하여 무한 루프를 종료합니다.
만약 break이없다면 어떻게될까요?

보시는것처럼 i의값은 1씩 무한대로 더해지는 무한루프에 빠지게됩니다.
실습예제
-while문을 이용해 사용자가 입력하는 정수 5개를 입력받고 그 합을 구하라.
#include <stdio.h>
int main() {
int n1, count=0, sum;
while(count<5){
count++;
printf("정수 5개를 차례로 입력하시오:");
scanf("%d",&n1);
sum = sum + n1;
}
printf("5개 정수의 합은 %d입니다.\n", sum);
return 0;
}

1. int n1, count = 0, sum;: 변수들을 선언합니다. n1은 사용자로부터 입력받을 정수, count는 입력받은 정수의 개수를 세는 변수로 초기값은 0입니다. sum은 정수의 합을 저장할 변수입니다 (초기화해야 합니다).
2. while (count < 5) {: count가 5보다 작을 동안 반복문이 실행됩니다.
3. count++;: count를 1씩 증가시킵니다.
4. printf("정수 5개를 차례로 입력하시오: ");: 사용자에게 정수를 입력하라고 요청합니다.
5. scanf("%d", &n1);: 사용자가 입력한 정수를 n1에 저장합니다.
6. sum = sum + n1;: 입력된 정수를 sum에 더합니다.
7. printf("5개 정수의 합은 %d입니다.\n", sum);: 5개의 정수의 합을 출력합니다.
for문
while문과 논리는 같지만 문법구조만 다릅니다. 로직은 거의 유사하니 습득하는데 어려움은 없을거에요.
for (초기화; 조건; 증감) {
// 반복할 코드
}
#include <stdio.h>
int main() {
int i;
for (i = 1; i <= 10; i++) {
printf("%d\n", i);
}
return 0;
}
for문에서의 조건은 while의 break;연산과 동일합니다. 조건문을 제대로 정의해줘야 무한루프에 빠지지 않으니 유의하는것이 좋겠죠?
실습예제
1부터 n가지 세제곱 값을 화면에 출력하기
int main(void) {
int i,n;
printf("정수를 입력하세요:");
scanf("%d", &n);
printf("====================\n");
printf(" i i의세제곱 \n");
printf("====================\n");
for (int i = 1; i <= n; i++) {
printf("%5d --> %5d\n", i, i * i * i);
}
return 0;
}

마지막으로 while문과 for문을 팩토리얼 연산 프로그램을 이용해 정리해보겠습니다.
int main(void) {
long fact = 1;
int n;
printf("정수를 입력하세요:");
scanf("%d", &n);
// 팩토리얼 연산 while문을 활용해서
int i = n;
while (i > 0) {
fact = fact * i;
i--;
}
printf("%d의 팩토리얼은 %ld입니다.\n", n, fact);
return 0;
}
int main(void) {
long fact = 1;
int i, n;
printf("정수를 입력하세요:");
scanf("%d", &n);
//팩토리얼 연산 for문을 활용해서
for (i = n; i > 0; i--) {
fact = fact * i;
}
printf("%d 는 %d입니다.\n", n, fact);
return 0;
}
결과값은 똑같이 나옵니다. 두코드를 비교해보며 정리해보세요!
'IT' 카테고리의 다른 글
기초컴퓨터프로그래밍 C언어(7)-중첩반복문、삼각형 별찍기 (0) | 2025.01.06 |
---|---|
c언어 랜덤숫자(rand()함수) (0) | 2025.01.06 |
기초컴퓨터프로그래밍 C언어(5)-조건문 (3) | 2025.01.02 |
스마트그리드란? - 포스터 공모전(1) (1) | 2025.01.02 |
기초컴퓨터프로그래밍 C언어(4)-수식과연산자 (1) | 2024.12.31 |