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

÷는 나눗셈이며, 정수형 변수(인수 포함)에 대입할 때는 소수점 이하를 버린다. 다음 함수 toBin을 toBin(12)로 호출했을 때의 반환값은?

○integer: toBin(integer: x)
  integer: y ← 0, p ← 1
  while (x > 0)
    y ← y + (x mod 2) × p
    p ← p × 10
    x ← x ÷ 2
  endwhile
  return y
  1. A11
  2. B100
  3. C1100
정답과 해설 보기

정답: C. 1100

x mod 2는 2진수의 일의 자리, x ← x ÷ 2는 2진수로 한 자리 오른쪽으로 미는 조작입니다. x는 12, 6, 3, 1, 0으로 바뀌고, 아래 자리부터 0, 0, 1, 1이 얻어집니다. p는 1, 10, 100, 1000으로 10배씩 늘어나므로 y = 0 × 1 + 0 × 10 + 1 × 100 + 1 × 1000 = 1100이 됩니다. 12를 2진수로 나타낸 각 자리를 10진수의 각 자리로 늘어놓은 값입니다.

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

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

  1. 두 정수 a, b를 뺄셈으로 같게 만들어 가는 다음 프로그램을 실행한 후의 k의 값은?
  2. 다음 함수 isLeap은 서기 y년이 윤년이면 true를 반환한다. and는 or보다 먼저 계산한다. isLeap(y)가 true를 반환하는 y는?
  3. ÷는 나눗셈이며, 정수형 변수(인수 포함)에 대입할 때는 소수점 이하를 버린다. 다음 함수 pow를 pow(2, 10)으로 호출했을 때, pow가 호출되는 횟수(최초 호출 포함)는?
  4. 다음 함수 s를 s(7)로 호출했을 때의 반환값은?
  5. 다음 프로시저 p를 p(3)으로 호출했을 때, 출력되는 값의 순서는?