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