정보처리기사 실기C언어C - 재귀함수와 구조체난이도 5SHORT_ANSWER

정보처리기사 실기 C - 재귀함수와 구조체 기출문제 #205

문제

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

C
#include <stdio.h> struct Node { int data; struct Node* next; }; void print_reverse(struct Node* head, int depth) { if (head == NULL || depth <= 0) return; print_reverse(head->next, depth - 1); printf("%d ", head->data * depth); } int main() { struct Node n1 = {2, NULL}; struct Node n2 = {3, &n1}; struct Node n3 = {1, &n2}; print_reverse(&n3, 3); return 0; }

정답

2 6 3

2 6 32 6 3

해설

재귀 호출 과정을 추적하면:

  1. print_reverse(&n3, 3): n3.data=1, depth=3
    • print_reverse(&n2, 2) 호출
  2. print_reverse(&n2, 2): n2.data=3, depth=2
    • print_reverse(&n1, 1) 호출
  3. print_reverse(&n1, 1): n1.data=2, depth=1
    • print_reverse(NULL, 0) 호출 → 즉시 리턴
    • printf("%d ", 2*1) → "2 " 출력
  4. n2로 돌아가서 printf("%d ", 3*2) → "6 " 출력
  5. n3로 돌아가서 printf("%d ", 1*3) → "3 " 출력 최종 출력: "2 6 3"

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

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