[while문에 의한 문장의 반복]
★ 반복문이란?
- 문자열 "Hello world!"를 출력하는 printf 함수 호출문을 총 10번 실행해줘.
- 이런 형태의 명령을 내릴때 반복문 사용
- C언어의 반복문 종류
- while문
- do~while문
- for문
★ while문은 반복을 명령하는 문장이다.
- while문은 특정 조건을 주고, 그것을 만족하는 동안, 특정 영역을 계속해서 반복하는 구조
- 이 예제는 num이 5보다 작을때까지 계속해서 "Hello Polibo"를 출력해주는 반복 구조임.
- 구조를 보면 python이랑 거의 비슷하게 느껴짐.
- while문 영역을 중괄호{}로 구분함.
- 예외로 반복의 대상이 하나의 문장이면 중괄호 생략 가능!!
#include <stdio.h>
int main() {
int num = 0; // 변수 num 선언 및 초기화
while(num < 5) // num 이 5보다 작을때까지 계속 반복
{
printf("Hello Polibo %d\n", num); // 출력
num++; // num이 1씩 커짐
}
return 0;
}

★ while문의 구성과 실행흐름의 세세한 관찰
- 먼저 dan, num 변수를 선언 및 초기화해줌.
- 몇 단의 구구단을 출력할건지 입력
- num이 10보다 작을 때까지 계속 반복해서 dan x num = dan*num 을 출력해줌.
- 반복때마다 num에 1을 더해줌.
#include <stdio.h>
int main() {
int dan = 0, num = 1;
printf("몇 단? ");
scanf("%d", &dan);
while(num < 10)
{
printf("%d x %d = %d\n", dan, num, dan*num);
num++;
}
return 0;
}

[do ~ while문에 의한 문장의 반복]
- while문과 do~while문의 차이점 : 반복의 조건을 검사하는 시점!
★ do~whlie문의 기본구성
- do~while문은 while문과 다르게 '반복조건'을 뒷부분에서 검사함!!!
- 즉, 반복조건에 해당하는지 뒤에서 검사하기 때문에, 반복영역을 최소한 한번은 실행함.
- (while문은 처음부터 반복조건에 해당하지 않으면 한번도 실행을 안함.)
- 바로 아래 예제를 보면, 그냥 while문에서는 반복조건에 해당하지 않아 실행되지 않아야 하는데, do~while문은 최소 한번은 실행되기 때문에, 출력된 이후 반복조건에 해당하지 않아 프로그램이 종료된 것을 볼 수 있음!!!!
- 요거 좀 신기한듯????
// do~while문
#include <stdio.h>
int main() {
int num = 5;
do
{
printf("Hello, Polibo!!\n");
num++;
} while (num<3);
return 0;
}

★ do~whlie문이 자연스러운 상황
- 문득 이런 생각이 들었음. while문이 있는데, 왜 굳이 do~while문이 있는거지???? 어떤 상황일때 사용하지???? 몹시 궁금함.
- 비슷한 역할을 하는데 굳이굳이 존재하는 이유가 몹시 궁금쓰,,,,,
- 책에는 아래 처럼 나와있는데,,,,,, 아직 이해안가윱,,,,
"그럼 언제 while문을 쓰고, 언제 do~while문을 쓰나요?"
"반복영역이 무조건 한 번 이상 실행되어야 합니다! 라는 상황에 쓰입니다!"
- 아래 예제를 보면 이게 이해가 된다고 하니까,,, 일단 작성해서 이해해보겠음!ㅎ
- 아래 예제는 0이 입력되기 전까지 정수를 게속 더해나가는 것임.
- while문을 쓰면 0이 입력되면 바로 종료 되지만, do~while문을 쓰면 최소한 한번은 실행되기 때문에 일단 0을 입력받고, 그 이후에 num != 0 조건에 해당하지 않기때문에, 프로그램이 종료되게 됨.
- 이런 경우에는 while문 보다 do~while문을 쓰는 것이 더 자연스러운것 같긴함.
// do~while문이 사용되는 경우
#include <stdio.h>
int main() {
int total = 0, num = 0;
do
{
printf("정수 입력(0 to quit): ");
scanf("%d", &num);
total += num;
} while (num != 0);
printf("합계: %d\n", total);
return 0;
}

[for문에 의한 문장의 반복]
★ for문의 구조와 이해
- 반복문을 위한 필수요소
- 1. 초기식 : 반복을 위한 변수 선언 및 초기화에 사용
- 2. 조건식 : 반복의 조건을 검사하는 목적으로 선언
- 3. 증감식 : 반복의 조건을 '거짓'으로 만드는 증가 및 감소연산
- for문을 사용하면 3요소를 한번에 나타낼 수 있음.
- 3개의 식이 모두 채워져있을 필요는 없음.
- 만약 조건식이 비워져 있으면, 무조건 '참'으로 인식됨 => 무한루프
for(초기식 ; 조건식 ; 증감식)
{
// 반복의 대상이 되는 문장들
}
- while문과 마찬가지로 반복 대상 문장이 1개이면, 중괄호 생략 가능
★ for문 기반의 다양한 예제
- 0이상, 사용자가 입력한 정수 이하의 값의 합을 출력하는 예제
#include <stdio.h>
int main()
{
int total = 0;
int i, num;
printf("0부터 num까지의 덧셈, num은?? ");
scanf("%d", &num);
for(i = 0 ; i <= num ; i++)
{
total += i;
}
printf("total = %d\n", total);
return 0;
}

- 사용자가 입력한 실수의 평균값을 출력하는 예제
- 실수의 입력은 0보다 작은 음의 실수 값이 입력될 때까지 계속되며, 입력을 마무리하기 위해서 마지막으로 입력된 음의 실수는 평균값 계산에서 제외
// RealMean.c
#include <stdio.h>
int main()
{
double total = 0.0;
double input = 0.0;
int num;
for(num = 0 ; input >= 0.0 ; num++) // 음의 실수가 아닌 경우 계속 반복됨.
{
total += input;
printf("실수를 입력하세요(minus to quit) : ");
scanf("%lf", &input);
}
printf("평균 : %f\n", total/(num-1)); // 음의 실수를 입력하면 for문이 끝나기 때문에 num-1을 해줌.
return 0;
}

★ for문의 중첩
- while 중첩과 다르지 않음~~~ 바로 예제로 넘어가보자구 ~!~!~!~!~!
- 구구단 전체를 출력하는 예제
// TwoToNineForVer.c (구구단 전체 출력 예제)
#include <stdio.h>
int main()
{
int dan, is;
for(dan = 2 ; dan < 10 ; dan++)
{
for(is = 1 ; is < 10 ; is++)
{
printf("%d x %d = %d ", dan, is, dan*is);
}
printf("\n");
}
return 0;
}

'C > 예습' 카테고리의 다른 글
[2025.03.09] (예습) 조건에 따른 흐름의 분기 (1) | 2025.03.09 |
---|---|
[2025.03.09] (예습) for문_연습문제 (2) | 2025.03.09 |
[2025.03.08] (예습) while문_연습문제 (2) | 2025.03.08 |
[2025.03.08] (예습) scanf 연습문제 풀이 (0) | 2025.03.08 |
[2025.03.08] (예습) 변수와 연산자 (0) | 2025.03.08 |