모두CBT

20-1아래 C 프로그램을 실행했을 때 출력되는 결과를 적으시오.#in… | 2020년 정보처리기사실기 1회차 기출문제 상세 페이지

16

20-1

아래 C 프로그램을 실행했을 때 출력되는 결과를 적으시오.

#include <stdio.h>

int main(void) {
    int s[6] = {42, 17, 88, 5, 63, 29};
    int n = 6, t, swapped;
    for (int pass = 1; pass < n; pass++) {
        swapped = 0;
        for (int j = 0; j < n - pass; j++) {
            if (s[j] < s[j + 1]) {
                t = s[j];
                s[j] = s[j + 1];
                s[j + 1] = t;
                swapped = 1;
            }
        }
        if (!swapped)
            break;
    }
    for (int j = 0; j < n; j++)
        printf("%d ", s[j]);
    return 0;
}
해설

88 63 42 29 17 5


[해설]

인접한 두 값을 비교해 앞의 값이 더 작으면 교환하는 버블 정렬이다. 조건이 s[j] < s[j + 1]이므로 내림차순으로 정렬된다.

  • 1회전에서는 가장 작은 5가 맨 뒤로 밀려나 42 88 17 63 29 5가 된다.
  • 2회전에서는 17이 뒤에서 둘째 칸으로 가서 88 42 63 29 17 5가 된다.
  • 3회전에서는 42와 63이 자리를 바꿔 88 63 42 29 17 5가 된다.
  • 4회전에서는 교환이 없어 swapped가 0으로 남고, break로 반복을 끝낸다.

출력은 88 63 42 29 17 5이며, 값마다 뒤에 공백이 하나씩 붙는다.

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