edu-스토리

질문


#include<stdio.h>

int main(void)

{

 int answer = 0;

 int input = 0;

 printf("UP and DOWN 게임입니다. 숫자 A를 지정하세요.\n");

 scanf("%d",&answer);

 printf("A가 지정되었습니다. 정답을 맞추어 보세요.\n");

 printf("(정답이 보여도 모른척 하세요.. 아직 거기까지는 할 줄 모르니까요.)\n");

 scanf("%d",&input);

 while(input!=answer)

 {    

  if(input>answer)

   printf("Down!\n");

  else if(input<answer)

   printf("Up!\n");

     else

   printf("정답!");

  scanf("%d",&input);

  

 }

 printf("정답!");

 return 0;

}



제가 재미로 만들어본 소스인데요..


문제없이 잘 작동되긴 합니다. 


그런데 저기 while문 다음에 정답!을 출력하도록한 문장이 A값을 한번에 맞추었을때 정답!을 출력하기 위해서 while 바깥에다가 써준건데요...


제가 만들어놓고 생각해보니 한 번에 정답을 맞추는 경우가 아니라면.. 와일문 안에 있는 마지막else의 출력문인 정답!을 출력하고 while문의 반복은 끝나게 되겠죠. 


근데 그러고나면 와일문 바깥에 있는 정답!이 또 출력이 되어야 하는게 맞지 않나요??


그런데 정답!은 한 번만 출력이 된다는 말이지요..


왜 그럴까요..??


------------------------------------------------


안녕하세요. 강의스토리입니다.


답변 


#include<stdio.h>

int main(void)

{

 int answer = 0;

 int input = -1;

 printf("UP and DOWN 게임입니다. 숫자 A를 지정하세요.\n");

 scanf("%d",&answer);

 printf("A가 지정되었습니다. 정답을 맞추어 보세요.\n");

 printf("(정답이 보여도 모른척 하세요.. 아직 거기까지는 할 줄 모르니까요.)\n");

 

 while(input!=answer)

 {

   printf("예상되는 값 입력 : ");

   scanf("%d",&input);

  if(input>answer)

   printf("Down!\n");

  else if(input<answer)

   printf("Up!\n");

     else 

   printf("정답!");

 }

 

 return 0;

}


질문하신 내용을 제가 잘 이해했는지는 모르지만

scanf()를 한번 더 진행한 것 때문에 문제가 되었던 걸 말씀하신 것 같네요.

코드를 수정해 보았으니 참고하시길 바랍니다.