1. C++프로그래밍, 멀티미디어시스템 4-1
C++프로그래밍, 멀티미디어시스템
2014학년도 2 학기 1 학년 3 교시
※ 정답 하나만을 골라 반드시 컴퓨터용 사인펜으로 OMR 답안지에
표기할 것.
학 과 감독관
학 번 성 명
1과목 C + + 프 로 그 래 밍 (1~25) 6. 데이터멤버 value의 가시성은 무엇인가? (3점)
① protected ② private
③ public ④ friend
7. (ㄱ)에 생성자를 선언하고자 한다. value의 값을 0으로 초기화
하도록 올바르게 작성한 문장은? (4점)
① void init() : value(0) { }
② int Counter() { value = 0; }
③ void Counter() { value = 0; return 0; }
④ Counter() : value(0) { }
8. (ㄴ)~(ㄹ) 중 const를 넣는 것이 바람직한 곳은? (2점)
① ㈁ ② ㈂
③ ㈃ ④ 모두
9. 다음 중 소멸자에 대해 적절히 설명하고 있는 문장은? (4점)
① 소멸자는 다중정의를 할 수 없다.
② 소멸자는 명시적으로 호출하여 실행한다.
③ 소멸자는 int형 값을 반환한다.
④ 소멸자는 형식 매개변수를 통해 필요한 값을 받을 수 있다.
※ (10~11) 다음 클래스 선언문에 대한 질문에 답하라.
class Copycat {
char *name;
public:
Copycat(const char *n) {
name = new char[strlen(n)+1];
strcpy(name, n);
}
㈀ {
name = new char[strlen(cc.name)+1];
strcpy(name, cc.name);
}
㈁
……
};
10. 복사 생성자를 선언하기 위해 (ㄱ)에 필요한 내용은? (3점)
① void Copycat(Copycat cc)
② Copycat(Copycat cc)
③ void Copycat(const Copycat* cc)
④ Copycat(const Copycat& cc)
11. (ㄴ)에 넣을 소멸자를 적절하게 작성한 것은? (3점)
① Copycat() { delete [] name; }
② ~Copycat() { delete name; }
③ ~Copycat() { delete [] name; }
④ void ~Copycat() { delete name; }
12. a가 ClassA의 객체이고 b가 ClassB의 객체일 때 다음 수식을
사용할 수 있게 하려면 어느 클래스에서 += 연산자를 다중정의
해야 하는가? (2점)
a += b;
① ClassA ② ClassB
③ ClassA의 파생클래스 ④ 다중정의 할 수 없음
13. ClassC의 선언문 안에서 후위표기 ++ 연산자를 다중정의하고
자 한다. 원형을 올바르게 작성한 것은? (2점)
① ClassC operator ++ ();
② ClassC operator ++ (int);
③ int operator ++ (const ClassC& objC);
④ void operator ++ (const ClassC& objC);
출제위원:방송대 이병래
출제범위:교재 3장~8장(해당 멀티미디어강의 포함)
※ (1~3) 크기가 n인 int형 배열에 저장된 값들 중 최솟값과 최댓
값을 구하는 다음 함수에 대한 질문에 답하라.
㈀ minmax( ㈁ , ㈂ , int n) {
min = max = arr[0];
for (int i=1 ; i < n ; i++)
if (arr[i] > max) max = arr[i];
else if (arr[i] < min) min = arr[i];
}
1. (ㄱ)에 넣을 적절한 단어는? (2점)
① void ② int
③ int& ④ int*
2. 배열을 arr이라는 형식 매개변수를 통해 받고자 한다. 함수 안
에서 arr에 전달되는 실 매개변수의 값을 변경할 수 없도록 하
려면 (ㄴ)에 어떠한 내용이 필요한가? (2점)
① void arr[] ② int arr[]
③ const int arr[] ④ static int arr[]
3. 이 함수에서 구한 최솟값과 최댓값이 실 매개변수에 저장되도록
하려면 (ㄷ)에 어떠한 내용이 필요한가? (3점)
① int min, int max
② int& min, int& max
③ const int& min, const int& max
④ int* min, int* max
4. 다음 중 C++에서 함수를 정의하고 호출하는 것과 관련하여 올
바르게 설명한 것은? (4점)
① 함수의 이름은 모두 달라야 한다.
② 디폴트 인수는 매개변수 목록 중 앞에 위치해야 한다.
③ 순환호출을 포함하는 함수는 inline 함수로 컴파일된다.
④ 뒤에 정의된 함수를 호출하려면 먼저 그 함수의 원형을 선언
해야 한다.
5. 다중정의된 함수들 중에서 어느 함수를 호출하는가를 결정하는
것은 다음 중 무엇인가? (3점)
① 인수의 개수 및 자료형
② 함수가 반환하는 값의 자료형
③ 호출된 위치에서 가까운 곳에 정의된 함수
④ 지역변수의 개수
※ (6~8) 다음 Counter 클래스의 선언문에 대한 질문에 답하라.
class Counter {
int value;
public:
㈀
void reset() ㈁ { value = 0; }
void count() ㈂ { ++value; }
int getValue() ㈃ { return value; }
};
2. C++프로그래밍, 멀티미디어시스템 4-2
2014학년도 2 학기 1 학년 3 교시
※ (14~15) static 멤버를 포함하는 다음 클래스 선언문에 대한
질문에 답하라.
class SObj {
int x, id;
double y;
static int nID;
public:
SObj(int a, double b) : x(a), y(b) { id = ++ nID; }
void display() const
{ cout << "ID : " << id << " x, y : "
<< x << ", " << y << endl; }
static int f() { ㈀ }
};
㈁
14. 이 클래스 선언을 완성하기 위해 (ㄴ)에 필요한 내용은? (2점)
① int SObj::nID = 0; ② int nID = 1;
③ SObj = 0; ④ SObj::SObj = 0;
15. 다음 중 (ㄱ)에서 사용할 경우 문법에 맞는 명령은? (2점)
① cin >> x; ② cout << y;
③ --nID; ④ id += x;
※ (16~20) 클래스 상속과 관련한 다음 선언문에 대한 질문에 답
하시오. (가)에는 기초 클래스의 id를 s1, att를 s2로 초기화하
는 문장이, (나)에는 이와 더불어 x를 n으로 초기화하는 문장
이 포함된다. (가상함수 사용에 주의하라.)
class BClass {
㈀ :
string id;
public:
BClass(const string& s) : id(s) {}
virtual void action() const { cout << id << endl; }
string getID() const { return id; }
};
class DClass1 : public BClass {
string att;
public:
DClass1(const string& s1, const string& s2)
(가)
string getAtt() const { return att; }
void action() const
{ cout << getID() << " " << att << endl; } // ㈁
};
class DClass2 : public DClass1 {
int x;
public:
DClass2(const string& s1, const string& s2, int n)
(나)
void action() const {
cout << getID() << " " << getAtt() << " "
<< x << endl;
}
};
void f() {
DClass1* pDC1 = new DClass2("ab", "cd", 10);
BClass* pBC = pDC1;
pBC->action(); // (다)
pDC1->action(); // (라)
……
}
16. (ㄴ)에서 getID()를 호출하는 대신 id를 직접 액세스 할 수 있
도록 하려면 (ㄱ)에 어떠한 문구를 넣어야 하는가? (2점)
① private ② friend
③ static ④ protected
17. DClass1의 생성자를 완성하기 위해 (가)에 넣을 문장은? (2점)
① { id = s1; att = s2; }
② : BClass(s1), att(s2) {}
③ { getID() = s1; att = s2; }
④ : id(s1), att(s2) {}
18. (다)의 문장에 의해 출력되는 결과는? (3점)
① ab ② ab cd
③ ab cd 10 ④ 출력하지 않음
19. (라)의 문장에 의해 출력되는 결과는? (3점)
① ab ② ab cd
③ ab cd 10 ④ 출력하지 않음
20. pB가 BClass의 포인터이고, pD2가 DClass2의 포인터일 때
pB가 가리키는 객체를 pD2가 가리키게 하려고 한다. 다음 중
만일 pB가 가리키고 있는 객체가 DClass2의 객체라면 pD2에
포인터가 복사되고, 그렇지 않으면 pD2에 NULL이 저장되도
록 하는 문장은? (3점)
① pD2 = pB;
② pD2 = (DClass2*)pB;
③ pD2 = static_cast<DClass2*>(pB);
④ pD2 = dynamic_cast<DClass2*>(pB);
21. 다음 중 추상 클래스에 대한 설명으로 적절한 것은? (4점)
① 추상 클래스로 직접 객체를 정의할 수 없다.
② 기초 클래스가 1개인 클래스이다.
③ 가상함수를 포함하지 않는 클래스이다.
④ 추상 클래스는 파생 클래스를 가질 수 없다.
22. 다음 중 표준 템플릿 라이브러리(STL)의 순차 컨테이너에 해당
되는 것은? (2점)
① set ② map
③ multimap ④ list
23. 다음 중 배열의 개념을 구현한 것으로, 필요에 따라 크기를 확
장할 수 있는 STL의 컨테이너는 무엇인가? (3점)
① multiset ② vector
③ list ④ set
※ (24~25) 다음 함수에 대한 질문에 답하라.
double f(double x)
{
if (x == 0)
throw "div by zero";
return 1.0/x;
}
void g() {
㈀ {
double a = f(0.0);
cout << a << endl;
}
catch (const char* str)
{ cout << str << endl; }
catch (...)
{ cout << ".." << endl; }
cout << "done" << endl;
}
24. 예외 처리를 위해 (ㄱ)에 넣을 단어는? (4점)
① inline ② try
③ switch ④ enum
25. 함수 g()를 실행하였을 때 출력되는 내용은? (3점)
① 0 ② 0
div by zero done
done
③ div by zero ④ div by zero
done
3.
4.
5. 2016학년도 2 학기 1 학년 1 교시
대학영어, C++프로그래밍 4-3
※ C++ 코드 중 문장 이해에 문제가 없는 부분은 ……으로 생략
하였음
※ (36∼37) 다음 함수에 대한 질문에 답하라.
1
2
3
4
5
6
7
8
9
10
11
㈀ f(const int a[], int n) {
for (int i=0 ; i < n ; i++)
cout << a[i] << endl;
cout << "최댓값=" << getMax(a, n) << endl;
}
int getMax(const int arr[], int n) {
int max = arr[0];
for (int i=1 ; i < n ; i++)
if (max < arr[i]) max = arr[i];
return max;
}
36. ㈀에 넣을 적절한 내용은 무엇인가? (2점)
① virtual
② int
③ void
④ 공란
37. 다음 중 함수 f에서 getMax를 호출 문장을 사용하기 위해 작성
할 함수 getMax의 원형과 그 위치가 올바른 것은? (3점)
① 1행의 앞, int getMax(const int arr[], int n);
② 1행과 2행 사이, int getMax();
③ 5행과 6행 사이, int getMax(const int [], int);
④ 6행과 7행 사이, int getMax() {}
38. 다음 중 함수 호출 위치에 함수의 처리 문장이 직접 삽입되도록
컴파일하기 위해 사용하는 키워드는? (2점)
① auto
② inline
③ const
④ static
39. C++의 함수에 대한 올바른 설명은? (2점)
① 함수에서 return 명령은 함수의 앞으로 되돌아가게 한다.
② 함수 안에서는 변수를 선언할 수 없다.
③ 함수에서 return 명령을 실행하면 프로그램이 종료된다.
④ 매개변수 값으로 사용할 디폴트 값이 있는 경우 함수에 그
값을 미리 지정하여 선언할 수 있다.
40. 다중정의된 함수들 중에서 함수를 구분하여 선택하는 기준이
될 수 있는 것은? (4점)
① 인수의 개수
② 함수 반환값의 자료형
③ 함수의 크기
④ 함수가 포함된 파일
41. 클래스 멤버의 가시성 키워드 중 소속 클래스 및 친구 클래스의
멤버함수, 친구 함수에서만 액세스할 수 있도록 하는 것은? (4점)
① public
② protected
③ private
④ friend
※ (42∼45) 다음은 상향 계수와 하향 계수를 할 수 있는 상하향
계수기를 표현한 클래스이다. 계수기 객체를 생성할 때는 계수를
할 수 있는 최댓값과 계수기의 초깃값을 지정해야 하는데,
초깃값은 생략할 경우 0을 사용하게 한다. 다음 질문에 답하라.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class UDCounter {
const int mVal; // 계수기의 최댓값
int val; // 계수기의 현재 값
public:
㈀
void reset(int v = 0) ㈁ { val = v; }
void dnCount() ㈂ ;
void upCount() ㈃ ;
int getValue() ㈄ { return val; }
bool chkZero() ㈅ { return !val; }
};
void ㈆ dnCount() ㈂
{ if (--val < 0) val = mVal; }
void ㈆ upCount() ㈃
{ if (++val > mVal) val = 0; }
42. ㈀에는 생성자를 선언하려고 한다. 다음 중 생성자 선언이 올
바른 것은? (3점)
① void UDCounter(int m, int v=0) { mVal=m; val=v; }
② int UDCounter(int m, int v) : mVal(m), val(v) {}
③ UDCounter(int m, int v=0) : mVal(m), val(v) {}
④ UDCounter(int m, int v) { mVal=m; val=0; }
43. ㈁~㈅ 중 const를 넣는 것이 적절한 곳은? (3점)
① ㈁, ㈂, ㈃ ② ㈄, ㈅
③ ㈂, ㈃, ㈄ ④ ㈁
44. 멤버함수 dnCount와 upCount를 정의하는 12∼15번 행에서 ㈆에
넣을 적절한 내용은? (3점)
① extern ② public:
③ UDCounter-> ④ UDCounter::
45. ㈀의 생성자가 잘 선언되었을 때, UDCounter 클래스의 객체를
정의하는 구문으로 잘못된 것은? (단, cA는 UDCounter 클래스의
객체이다.) (2점)
① UDCounter c(99); ② UDCounter c(cA);
③ UDCounter c; ④ UDCounter c(99, 99);
46. ClassA라는 클래스를 선언하였다. 선언문 안에서 다음과 같이
연산자를 다중정의 했을 때, 이에 대한 올바른 설명은? (단, x와
y는 ClassA의 객체이다.) (2점)
ClassA operator-(const ClassA& a) const {
㈀
}
① 전위표기 단항 연산자를 다중정의한 것이다.
② 후위표기 단항 연산자를 다중정의한 것이다.
③ x-y 라는 수식이 사용되었을 때 ㈀에서 *this는 x이다.
④ x-y 라는 수식이 사용되었을 때 ㈀에서 a는 x의 참조이다.
47. 다음 중 클래스의 static 멤버함수에 대한 올바른 설명은? (2점)
① 생성된 객체를 통해서만 호출할 수 있다.
② 클래스의 static이 아닌 데이터 멤버는 액세스할 수 없다.
③ 지역변수를 포함할 수 없다.
④ 클래스의 모든 멤버함수를 호출할 수 있다.
48. 클래스의 private 멤버를 특정 클래스의 멤버함수에서 액세스할
수 있도록 허용하기 위해 사용하는 키워드는? (3점)
① auto ② extern
③ virtual ④ friend
2과목 C++프로그래밍 (36~60)
출제위원:방송대 이병래
출제범위:교재 3장∼8장 (해당 멀티미디어강의 포함)
6. 2016학년도 2 학기 1 학년 1 교시
대학영어, C++프로그래밍 4-4
※ (49∼51) 다음 클래스에 대한 질문에 답하라. 단, ㈀은 한 개의
정수를 형식 매개변수 v에 전달받아 그 값을 저장하는 객체를
생성하는 생성자의 머리가 작성될 곳이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class IntClass {
int* iPt;
public:
㈀ { iPt = new int; *iPt = v; }
㈁
{ iPt = new int; *iPt = *i.iPt; }
㈂ { delete iPt; }
const IntClass& operator = (const IntClass& i) {
iPt = new int; *iPt = *i.iPt;
return *this;
}
IntClass operator ++ (int)
{ ㈃ }
int getValue() const { return *iPt; }
};
49. 복사 생성자를 만들기 위해 ㈁에 넣을 내용은? (3점)
① IntClass(const IntClass& i)
② IntClass(IntClass i)
③ int IntClass(IntClass i)
④ void IntClass(const int* i)
50. 소멸자를 작성하기 위해 ㈂에 넣을 내용은? (3점)
① IntClass()
② ~IntClass(IntClass& obj)
③ int ~IntClass() const
④ ~IntClass()
51. 12∼13행의 연산자 다중정의를 완성하기 위해 ㈃에 넣을 문장은? (2점)
① (*iPt)++
② return IntClass((*iPt)++);
③ ++(*iPt)
④ return IntClass(++(*iPt));
52. 다음 중 클래스의 계층구조를 설계할 경우 나머지 클래스의
기초 클래스가 될 수 있는 것은? (4점)
① 선박 ② 화물선
③ 여객선 ④ 어선
※ (53∼55) 다음 클래스에 대한 질문에 답하라.
class BClass {
㈀ :
int x;
public:
void init(int a)
{ x = a; }
㈁ void print() const
{ cout << x; }
};
class DClass : public BClass {
int y;
public:
void init(int a, int b)
{ x = a; y = b; }
void print() const {
cout << x << " " << y;
}
};
53. BClass의 x는 타 클래스에서는 직접 사용할 수 없지만 파생
클래스인 DClass의 멤버함수에서 직접 사용할 수 있게 하려고
한다. ㈀에 어떠한 가시성 지시어를 사용해야 하는가? (3점)
① private ② public
③ static ④ protected
54. 다음 프로그램에서 (가)의 문장이 “10 20”을 출력하게 하기 위해
㈁에 넣을 단어는? (3점)
DClass *pD = new DClass;
BClass *pB = pD;
pD->init(10, 20);
pB->print(); // (가)
① virtual ② static
③ inline ④ protected
55. BClass의 포인터 p1을 DClass의 포인터 p2로 다운 캐스팅
하려고 한다. p1이 가리키고 있는 객체가 DClass의 객체가 아닐
경우 p2에 NULL이 저장되도록 하려면 어떤 형변환 연산자를
사용해야 하는가? (2점)
① dynamic_cast ② static_cast
③ reinterpret_cast ④ const_cast
56. 다음 클래스에 대한 설명으로 올바른 것은? (4점)
class ClassA {
……
virtual int f() = 0;
};
① ClassA는 상세클래스이다.
② 함수 f는 항상 0을 반환한다.
③ ClassA의 파생클래스는 f를 재정의 할 수 없다.
④ ClassA의 객체를 만들 수 없다.
57. 다음은 두 매개변수의 값을 서로 교환하는 함수 템플릿을 선언한
문장이다. ㈀에 넣을 적절한 내용은? (3점)
㈀ void swapValues(T& a, T& b) {
T tmp = a;
a = b;
b = tmp;
}
① template
② template <ANY>
③ template <class T>
④ template::
58. 다음 중 STL에서 포인터와 같은 용도로 사용되는 것은? (2점)
① 알고리즘
② 반복자(iterator)
③ 컨테이너(container)
④ deque
59. 다음 중 정렬된 데이터를 저장하는 두 컨테이너를 순서를 유지하여
하나로 합병하기 위해 사용되는 STL 알고리즘의 함수는? (2점)
① multiset ② sort
③ for_each ④ merge
60. 다음 프로그램에서 catch 블록이 실행되려면 함수 f()에서 어떤
명령을 실행해야 하는가? (4점)
try { f(); }
catch (int n) { cout << "예외 발생" << endl; }
① return 0; ② throw 1;
③ throw "예외"; ④ exit(0);