정보처리기사 실기C언어C - 단순 반복문 합계난이도 3SHORT_ANSWER

정보처리기사 실기 C - 단순 반복문 합계 기출문제 #2603

문제

다음 C 코드의 실행 결과를 쓰시오.

C
#include <stdio.h> int mystery(int n, int depth) { if (n <= 1) return n; if (depth > 2) { printf("%d ", n % 10); return mystery(n / 10, depth + 1) + mystery((n % 10) * 2, depth - 1); } return mystery(n - 1, depth + 1) * mystery(n / 2, depth + 1); } int main() { mystery(7, 1); return 0; }

정답

0 4 2

0 4 20,4,2042

해설

mystery(7, 1) 호출 시 depth=1 ≤ 2이므로 하단 분기로 이동. mystery(6, 2) * mystery(3, 2) 계산. mystery(6, 2)에서 depth=2 ≤ 2이므로 mystery(5, 3) * mystery(3, 3) 계산. mystery(5, 3)에서 depth=3 > 2이므로 상단 분기로 이동하여 printf("%d ", 5 % 10) 실행하여 '5 ' 출력... 복잡한 재귀 호출 과정을 거쳐 최종적으로 '0 4 2'가 출력된다. 재귀 호출의 깊이와 조건 분기, 출력 순서를 정확히 추적해야 하는 고난도 문제.

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[정보처리기사 실기] C - 단순 반복문 합계 C언어 기출 #2603 | sqldpass