모두CBT

다음 C 프로그램의 출력 결과는?#include <stdio.h&… | [9급 국가직 컴퓨터일반] 26년 1회차 기출문제 상세 페이지

1[9급 국가직 컴퓨터일반] 26년 1회차
다음 C 프로그램의 출력 결과는?
#include <stdio.h>

void rotate(int *a, int n, int k) {
k %= n;
while (k--) {
int first = a[0];
int i;
for (i = 0; i < n - 1; i++) {
a[i] = a[i + 1];
}
a[n - 1] = first;
}
}

int main(void) {
int arr[] = {1, 2, 3, 4, 5};
rotate(arr, 5, 7);
int i;
for (i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
return 0;
}
1
1 2 3 4 5
2
3 4 5 1 2
3
4 5 1 2 3
4
5 1 2 3 4
해설

출력 결과는 3 4 5 1 2이다.

rotate는 맨 앞 원소를 맨 뒤로 보내는 왼쪽 1칸 회전을 k회 반복한다.
k %= n에서 k = 7 % 5 = 2이므로 두 차례만 회전한다.

1회: 2 3 4 5 1
2회: 3 4 5 1 2

  • 1 2 3 4 5: 회전 횟수가 5의 배수일 때의 결과로, 나머지 두 차례 회전이 남으므로 틀리다.
  • 4 5 1 2 3: 오른쪽으로 2칸 회전했을 때의 결과이다.
  • 5 1 2 3 4: 오른쪽으로 1칸 회전했을 때의 결과이다.

내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.