모두CBT

25-1아래 C 프로그램이 출력하는 정수를 적으시오.#include &… | 2025년 정보처리기사실기 1회차 기출문제 상세 페이지

17

25-1

아래 C 프로그램이 출력하는 정수를 적으시오.

#include <stdio.h>

typedef struct {
    const char *tag;
    int bits[3];
} Rec;

int mask(int v) {
    return v & 0x3C;
}

int total(const Rec *r) {
    int s = 0;
    for (int j = 0; j < 3; j++)
        s += mask(r->bits[j]);
    return s;
}

int main(void) {
    Rec list[2] = {
        {"P1", {0x5F, 0x21, 0xC6}},
        {"P2", {0x3A, 0x94, 0x7D}}
    };
    const Rec *p = list;
    int out = 0;
    for (int i = 0; i < 2; i++)
        out += total(p + i);
    printf("%d", out);
    return 0;
}
해설

200


[해설]

mask는 각 값과 0x3C(0011 1100)를 비트 AND 하여 가운데 4비트만 남긴다.

  • P1: 0x5F→0x1C(28), 0x21→0x20(32), 0xC6→0x04(4), 합 64
  • P2: 0x3A→0x38(56), 0x94→0x14(20), 0x7D→0x3C(60), 합 136

포인터 p + i로 두 구조체를 차례로 넘겨 합하면 64 + 136 = 200이다. 문자열 tag는 계산에 쓰이지 않는다.

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