모두CBT

24-3아래 C 프로그램을 실행했을 때 출력 결과를 적으시오.#incl… | 2024년 정보처리기사실기 3회차 기출문제 상세 페이지

11

24-3

아래 C 프로그램을 실행했을 때 출력 결과를 적으시오.

#include <stdio.h>
#include <stddef.h>

struct Box {
    int val;
    struct Box *nxt;
};

void swapPairs(struct Box *b) {
    while (b != NULL && b->nxt != NULL) {
        int tmp = b->val;
        b->val = b->nxt->val;
        b->nxt->val = tmp;
        b = b->nxt->nxt;
    }
}

int main(void) {
    struct Box a = {5, NULL}, b = {8, NULL}, c = {2, NULL}, d = {6, NULL}, e = {9, NULL};
    struct Box *cur;
    a.nxt = &d;
    d.nxt = &b;
    b.nxt = &e;
    e.nxt = &c;
    swapPairs(&a);
    for (cur = &a; cur != NULL; cur = cur->nxt)
        printf("%d", cur->val);
    return 0;
}
해설

65982


[해설]

main에서 연결한 순서는 변수 선언 순서가 아니라 nxt 포인터를 따라간 a(5) → d(6) → b(8) → e(9) → c(2)이다.

swapPairs는 이웃한 두 노드의 값을 맞바꾼 뒤 두 칸 건너뛴다.

  • 1회: a와 d 교환 → 6, 5
  • 2회: b와 e 교환 → 9, 8
  • c는 짝이 없어(nxt가 NULL) 그대로 2

출력은 65982다. 노드 연결은 바뀌지 않고 값만 교환된다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.