iOS/정보처리기사

[정보처리기사] C언어 - for, while, do~while 차이 모르겠다면..(for while차이, for while복합문제)

Chafle 2022. 5. 30. 19:25
반응형

조건을 지정해서 반복해서 돌려야 하는 경우에는 세 가지 구문이 있다.

  • 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<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문 진행하는 순서

초기식->조건식-> 조건이 맞으면 수행하는 작업 수행->증감식 수행

반응형