모두CBT

24-1아래 C 프로그램의 출력 결과를 적으시오.#include &lt… | 2024년 정보처리기사실기 1회차 기출문제 상세 페이지

9

24-1

아래 C 프로그램의 출력 결과를 적으시오.

#include <stdio.h>

typedef struct {
    int id;
    double amt;
} Wallet;

double grow(double base, int n) {
    double r = 1.0;
    while (n-- > 0)
        r *= base;
    return r;
}

void setup(Wallet *w, int id, double amt) {
    w->id = id;
    w->amt = amt;
}

void adjust(Wallet *w, double v) {
    if (v > 0 && v < w->amt)
        w->amt -= v;
    else
        w->amt += v;
}

void interest(Wallet *w) {
    w->amt *= grow(1.25, 2);
}

int main(void) {
    Wallet my;
    setup(&my, 4027, 1500.0);
    adjust(&my, 2000.0);
    interest(&my);
    printf("%d / %.2f", my.id, my.amt);
    return 0;
}
해설

4027 / 5468.75


[해설]

setup 후 my는 id = 4027, amt = 1500.0이다. adjust에 넘긴 2000.0은 잔액보다 커서 조건이 거짓이므로 else로 가 amt = 1500.0 + 2000.0 = 3500.0이 된다.

interest는 grow(1.25, 2)로 1.252 = 1.5625를 구해 곱한다.

3500.0×1.5625=5468.753500.0 \times 1.5625 = 5468.75

%.2f로 소수 둘째 자리까지 찍으므로 출력은 4027 / 5468.75다. 구조체를 포인터로 넘겼기 때문에 함수 안의 변경이 main의 my에 그대로 반영된다.

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