KU COSE101 2018기말고사 2번 문제

less than 1 minute read

             
2016 기출 1번 2번 3번 4번 5번  
2017 기출 1번 2번 3번 4번 5번  
2018 기출 1번 2번 3번 4번 5번 6번

다음 프로그램의 출력을 작성하시오.

#include<stdio.h>

void mystery(int n)
{
  if(n!=0){
    mystery(n/10);
    printf("%d",!(n%2));
  }
}

int main()
{
  mystery(23594);
  return 0;
}

정답
10001

- mystery(23594)를 실행하면 재귀함수로 계속 들어간다.
  - mystery(2359);
    - mystery(235);
      - mystery(23);
        - mystery(2);
          - mystery(0); --> if문 들어가지 않고 바로 return
        - n%2가 0이므로, 1을 출력
      - n%2가 1이므로, 0을 출력
    - n%2가 1이므로, 0을 출력
  - n%2가 1이므로, 0을 출력
- n%2가 0이므로, 1을 출력

따라서 10001이 출력된다.

Comments