아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
기민한비둘기105
기민한비둘기10521.02.15

초보 반복문 중단 오류 확인부탁드려요

#include <stdio.h>

#include <ctype.h>

int main(void)

{

int c, Q = 0;

while ((c = getchar()) != Q)

{

if (isupper(c))

c = tolower(c);

printf("%c", c);

}

return 0;

}

여기서 Q를 입력해도 반복문 중단이 안됩니다.

55글자 더 채워주세요.
답변의 개수3개의 답변이 있어요!
  • 안녕하세요!

    질문에 작성해주신 코드를 확인해봤는데요~

    지금 Q를 입력해도 반복문 중단이 안되신다는건 콘솔 입력에 문자 Q를 입력했을 때 종료가 안된다는 말씀 맞으시겠죠?

    코드를 보면 (c=getchar()) != Q 라는 종료 조건을 넣어 두셨네요~ 근데 그 윗줄에 보면 int Q는 0으로 초기화 되어있는걸 볼 수 있습니다. 따라서 입력된 값이 int 형의 0이어야 저 조건에 맞아 종료되게 되는데요 getchar은 문자 입력이기 때문에 0을 입력해도 char 형태의 '0' 으로 받아지기 때문에 종료가 되지 않을겁니다.

    만약 문자 Q를 입력했을 때 종료시키고 싶으시다면 Q를 'Q'로 변경해주시면 정상 작동됩니다.

    문자를 표현할 때 따옴표가 빠지게 되면 변수로 인식하게 돼서 그렇습니다~

    만약 변수 Q와 비교하고 싶다면 char Q = 'Q'; 로 선언해두어도 되겠네요~

    그럼 좋은 하루 되세요!


  • #include <stdio.h> #include <ctype.h> int main(void) { int c, Q = 0; <==== int c, Q = 81; 이렇게 고쳐야 합니다 81은 asc code 값으로 대문자 Q 를 나타냅니다. while ((c = getchar()) != Q) { if (isupper(c)) c = tolower(c); printf("%c", c); } return 0; } 여기서 Q를 입력해도 반복문 중단이 안됩니다.


  • #include <stdio.h> #include <ctype.h> int main(void) { //int c, Q = 0; //while ((c = getchar()) != Q) //변수 Q는 0으로 초기화된 변수이며 문자 'Q'가 아닙니다. //즉, 입력된 값을 변수 Q의 값인 0과 비교할 뿐입니다. //아래와 같이 수정하시면 됩니다. char c; while ((c = getchar()) != 'Q') { if (isupper(c)) c = tolower(c); printf("%c", c); } return 0; }

    한번 실행해 보시고 오류가 해결되지 않는다면 댓글 남겨 주세요