<P><SPAN style="COLOR: #0055ff">#include</SPAN> <stdio.h></P> <P><SPAN style="COLOR: #0055ff">void</SPAN> ejin();<BR><SPAN style="COLOR: #0055ff">int</SPAN> main (<SPAN style="COLOR: #0055ff">void</SPAN>)<BR>{<BR> <SPAN style="COLOR: #0055ff">int</SPAN> ee;<BR> <SPAN style="COLOR: #0055ff">int</SPAN> n=1;<BR> printf("input decimal >> ");<BR> <BR> <SPAN style="COLOR: #0055ff">for</SPAN> (ee;<SPAN style="COLOR: #ff0000">scanf("%d",&ee)&&ee>0</SPAN>;n++)<BR> {<BR> ejin(ee);<BR> printf("\n\ninput decimal_%d >> ",n);<BR> }</P> <P style="MARGIN-LEFT: 2em">printf("The end\n");<BR> <SPAN style="COLOR: #0055ff">return</SPAN> 0;</P> <P>}</P> <P><BR><SPAN style="COLOR: #0055ff">void</SPAN> ejin(<SPAN style="COLOR: #0055ff">int</SPAN> a)<BR>{<BR> int bin;</P> <P style="MARGIN-LEFT: 2em"> if(a>0)<BR> {<BR> bin=a%2;<BR> a/=2;<BR> ejin(a);</P> <P style="MARGIN-LEFT: 4em"> printf("%d", bin);</P> <P style="MARGIN-LEFT: 2em"> }</P> <P>}</P> <P>// 프로그램 종료!--------------------------------------------------------------------------------------------</P> <P>위 프로그램은 10진수를 넣어서 2진수를 뽑아내기 위해 재귀함수를 쓰는 프로그램입니다.</P> <P>그리고 그 과정에서 0보다 큰수일 경우 반복하여 출력하고, 0보다 작거나 같은 수를 넣으면 프로그램을 종료하도록 해야 합니다.</P> <P>ex) 실행화면------------------------</P> <P>input decimal >> 10</P> <P>1010</P> <P> </P> <P>input decimal_1 >> 0</P> <P>The end</P> <P>-----------------------------------</P> <P>일단 위 코딩은 이상이 없이 잘 돌아갑니다.</P> <P> </P> <P>그런데 여기서 <SPAN style="COLOR: #ff0000">빨간색</SPAN> 부분이 문제입니다.</P> <P>처음에 scanf("%d",&ee) > 0으로 생각하고 실행을 했는데... 0을 넣어도 종료가 안되는군요.</P> <P>그래서 그밑에 if(ee==0) break; 를 추가하면 멈추는거로 보아 scanf의 ee값에 0이 안들어가는거 같은데... 왜 그런걸까요 ?</P> <P>도대체 어떤것으로 출력되기에 0을 인식 못하여 &&ee를 추가해 줘야 하는건가요 ?</P> <P>(책에서 scanf~~~~&&ee>0 값을 쓰는것을 보고 위와같이 수정은 하였는데 정확한 이유를 모르겠네요)</P> <P> </P> <P>답변해주시면 감사하겠습니다 엉엉 ㅠ</P> <P> </P> <P> </P>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.