프로그래밍의 기초(의사 코드 트레이스)

클래스 Counter는 인스턴스마다 정수형 멤버 변수 count(생성 시 0)를 가지며, 메서드 inc()는 자신의 count에 1을 더한다. Counter형 변수에는 인스턴스 자체가 아니라 인스턴스에 대한 참조가 들어간다. 다음 프로그램을 실행한 후의 x의 값은?

Counter: c1 ← new Counter()
Counter: c2 ← c1
c1.inc()
c2.inc()
c2 ← new Counter()
c2.inc()
integer: x ← c1.count × 10 + c2.count
  1. A11
  2. B21
  3. C33
정답과 해설 보기

정답: B. 21

c2 ← c1에서는 참조만 복사되어, c1과 c2는 같은 인스턴스를 가리킵니다. 따라서 c1.inc()와 c2.inc()는 둘 다 같은 count를 늘려 c1.count는 2가 됩니다. 다음 c2 ← new Counter()로 c2는 새 인스턴스를 가리키게 되고, 이어지는 c2.inc()는 새 쪽의 count만 1로 만듭니다. x = 2 × 10 + 1 = 21입니다.

이 분야 연습하기 분야로 돌아가기

프로그래밍의 기초(의사 코드 트레이스)의 다른 문제

  1. 다음 프로그램에서 x와 y의 값을 교환할 생각으로 대입문 2개를 작성했다. 실행한 후의 x와 y의 값의 조합은?
  2. 세 변수의 값을 차례로 보내는 다음 프로그램을 실행한 후의 a, b, c의 값의 조합은?
  3. x를 3배 하는 것을 반복하는 다음 프로그램을 실행한 후의 n의 값은?
  4. i를 2씩 늘리는 다음 for 문을 실행한 후의 s의 값은?
  5. 안쪽 반복의 초기값이 바깥쪽 변수 i로 정해지는 다음 이중 루프를 실행한 후의 c의 값은?