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

다음 함수 isLeap은 서기 y년이 윤년이면 true를 반환한다. and는 or보다 먼저 계산한다. isLeap(y)가 true를 반환하는 y는?

○boolean: isLeap(integer: y)
  return y mod 4 = 0 and y mod 100 ≠ 0 or y mod 400 = 0
  1. A1800
  2. B1900
  3. C2000
정답과 해설 보기

정답: C. 2000

and가 or보다 우선하므로, 조건은 (y mod 4 = 0 and y mod 100 ≠ 0) or y mod 400 = 0과 같은 의미입니다. 4로 나누어떨어지고 100으로 나누어떨어지지 않는 해이거나, 400으로 나누어떨어지는 해가 윤년이 됩니다. 1800과 1900은 100으로 나누어떨어지고 400으로는 나누어떨어지지 않으므로 false입니다. 2000은 400으로 나누어떨어지므로 true가 됩니다.

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

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

  1. ÷는 나눗셈이며, 정수형 변수(인수 포함)에 대입할 때는 소수점 이하를 버린다. 다음 함수 pow를 pow(2, 10)으로 호출했을 때, pow가 호출되는 횟수(최초 호출 포함)는?
  2. 다음 함수 s를 s(7)로 호출했을 때의 반환값은?
  3. 다음 프로시저 p를 p(3)으로 호출했을 때, 출력되는 값의 순서는?
  4. 다음 함수 fib를 fib(10)으로 호출했을 때의 반환값은?
  5. 다음 함수 c를 c(4, 2)로 호출했을 때, c가 호출되는 횟수(최초 호출 포함)는?