- 1 -
객체지향 프로그래밍 실습 (3주차)
2018. 9. 19
학번: 이름:
[문제 1] 다음을 해결하시오.
a. 포인터를 이용하여 2개의 변수, a, b의 값을 교환하는 함수 swap()을 작성하고, 테스트하라.
b. 참조 타입을 이용하여 2개의 변수, a, b의 값을 교환하는 함수 swap()을 작성하고, 테스트하라.
c. swap()의 매개변수가 포인터나 참조 타입이 아니면 결과는 어떠한가? 그 이유는 무엇인가?
d. 다음 선택 정렬 알고리듬을 이용하여 10개의 수를 오름차순으로 정렬하여 출력하라. 단, b)의 swap 함수를 이용하라: 배열 요소: 5, 3, 10, 8 1, 2, 9, 7, 4, 6
선택 정렬 알고리듬:
selectionSort(a, n) // a: 정수 배열, n: 배열 크기 for (i=0 to n-2) do
least <- i;
// I+1부터 나머지 요소들 가운데서 가장 큰 요소를 찾아서 // 그 요소의 인덱스를 least에 할당한다.
swap(a[i], a[least]);
repeat
End selectionSort
- 2 - [문제 2] 다음 순서로 해결하시오.
a. 10개의 string 타입의 문자열을 포함한 string 배열 list를 선언시 초기화하라.
b. 2개의 string을 교환하는 swap()을 작성하라. (참조타입 이용할 것)
c. 문제 1-c의 선택 정렬 알고리듬을 이용하여 list에 포함된 문자열을 알파벳 순서로 정렬하라. b)의 swap() 이용하라.
d. list의 문자열을 순서대로 출력하는 display(list, n)을 작성하라. 여기서 n은 배열 크기임.
- 3 -
[문제 3] 사용자가 입력하는 전화번호에서 기호 (와 )를 삭제한 형태로 출력하는 프로그램을 작성하라. 사용자 가 “quit”를 입력하면 종료한다. 예를 들면,
Enter a phone number: (041)-530-1114 041-530-1114
...
Enter a phone number: qujit
- 4 -
[문제 2] 프로그램이 생성한 [1, 100] 사이의 정수를 사용자가 질문을 통해서 다음과 같이 그 정수를 알아맞히는 프로그램을 작성하라. 분석, 알고리듬 작성, 코딩, 테스트/검증의 순으로 문제를 해결하라.
a. 사용자의 시도 회수를 제한하라: 6번
b. 사용자가 맞추면 “success”를 출력하고, 시도 회수를 넘어서면 “fail"을 출력하라.
c. 사용자가 입력한 숫자가 정답보다 낮으면, “low“를 출력하고, 그렇지 않으면 “high”를 출력하라.
- 5 -
[문제 3] 컴퓨터와 가위, 바위, 보 게임을 하는 프로그램을 작성하라. 사용자로부터 가위는 0, 바위는 1, 보는 2 를 입력받게 하라. 입력 프롬프트는 다음과 같다: Enter your choice: (scissors:0, rock:1, paper:2).
- 6 -