24-1아래 C 프로그램의 출력 결과를 적으시오.#include <… | 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를 구해 곱한다.
%.2f로 소수 둘째 자리까지 찍으므로 출력은 4027 / 5468.75다. 구조체를 포인터로 넘겼기 때문에 함수 안의 변경이 main의 my에 그대로 반영된다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.