게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C언어 재귀함수 질문좀....(간단한 것!!!)
게시물ID : computer_80366짧은주소 복사하기
작성자 :
추천 : 0
조회수 : 437회
댓글수 : 8개
등록시간 : 2013/03/08 23:21:56

#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 값을 쓰는것을 보고 위와같이 수정은 하였는데 정확한 이유를 모르겠네요)

 

답변해주시면 감사하겠습니다 엉엉 ㅠ

 

 

꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호