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

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

문제

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

C
#include <stdio.h> struct Point { int x, y; }; int calculate(struct Point p, int level) { if (level == 0) { printf("%d ", p.x + p.y); return p.x + p.y; } struct Point new_p = {p.x + level, p.y - level}; int result = calculate(new_p, level - 1); printf("%d ", result + level); return result + level; } int main() { struct Point start = {2, 5}; calculate(start, 2); return 0; }

정답

7 8 10

7 8 107 8 107 8 10

해설

재귀 호출과 구조체 변화를 추적:

  1. calculate({2,5}, 2):
  • new_p = {2+2, 5-2} = {4, 3}
  • calculate({4,3}, 1) 호출
  1. calculate({4,3}, 1):
  • new_p = {4+1, 3-1} = {5, 2}
  • calculate({5,2}, 0) 호출
  1. calculate({5,2}, 0):
  • level == 0이므로 printf("%d ", 5+2) 실행 → "7 " 출력
  • return 7
  1. level 1로 돌아가서:
  • result = 7
  • printf("%d ", 7+1) 실행 → "8 " 출력
  • return 8
  1. level 2로 돌아가서:
  • result = 8
  • printf("%d ", 8+2) 실행 → "10 " 출력

최종 출력: "7 8 10"

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

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