25-2아래 C 프로그램의 실행 결과를 적으시오.#include <… | 2025년 정보처리기사실기 2회차 기출문제 상세 페이지
16
25-2
아래 C 프로그램의 실행 결과를 적으시오.
#include <stdio.h>
#define CAP 4
typedef struct {
int buf[CAP];
int head;
int tail;
} Ring;
void push(Ring *r, int v) {
r->buf[r->tail] = v;
r->tail = (r->tail + 1) % CAP;
}
int pop(Ring *r) {
int v = r->buf[r->head];
r->head = (r->head + 1) % CAP;
return v;
}
int main(void) {
Ring r = {{0}, 0, 0};
int x, y, z;
push(&r, 5);
push(&r, 8);
push(&r, 6);
pop(&r);
push(&r, 9);
push(&r, 7);
x = pop(&r);
y = pop(&r);
z = pop(&r);
printf("%d-%d-%d", z, x, y);
return 0;
}해설
9-8-6
[해설]
Ring은 크기 4의 원형 큐다. push는 tail 위치에 넣고, pop은 head 위치에서 꺼내며, 인덱스는 % CAP으로 되돌아간다.
- push 5, 8, 6 → buf[0..2] = 5, 8, 6, tail = 3
- pop → 5를 꺼냄(버림), head = 1
- push 9 → buf[3] = 9, tail = 0 / push 7 → buf[0] = 7, tail = 1
- x = pop → 8, y = pop → 6, z = pop → 9
printf는 z, x, y 순으로 찍으므로 9-8-6이다. 꺼내는 순서는 넣은 순서(FIFO)를 그대로 따른다.
오류나 개정된 내용이 보이면 알려주세요