초보 반복문 중단 오류 확인부탁드려요
#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; }
한번 실행해 보시고 오류가 해결되지 않는다면 댓글 남겨 주세요