C 언어 문제 뭐가 틀린지 잘 모르겠습니다.

조회수 1333회

The purpose of the following program is to check input. It is only supposed to accept a value between 0 and 20, and it should continually ask for input until the correct numbers are entered. However, there is a bug in it.

include

define TRUE 1

define FALSE 0

int main(void) { int correct, inputint;

inputint = -1;
correct = FALSE;
while (!correct) {
    if (0 < inputint < 20) {
        printf("Thank you.\n");
        correct = TRUE;
    } else {
        printf("Enter an integer ");
        printf("between 0 and 20:  ");
        scanf("%d", &inputint);
    }
}
return 0;

}

a. Fix the bug so that the program behaves as stated above.

영어책에 있는 문제인데요. 숫자적는게 먼저 나오고 그걸로 판별 하는건 알겠는데 그걸 나오게 하려면 어떻게 해야할지 모르겠습니다. 현재 출력은 그냥 thank you 가 나옵니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • if(0 < inputint && inputint < 20) 로 수정하면 될거같아요 이예진 2018.1.10 18:33

2 답변

  • 짐작으로는... if ( 0 < what < 20 ) 이 조건문이 버그인 것 같군요

    저렇게 적으면 인간이 직관적으로 생각하는 것처럼 'what 이 0 과 20 사이의 값인지' 확인하는게 아니라 앞의 비교연산자를 먼저 수행하고, 그 결과를 가지고 뒤의 비교연산자를 수행하게 될 것 같네요.

    먼저 0 < what 을 비교, 0 < -1 이니까 False 이므로 0, 그리고 0 < 20 을 비교, 이건 당연히 True 가 됩니다.

    그래서 아래 else문으로 들어가지 않고 바로 Thank You 문장을 출력하는 겁니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • if((0 < inputint) || (inputint < 20)) 로 수정하셔야 할 것 같아요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)