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

배열 a의 모든 요소의 합계를 구할 생각으로 다음 프로그램을 작성했다. 배열의 인덱스는 1부터 시작한다. 실행한 후의 s의 값은?

integer array: a ← {4, 7, 1, 9, 3}
integer: s ← 0
for (i from 1 to length(a) − 1 step 1)
  s ← s + a[i]
endfor
  1. A20
  2. B21
  3. C24
정답과 해설 보기

정답: B. 21

length(a)는 5이므로 i는 1부터 4까지 움직이고, s = 4 + 7 + 1 + 9 = 21이 됩니다. 마지막 요소 a[5] = 3이 더해지지 않으므로, 올바른 합계 24보다 3 작아집니다. 인덱스가 0부터 시작하는 언어에서의 작성법(0부터 요소 수 − 1까지)을 1부터 시작하는 배열에 그대로 적용하면, 이처럼 하나 어긋나는 오류(오프 바이 원 오류)가 일어납니다.

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

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

  1. 배열의 인덱스는 1부터 시작한다. 최대 요소를 찾는 다음 프로그램을 실행한 후의 m의 값은?
  2. 배열 a의 요소를 역순으로 뒤집을 생각으로 다음 프로그램을 작성했다. 배열의 인덱스는 1부터 시작한다. 실행한 후의 a의 내용은?
  3. 배열의 인덱스는 1부터 시작한다. 다음 프로그램을 실행한 후의 배열 a의 내용은?
  4. 배열의 인덱스는 1부터 시작한다. 이웃한 요소를 비교하는 다음 프로그램을 실행한 후의 c의 값은?
  5. m[i, j]는 2차원 배열 m의 i행 j열의 요소를 나타내며, 인덱스는 1부터 시작한다. 다음 프로그램을 실행한 후의 s의 값은?