본문 바로가기
깨알 c언어

깨알 c언어 ch.16 ~ 20

by moca7 2024. 2. 22.

16. while문

17. do~while, for, while

18. while, if문

19. for, continue, break

20. 다중 for문, continue, break

 

 

 

16. while문

 

ㅁ while 구조

- while (조건)

{ 수행하는 작업들 }

 

ㅁ 문제

 

출력결과.

i = : 0

i = : 1

i = : 2

sum = : 3

 

ㅁ 문제

 

count가 2일 때, sum = 2, count는 4가 됨.        count가 4일 때, sum = 6, count는 6이 됨.

count가 6일 때, sum = 12, count는 8이 됨.       count가 8일 때, sum = 20, count는 10이 됨.

count가 10일 때, sum = 30, count는 12가 됨. 

출력결과. 30

 

 

17. do~while, for, while

 

ㅁ do~while 구조

do { 수행하는 작업들 } while (조건)

 

무조건 한번은 수행한다. 

 

ㅁ 예제

 

출력결과. 

i = 3

sum = 4

 

ㅁ 문제

 

출력결과

a = 1

a = 0

a = -1

a = 0

 

while도 작업 수행하고 다시 조건문으로 간다.

 

while조건 - 블록 - while조건 - 블록 - while조건까지 해야 한다. 고로 a= -1인 상태로 빠져나간다.

 

 

18. while, if문

 

ㅁ 문제

 

1) a = 75

2) a = 30

3) b = 15

4) a= 15

 

출력결과. 15 

이것도 while 블록안 작업을 수행하고 조건으로 가서 조건이 안맞으면 탈출.

 

 

19. for, continue, break

 

ㅁ 반복문 옵션

- continue: 더 이상 아래 문장을 실행하지 않고, 반복문 처음으로 돌아감.

- break: 반복문을 빠져나감. 

 

ㅁ 문제

 

%를 &라고 생각했음. 아님.

 

i=1일 때, &&의 왼쪽은 1이므로 참, &&의 오른쪽은 1이므로 참. continue 수행하므로 아래 sum 연산은 하지않고 반복문의 처음으로. 반복문의 처음으로 간다는 것은 증감식으로 감.

i=3일 때, &&의 왼쪽은 1이므로 참, &&의 오른쪽은 0이므로 거짓. sum = 3

i=5일 때, &&의 왼쪽은 1이므로 참, &&의 오른쪽은 2이므로 참. continue 수행하므로 아래 sum 연산은 하지않고 반복문의 처음으로. 

i=7일 때, &&의 왼쪽은 1이므로 참, &&의 오른쪽은 1이므로 참. continue 수행하므로 아래 sum 연산은 하지않고 반복문의 처음으로. 

i=9일 때, &&의 왼쪽은 1이므로 참, &&의 오른쪽은 0이므로 거짓. sum = 12

 

값이 있다는 건 참이다. 0은 거짓. 0이 아니면 참.

 

1 나누기 2는 몫은 0 나머지는 1. 1나누기 3은 몫은 0 나머지는 1.

7 나누기 2는 몫은 3 나머지는 1. 9 나누기 3은 몫은 3 나머지는 0.

 

 

20. 다중 for문, continue, break

 

ㅁ 다중 반복문

 

1) i=0이고 j=0일 때, 출력 i:0, j:0

2) i=0이고 j=1일 때, 출력 i:0, j:1

3) i=1이고 j=0일 때, 출력 i:1, j:0

4) i=1이고 j=1일 때, 출력 i:1, j:1

 

ㅁ continue

sum=0이라고 전제.

 

1) i가 0일 때, i가 1이 아니므로 continue는 수행하지 않고 sum 수행. sum은 1이 됨.

2) i가 1일 때, i는 1이므로 continue 수행. sum연산은 수행 안함. 반복문의 증감식으로 감. 

3) i가 2일 때, i는 1이 아니므로 continue는 수행하지 않고 sum 수행. sum은 2가 됨.

그리고 i는 3이 되고 더이상 for 조건식을 만족하지 않으므로 반복문 종료.

 

ㅁ break

sum=0이라고 전제.

 

1) i가 0일 때, i가 1이 아니므로 break는 수행하지 않고 sum 수행. sum은 1이 됨.

2) i가 1일 때, i는 1이므로 break 수행. 반복문 종료. 

i=1, sum=1로 끝.

 

break걸면 그 반복문 자체를 빠져나감. 다른 증감연산자 다 필요 없음. 중괄호 있는 블록을 아예 빠져나감.

 

ㅁ 문제

 

1) i는 1이고 j는 1일 때, sum이 1이 됨.           2) i는 1이고 j는 2일 때, sum은 2가 됨.

3) i는 1이고 j는 3일 때, continue 수행. 증감식으로 감.

4) i는 1이고 j는 4일 때, sum은 3이 됨.           5) i는 1이고 j는 5일 때, sum은 4이 됨. 

6) i는 1이고 j는 6일 때, continue 수행. 증감식으로 감.

7) i는 1이고 j는 7일 때, sum은 5가 됨.           8) i는 1이고 j는 8일 때, sum은 6이 됨.

9) i는 1이고 j는 9일 때, continue 수행. 증감식으로 감.

 

1) i는 2이고 j는 1일 때, sum이 7이 됨.           2) i는 2이고 j는 2일 때, sum은 8이 됨.

3) i는 2이고 j는 3일 때, continue 수행. 증감식으로 감.

4) i는 2이고 j는 4일 때, sum은 9이 됨.           5) i는 2이고 j는 5일 때, sum은 10이 됨. 

6) i는 2이고 j는 6일 때, continue 수행. 증감식으로 감.

7) i는 2이고 j는 7일 때, sum은 11이 됨.           8) i는 2이고 j는 8일 때, sum은 12이 됨.

9) i는 2이고 j는 9일 때, continue 수행. 증감식으로 감.

 

1) i는 3이고 j는 1일 때, sum이 13이 됨.           2) i는 3이고 j는 2일 때, sum은 14가 됨.

3) i는 3이고 j는 3일 때, continue 수행. 증감식으로 감.

4) i는 3이고 j는 4일 때, sum은 15이 됨.           5) i는 3이고 j는 5일 때, sum은 16이 됨. 

6) i는 3이고 j는 6일 때, continue 수행. 증감식으로 감.

7) i는 3이고 j는 7일 때, sum은 17이 됨.           8) i는 3이고 j는 8일 때, sum은 18이 됨.

9) i는 3이고 j는 9일 때, continue 수행. 증감식으로 감.

 

1) i는 4이고 j는 1일 때, 바로 그냥 break. sum=18이 아님.

 

continue도 break도 자기가 현재 속한 반복문에서만 적용. 이중 반복문일 경우 그 안에서 continue와 break하면 그 안의 반복문만 처음으로 돌아가거나 탈출하고 바깥의 반복문은 계속 돌아간다.

 

i는 1~9까지 9번 돌리는데, 한번 돌릴 때 마다 sum이 6씩 오른다. 그런데 9번 중 i가 4와 8일 때는 break로 안쪽의 반복문을 탈출하므로 7번 x 6 = 42. sum은 42다. 

 

'깨알 c언어' 카테고리의 다른 글

깨알 c언어 ch.26 ~ 30  (0) 2024.03.08
깨알 c언어 ch.21 ~ 25  (0) 2024.02.22
깨알 c언어 ch.11 ~ 15  (0) 2024.02.22
깨알 c언어 ch.6 ~ 10  (0) 2024.02.21
깨알 c언어 ch.1 ~ 5  (1) 2024.02.21