Chapter 09. 배열을 활용한 프로그래밍 기법 (문제 풀이)
필수 실습문제
09 - 1) 선택정렬로 알려진 버블정렬 구현
다음 코드를 기반으로 '선택정렬로 알려진 버블정렬' 방식으로 오름차순 정렬한다.
반드시 중첩된 for문 형식으로 구현해야 하며, 반복문에서 사용할 계수기 변수의 초깃값과 조건식에 유의하여 작성한다.
만일 결과가 제대로 출력된다 해도 두 반복문의 계수기 초깃값과 조건식이 정답과 다르면 틀린것이다.
#include <stdio.h>
int main(void)
{
int aList[5] = {30, 40, 10, 50, 20};
int i =0, j = 0, nTmp = 0;
// 여기에 들어갈 코드를 작성
//이하 코드는 수정하지 말 것
for(i = 0; i < 5; i++)
{
printf("%d\t", aList[i]);
}
putchar('\n');
return 0;
}
출력 예:
10 20 30 40 50
실행 결과
09 - 2) 버블정렬 구현
다음 코드를 기반으로 '버블정렬' 방식으로 오름차순 정렬한다.
반드시 중첩된 for문 형식으로 구현해야 하며, 특히 바깥쪽 반복문의 경우 반복문의 반복횟수에 주의해야한다.
또한 "인접한 두 항을 비교하여 교환"하는 것과 관련된 코드가 명확해야 하며, 이 과정에서 배열의 인덱스가 최대 인덱스를 벗어나지 않도록 주의한다.
#include <stdio.h>
int main(void)
{
int aList[5] = {30, 40, 10, 50, 20};
int i = 0, j = 0, nTmp = 0;
//여기에 들어갈 코드를 작성
//이하 코드는 수정하지 말 것
for(i = 0; i < 5; i++)
{
printf("%d\t", aList[i]);
}
putchar('\n');
return 0;
}
출력 예:
10 20 30 40 50
실행 결과
09 - 3) 선택정렬 구현
다음 코드를 기반으로 '선택정렬' 방식으로 오름차순 정렬한다.
반드시 중첩된 for문 형식으로 구현해야 하며, 반복문에 사용되는 계수기 변수의 초깃값과 조건식에 유의해야한다.
만일 결과가 제대로 출력되더라도 두 반복문의 계수기 초깃값과 조건식이 정답과 다르면 틀린 것 이다.
그리고 최솟값이 확정되어 교환이 이루어지는 코드는 바깥쪽 반복문에 속하는 코드여야한다.
#include <stdio.h>
int main(void)
{
int aList[5] = {30, 40, 10, 50, 20};
int i =0, j = 0, nMinIndex = 0, nTmp = 0;
// 여기에 들어갈 코드를 작성
// 이하 코드는 수정하지 않는다.
for( i=0; i<5; i++)
{
printf("%d\t", aList[i]);
}
putchar('\n');
return 0;
}
실행 결과
09 - 4) 달팽이 배열 채우기
요소가 int형이고 행과 열의 길이가 모두 5인 2차원 배열을 선언하고 모든 요소를 0으로 초기화한 후,
'시계방향 달팽이' 형식으로 채워서 출력하는 프로그램 작성
단, 절대로 반복문을 4개 이상 사용할 수는 없습니다.
출력 예:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
실행결과
- 출처 : 독하게 시작하는 C 프로그래밍 (최호성, 루비 페이퍼)