Re: 11.7 심사문제 문의
, 도장_ 관리자님이 작성문제가 원하는 입력 방식은 다음과 같습니다.
10 1.234567 a
문제가 원하는 출력 방식은 다음과 같습니다.
10
1.234567
a
실행했을 때의 화면은
quiz.exe는 예시입니다. 프로젝트 이름에 따라 실행 파일 이름은 다릅니다. 경로도 다릅니다.C:\project>quiz.exe10 1.234567 a10 1.234567 a
문의한 코드의 화면은 다음과 같습니다.
C:\project>quiz.exe
정수를 입력하세요 : 10
10
실수를 입력하세요 : 1.234567
1.234567
문자를 입력하세요 :
심사문제는 텍스트 일치로 판단합니다. 따라서 "정수를 입력하세요" 같은 메시지는 출력하면 안 됩니다.
문자 입력은 안 됩니다. 실패하고 있습니다. 이는 입력 버퍼라는 존재 때문에 그렇습니다. 입력 버퍼 때문에 scanf와 printf를 번갈아가며 쓰면 문제가 발생합니다. 그래서 예제를 보면 항상 scanf를 쓰고, printf를 나중에 몰아서 쓰는 구조로 되어 있습니다. 독자는 이 구조를 답습할 것을 전제로 하고 있습니다.
입력버퍼의 동작은 UNIT 11까지의 학습으로는 설명하기 어렵습니다. 해당 부분은 85.20 입출력 버퍼 활용하기에서 설명하고 있습니다. 즉, 전체를 다 학습하고, C 언어에 대한 이해도가 쌓여야 이해할 수 있는 내용이기에 마지막에 설명하고 있습니다.(입력 버퍼에 대해 설명하지 않는 입문서도 많습니다.)
scanf는 1번만 사용하면 됩니다. scanf를 1번만 사용해서 여러 개를 입력받는 방법은 UNIT 11.6 연습문제:한 번에 정수 세 개 입력받기에서 설명하고 있습니다.
UNIT 11의 구성을 보시면 11.1 정수 입력받기는 데이터를 1개 입력 받는 방법이고, 11.2는 한 번에 정수 2개 입력받기입니다. 11.3은 실수 입력, 11.4는 문자 입력입니다. 그리고 11.6은 정수 3개 입력받기입니다.
11.7은 정수, 실수, 문자를 한 번에 입력 받는 문제입니다.
한 번에 여러 값을 입력받는 방법은 11.1 -> 11.2 -> 11.6으로 1개, 2개, 3개 입력 받는 방법을 차례대로 심화해서 보여주고 있습니다.
정수뿐 아니라 문자나 실수도 한 번에 입력받을 수 있습니다.
즉 11.7은 11.1~11.6까지 배운 내용을 종합해서 풀이하게 되어 있습니다.
UNIT 11을 반복해서 읽어보고, 예제를 살펴보면 충분히 풀 수 있습니다.