다음 C 프로그램의 실행 결과를 쓰시오.
#include <stdio.h>
typedef struct {
int balance;
double savings;
} Account;
void withdraw(Account *a, int amount) { a->balance -= amount; }
void add_interest(Account *a, double rate) { a->savings *= (1.0 + rate); }
int main(void) {
Account a = {10000, 2713.69};
withdraw(&a, 19);
add_interest(&a, 0.03);
printf("%d and %.2f", a.balance, a.savings);
return 0;
}모범답안
9981 and 2795.10
풀이와 판단 근거
balance는 10000에서 19를 빼 9981이 된다. 구조체 주소를 받은 함수는 화살표 연산자로 원본 멤버를 바꾼다.
savings는 2713.69 × 1.03 = 2795.1007이다. %.2f가 소수 셋째 자리에서 반올림하므로 2795.10으로 최종 출력에 나타난다.
자주 틀리는 지점
- 연산자 우선순위나 재귀 반환 순서를 생략하고 눈에 보이는 값만 바로 계산함
- 값 전달·참조 전달, 오버라이딩·오버로딩 또는 배열과 포인터의 차이를 혼동함
- 출력의 공백·줄바꿈·대소문자를 무시해 9981 and 2795.10와 다른 형식으로 작성함
자동 판정 방식
한글·영문 동의어와 문항별 필수 개념을 확인하며, 정답 단어가 부정되거나 반대 개념과 함께 쓰이면 자동 정답으로 확정하지 않습니다. 부분점수는 ITPASSLAB의 학습용 예상 점수입니다.