조건을 지정해서 반복해서 돌려야 하는 경우에는 세 가지 구문이 있다.
- for문
- while문
- do-while문
for문
정해진 횟수만큼 반복
while문
조건이 만족하는 동안 반복
do~while문
무조건 한번 수행 후 조건이 만족하는 동안 반복
for와 while이 헷갈릴텐데, 하단에 예제로 어떤 차이인지 알아보겠습니다.
for문 구조
for (초기식; 조건식; 증감식)
{
수행하는 작업
}
for문의 기본 수행 순서
0. 초기식 확인
1. 조건식 확인한다 -> (조건을 만족하면)
2. 수행하는 작업을 한 후
3. 증감식을 수행한다.
다시 1번으로 돌아가서 조건이 만족할 때까지 수행한다.
조건이 거짓이면 for문을 빠져나온다.
for ex.
#include<stdio.h>
int main(){
int j;
int sum = 0;
for(j = 2; j<= 70; j+=5)
sum = sum + 1
printf("%d", sum);
}
해설
수행순서
for(j = 2; ①j<= 70; ③ j+=5)
②sum = sum + 1
① 조건 | ③ j | ② sum |
초기값 | 2 | 0 |
j<=70->참 -> sum=sum+1 | 2+5 = 7 | 0+1 = 1 |
7<=70->참 -> sum = sum +1 | 7+5 = 12 | 1+1 = 2 |
12<=70->참 -> sum = sum +1 | 12+5 = 17 | 2+1 = 3 |
17<=70->참 -> sum = sum +1 | 17+5 = 22 | 3+1 = 4 |
22<=70->참 -> sum = sum +1 | 22+5 = 27 | 4+1 = 5 |
27<=70->참 -> sum = sum +1 | 27+5 = 32 | 5+1 = 6 |
32<=70->참 -> sum = sum +1 | 32+5 = 37 | 6+1 = 7 |
37<=70->참 -> sum = sum +1 | 37+5 = 42 | 7+1 = 8 |
42<=70->참 -> sum = sum +1 | 42+5 = 47 | 8+1 = 9 |
47<=70->참 -> sum = sum +1 | 47+5 = 52 | 9+1 = 10 |
52<=70->참 -> sum = sum +1 | 52+5 = 57 | 10+1 = 11 |
57<=70->참 -> sum = sum +1 | 57+5 = 62 | 11+1 = 12 |
62<=70->참 -> sum = sum +1 | 62+5 = 67 | 12+1 = 13 |
67<=70->참 -> sum = sum +1 | 67+5 = 72 | 13+1 = 14 |
72<=70 ->거짓 | 72 | 거짓이니까 14그대로 출력 |
sum = 14
while문 구조
while(조건)
{
수행하는 작업
}
for ex1
int i = 0;
while(i<3)
{
printf("i = : %d₩n", i);
i++
}
printf("sum = : %d₩n",i);
해설
조건 i<3 | i | i++ |
0<3-> 참 | 0 | 1 |
1<3 -> 참 | 1 | 2 |
2<3 -> 참 | 2 | 3 |
3<3 ->거짓 | 3 | 거짓이므로 수행 X |
printf("sum = :%d₩n", i)
sum = 3
for ex2.
#include<stdio.h>
int main(){
int count = 2;
int sum = 0;
while(count<=10) {
sum += count;
count += 2;
}
printf("%d", sum);
}
①조건 count <= 10 | ③count = count + 2 | ②sum=sum+count |
초기값 | 2 | 0 |
2<=10 ->참 | 2 + 2 = 4 | 0+2 = 2 |
4<=10 ->참 | 4 + 2 = 6 | 2+4 = 6 |
6<=10->참 | 6 + 2 = 8 | 6+6 = 12 |
8<=10 ->참 | 8 + 2 = 10 | 12 + 8 = 20 |
10<=10 -> 참 | 10 + 2 = 12 | 20 + 10 = 30 |
12<= 10-> 거짓 | 거짓이니 수행 X | 거짓이니 수행 X |
sum = 30
do ~ while문 구조
do
{
수행하는 작업
}
while (조건)
while조건이 참이든 거짓이든 while이 등장하기 전에는 무조건 한번 수행한다는 특징이 있다.
do ~ while ex.
int i = 3;
do
{
printf("i = %d₩n", i);
i++;
}
while(i<3);
printf("sum = %d₩n", i);
i | printf i | i++ | 조건 i<3 |
3 | 3 | 4 | 4<3 -> 거짓 |
답
i = 3
sum = 4
☆☆☆☆☆☆ for, while문 복합 문제 ☆☆☆☆☆☆
#include<stdio.h>
void main(){
int a, b;
a = 2;
while(a-- > 0) {
printf("a = %d₩n", a);
}
for(b = 0; b<2; b++ ) {
printf("a = %d₩n", a++);
}
}
해설
a | a-- >0 (--가 뒤에있으니까 먼저 조건 판단) | a-- | b | 조건 b<2 | a++ | b++ |
2 | 2>0 -> 참 | 1 | ||||
1 | 1>0 -> 참 | 0 | ||||
0 | 0>0 -> 거짓이므로 while문을 빠져 나온다. | -1 (while문을 빠져나오면서 --는 진행함 | ||||
-1 | 0 | 0<2->참 | -1 (++가 뒤에있으므로 -값 현재 a값 선 출력 하고 증가 시킨다.) | 1 | ||
0 | 1 | 1<2 ->참 | 0 (0출력 먼저 이후 a++) | 2 | ||
1 | 2 | 2<2 -> 거짓 (거짓이므로 for문을 빠져나온다) |
거짓이므로 수행 X | 거짓이므로 수행 X |
답
a= 1
a = 0
a = -1
a = 0
※ 위 해설에서의 볼드체 해설
while문의 a-->0 조건 자체가 값을 비교 하는 순간 수행을 하는 것이므로 거짓이여도 식은 진행 했기 때문에 a--가 진행이 되고
for문은 초기값-> 비교-> 비교가 맞으면 실행, 틀리면 for문을 빠져나오는 형식이기 때문에 a++, b++도 수행을 안함.
※ 상단 while 예제인 ex1 에서는 조건에 증감식이 있는 것이 아니고 조건이 참일 때 식을 수행하는 과정에서 증감식이 있었고, 조건식이 거짓이였기 때문에 증감식을 수행 안했음
다시 한번 톺아보는 while구조 / for문 구조
while(조건)
{
수행하는 작업
}
for (초기식; 조건식; 증감식)
{
수행하는 작업
}
for문 진행하는 순서
초기식->조건식-> 조건이 맞으면 수행하는 작업 수행->증감식 수행
'iOS > 정보처리기사' 카테고리의 다른 글
[정보처리기사] C언어 - continue, break 개념과 for 반복문이 섞인 문제 박살내기 (feat. 다중for문) (0) | 2022.06.01 |
---|---|
[정보처리기사] C언어 - while과 if문이 같이 있는 문제 박살내기 (0) | 2022.06.01 |
[정보처리기사] C언어 - 제어문(if문, switch문) (0) | 2022.05.27 |
[정보처리기사] C언어 - 삼항연산자(조건연산자) 사용법 (0) | 2022.05.27 |
[정보처리기사] C언어 - 매크로(feat. 매크로를 적용한 비트연산문제) (0) | 2022.05.26 |