기초다지기 입력 자가진단8 > 자유게시판



정올게시판

커뮤니티

정올소식
자유게시판
질문게시판
자주하는질문(FAQ)

기초다지기 입력 자가진단8

페이지 정보

작성자 김동철(kdch0823) (211.♡.245.180) 작성일18-10-27 13:24 조회443회 댓글2건

본문


#include <stdio.h>

int main(void)

{

 double x,y;
 char c;

 scanf("%lf", &x);
 scanf("%lf", &y);
 scanf("%c", &c);
 
 printf("%.2lf\n",x);
 printf("%.2lf\n",y);
 printf("%c", c);

 return 0;

}

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

위와 같이 올렸을 때에는 마지막 char값이 출력되지 않아서 틀립답이라는 결과를 받았는데

 

 

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

#include <stdio.h>

int main(void)

{

 double x,y;
 char c;

 scanf("%lf", &x);
 scanf("%lf", &y);
 scanf(" %c", &c);
 
 printf("%.2lf\n",x);
 printf("%.2lf\n",y);
 printf("%c", c);

 return 0;

}-

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

세번째 scanf에서 띄어쓰기 하나 하니까 제대로 출력이되고 정답이라고 나옵니다.

 

 

dev-c에서 컴파일 해보니 첫번째의 경우는  char값의 입력자체가 실행되지 않는 것을 알게 되었습니다.

위에서 뭐가 잘못되었길래 char값이 입력,출력이 되지 않는건가요?
추천 1

댓글목록

홍형엽님의 댓글

홍형엽 아이피 218.♡.35.1 작성일

scanf(" %c",&c);
라고 해주셔야 에러가 안납니다
char에서나는 에러네요..
프로그램이 완벽하지 않아 띄어쓰기로 입력을 구분해줘야 합니다.

하동훈님의 댓글

하동훈 아이피 220.♡.104.168 작성일

첫 번째 소스 코드를 실행해서 출력을 다시 한번 확인해보시기 바랍니다.

한줄이 내려와 있지 않나요?

저도 예전에 그 똑같은 문제에 대해서 참 답답해 했는데 책을 자세히 보시면 scanf("%c",&c);에 %c를 그대로 쓰면 모든 문자를 입력받게 됩니다.

말그대로 입력받는 공백이나 엔터나 탭을 포함한 모든 문자를 그대로 입력받습니다.

그런데 %c를 다음과 같이 뛰어쓰게되면 scanf(" %c",&c); 공백, 엔터, 탭들은 무시하게 됩니다.

위의 첫 번째 소스 코드의 문제와 같이 엔터가 출력되는 이유는 두 번째 질문인 몸무게를 입력한 후 엔터를 누르면 그 몸무게를 입력한 후 누른 엔터가 버퍼에 저장되어 있다가 이름을 입력받을 때 버퍼에 내용이 있으므로 새로 묻지않고 그대로 퍼버에 있는 내용을 char형 변수 c에 받아들여져서 엔터가 마지막 출력되는 것입니다.

결국 컴퓨터는 짜여진 소스 코드대로 정상으로 작동한 것입니다.


HancomEducation E-mail : hancomc@hotmail.com, comkiwer@naver.com Tel : 070-7163-5782 FAX : 031-388-0996 정올소개 이용약관 개인정보처리방침
경기도 안양시 동안구 호계동 1065-10 협성골드프라자 601호, 경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호
Copyright@2010-2015 jungol. All right reserved.