본문 바로가기
C 프로그래밍 C programming/수업

220306 do while문

by 윤시여 2022. 3. 12.

<do while문>

do문을 무조건 하고 while(조건문);을 시행한다. 조건이 참인동안 반복이 계속 된다. 

 

이 때 while문과 차이점while문은 조건에 안 맞으면 아예 실행되지 않지만, do while문은 적어도 1회 시행된다는 데에 있다. 책에서는 이 말을 반복 조건을 루프의 처음이 아니라 루프의 끝에서 검사한다는 것이 다르다고 표현한다.

do
{
  문장1;
  문장2;
  ...
} while(조건);

 

<숫자 추측게임 만들기>

 사용자가 답을 제시하면 프로그램이 자신이 저장한 정수와 비교하여 큰지 작은지만을 알려준다! 이를 토대로 숫자를 맞추는 게임을 코딩하는 건데 정말 재미있었고

 이거 진짜 말도 안되게 웃긴 실수가 나온다

27번 줄이 그 것이다. 물론 n++도 환장할 노릇이지만 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ user와 random이 같을 동안 반복합니다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ while문과 random이 같지 않으면 while문을 빠져나와 n을 더해줍니다ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
복습할 겸... 

인트형 변수 random, user, n을 선언해줍니다. random은 프로그램의 랜덤한 숫자(맞춰야하는)가 들어가는 자리이고, user는 사용자가 고른 숫자, n은 시도 횟수를 받게 됩니다. 
여기서 랜덤을 1에서 100 사이의 숫자로 한정하기 위해 100으로 나눈 나머지에 1을 더한 값으로 설정해주고 n은 0으로 초기화해줍니다. 
그리고  do while문 안 쪽 코드를 반복해주는데, 어디 한 번 맞춰 보거라 인간문을 출력한 후에 user에 정수를 받아줍니다. 
만약에 user에게 받아준 숫자가 random보다 크면 크구나를 출력하고, random보다 작으면 작구나를 출력한 뒤 시도횟수를 한 번 올려줍니다. 
그것을 user와 random이 같지 않을 동안 반복합니다. 

user와 random이 같아지면 while문을 빠져나오게 됩니다. 시도횟수와 함께 제법이구나를 출력해줍니다. 
진짜 여담이지만 이거 42인지 43인지 진짜 쫄렸다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 왠지 이번에 딱 맞추고 싶고 43으로 찍었고 그게 맞았음!!!!

 

여 담 으로 

굳이 꼼수를 부리지 않으면 이진 탐색의 원리에 최대 7번이면 누구나 숫자를 맞출 수 있다고 한다. 이건 범위를 계속 반으로 줄여나가면서 탐색하는 것이다. 가령 위에서부터 5와 53을 골랐다면 그 다음 숫자는 (6+52)/2=29...를 부르는 식이다. 

 

꼼수 쓰면 원리고 뭐고 사요나라임