rpd000013294 (1006966), страница 6
Текст из файла (страница 6)
МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ
(НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ)
Инженерно-экономический институт (ИНЖЭКИН)
AAA.
BBB.Кафедра 504 – «Экономическая информатика»
Контрольные вопросы для рубежного (промежуточного) контроля знаний №2
по дисциплине
«Объектно-ориентированное программирование»
Авторы:
доц. к.э.н. Дегтярев А.В.
Утверждено на заседании кафедры 504
Протокол №
От «___»_______20___ г.
Вариант №1
1 | #include "iostream.h" class A { public: A() {cout << 1;} }; class B { public: B() { cout << 2; } }; class C { public: C() { cout << 3; } }; class D: virtual public A, public B, virtual public C { public: D() { cout << 4; } }; void main(void) { D dObj; cout << endl; return; } | Что будет напечатано? CCC.4DDD.3EEE.2FFF.1GGG.ничегоHHH.Сообщение об ошибкеIII.Не знаю |
2 | . . . – объединение в одном объекте данных и методов их обработки |
|
3 | #include <iostream.h> //1:======== union C { int n; char c int Get_n(){return n;} }; //2:======== class E { private: int n; char c; public: E(); ~E(); virtual void Show(); }; //3:======== struct B { int n; char c; public: B(); ~B(); }; //4:======== union D { int n; char c; D(); ~D(); virtual void Show(); } //5:======== class A { int n; char c; public: A(); ~A(); }; int main(void) { return 1; } | Какое(какие) из объявлений содержат ошибку?:
|
Вариант №2
1 | #include <stdio.h> #include <conio.h> class At { int x, y; public: At(int _x):x(_x){y=0;}; void func() {printf("%d", ++x);} void callmemberptr(void(At:: *funcptr)()) { (*this.*funcptr)(); } }; void usemembfuncptr(At *objectptr, void (At::*funcptr)()) { (objectptr->*funcptr)(); } int main(void) { void (At::*funcptr)()=&At::func; At i1(1); usemembfuncptr(&i1, funcptr); At i2(2); i2.callmemberptr(funcptr); while(!kbhit()); return 1; } | Выберите один , самый правильный ответ: A.12
B.24C.0D.3E.Сообщение об ошибкеF.не знаю |
2 | . . . – обеспечивает создание новых объектов на базе ранее определенных |
|
3 | #include <iostream.h> class Point { public: Point() {cout << 1;} virtual ~Point() {cout << 2;} }; class Circle: public Point { public: Circle() {cout << 3;} virtual ~Circle() {cout << 4;} }; int main(void) { Point *pPoint = new Circle; delete pPoint; return 1; } | Выберите один, самый правильный ответ:
G.3124
|
Вариант №3
1 | struct MLX { int x; int y; }; class CLX { int x; int y; }; int f() { return 1%10; } int main(void) { int *p=0, n10=f(), m=20; MLX ML1={20,20}; int pr=0, n11=f(), m1=20; CLX CL1={20,20}; int h=m=10, n12=f(); return 1; } | Какой из операторов инициализации содержит грубую ошибку: A.int *p=0, n10=f(), m=20;B.MLX ML1={20,20};C.int pr=0, n11=f(), m1=20;D.CLX CL1={20,20};E.int h=m=10, n12=f();F.Сообщение об ошибкеG.не знаю |
2 | . . . – возможность замещения методов объекта-родителя одноименным методом объекта-потомка | A.ИнкапсуляцияB.ПолиморфизмC.НаследованиеD.МодульностьE.СтруктурностьF.Не знаю |
3 | #include <iostream.h> //1: class Point { protected: int x; int y; }; class Circle: public Point { public: int Radius; }; class Ring: public Circle { private: int Width; public: int GetRad(){return Radius;} }; //2: class Point { protected: int x; int y; }; class Ring: public Point { private: int Width; int Radius; public: int GetRad(){return Radius;} }; //3: class Point { protected: int x; int y; }; class Circle: public Point { private: int Radius; }; class Ring: public Circle { private: int Width; public: int GetRad(){return Radius;} }; //4: class Point { protected: int x; int y; }; class Circle: public Point { protected: int Radius; public: int GetRad(){return Radius;} }; class Ring: public Circle { protected: int Width; public: int GetWidth(){return Radius;} }; //5: class Point { int x; int y; }; class Ring: public Point { protected: int Radius; int Width; public: int GetRad(){return Radius;} } int main(void) { return 1; } | Какое(какие) представление иерархии классов содержат ошибки?
G.3
|
Вариант №4
1 | #include <iostream.h> class point { private: int x,y; public: point(){x=15;y=16;} void setpoint(int a=10, int b=20) {x=a; y=b;} void setdata1() {x=10; y=17;} void setdata2() {x=15; y=18;} void setdata3() {x=11; y=15;} int getx(){return x;} int gety(){return y;} }; int main(void) { point my, *ptr=NULL; ptr=&my; if(ptr!=NULL) { my.setpoint(); cout << " x= " << ptr->getx() << "y= " << ptr->gety() <<endl; } else { cout << " x= " << my.getx() << "y= " << my.gety() << endl; } return 1; } | Выберите один , самый правильный ответ: A.x=15 y=16B.x=10 y=17C.x=11 y=15D.x=10 y=20E.Сообщение об ошибкеF.не знаюG.x=15 y=18 |
2 | Для использования объектных переменных указывается имя |
|
3 | #include <iostream.h> //1: struct Point { int x; public: Point(int Initx=10){x=Initx;} int GetX(){return x;} }; struct Circle: Point { int Rad; public: Circle(int Initx, int InitRad=20): Point(Initx) {Rad=InitRad;} int GetRad() {return Rad;} }; //2: struct Point { int x; public: Point(int Initx=10){x=Initx;} int GetX(){return x;} }; class Circle: public Point { int Rad; public: Circle(int Initx, int InitRad=20): Point(Initx) {Rad=InitRad;} int GetRad() {return Rad;} }; //3: class Point { int x; public: Point(int Initx=10){x=Initx;} int GetX(){return x;} }; class Circle: public Point { int Rad; public: Circle(int Initx, int InitRad=20): Point(Initx) {Rad=InitRad;} int GetRad() {return Rad;} }; //4: class Point { int x; public: Point(int Initx=10){x=Initx;} int GetX(){return x;} }; struct Circle: Point { int Rad; public: Circle(int Initx, int InitRad=20): Point(Initx) {Rad=InitRad;} int GetRad() {return Rad;} }; //5: union Point { int x; unsigned char code; }; union Circle: public Point { float Rad; }; int main(void) { return 1; } | Какое определение ошибочное:
H.3
|
Вариант №5
1 | #include <iostream.h> class point { private: int x,y; public: point(){x=15;y=16;} void setpoint(int a=10, int b=20) {x=a; y=b;} void setdata1() {x=10; y=17;} void setdata2() {x=15; y=18;} void setdata3() {x=11; y=15;} int getx(){return x;} int gety(){return y;} }; int main(void) { point my, *ptr=NULL; ptr=&my; if(ptr==NULL) { my.setpoint(); cout << " x= " << ptr->getx() << "y= " << ptr->gety() <<endl; } else { cout << " x= " << my.getx() << "y= " << my.gety() << endl; } return 1; } | Выберите один , самый правильный ответ: I.x=15 y=16J.x=10 y=17K.x=11 y=15L.x=10 y=20M.Сообщение об ошибкеN.не знаюO.x=15 y=18 |
2 | Каждый объект-потомок имеет . . . родител(я/ей). |
|
3 | #include <iostream.h> class Point { public: virtual void Tell() {cout << "\tIn Point class \n";} }; struct Circle: public Point { public: virtual void Tell() {cout << "\tIn Circle class \n";} }; int main(void) { Point APoint, *pPoint; Circle ACircle, * pCircle; //1: pCircle= (&ACircle); //2: pCircle= (&APoint); //3: pPoint= (&ACircle); //4: pPoint= (&APoint); //5: pCircle= (pCircle); return 1; } | Выберите один, самый правильный ответ: P.1
|
Вариант №6
1 | #include <iostream.h> template <class Z> class a { public: Z Item; a(Z); }; template <class T> a<T>::a(T item) { Item=item; cout << item << " "; } int main(void) { a<char> ax('R'); a<int> bx(125); a<float> cx(6.28); if(ax.Item) cout << "a"; if(bx.Item) cout << "b"; if(cx.Item) cout << "c"; return 1; } | Выберите один или несколько правильных ответов: A.abcB.125 6.28 abcC.R 125 6.28D.R 125 6.28 abcE.Сообщение об ошибкеF.не знаю |
2 | Каждый объект-родитель имеет . . . потомк(а/ов). |
|
3 | #include <iostream.h> //1:======== union C { int n; char c int Get_n(){return n;} }; //2:======== class E { private: int n; char c; public: E(); ~E(); virtual void Show(); }; //3:======== struct B { int n; char c; public: B(); ~B(); }; //4:======== union D { int n; char c; D(); ~D(); virtual void Show(); } //5:======== class A { int n; char c; public: A(); ~A(); }; int main(void) { return 1; } | Какое(какие) из объявлений содержат ошибку?:
|
Вариант №7
1 | #include <iostream.h> class a { public: a(){count++;} ~a(){count--;} static int GetCount(){return count;} private: static int count; }; int a::count=6; int main(void) { a* p=new a[5]; cout << " dddd" << " "; delete []p; cout << a::GetCount() << "\n"; cin.get(); return 1; } | Выберите один, самый правильный ответ: G.dddd 30H.dddd 6I.dddd 0J.dddd 11K.ddddd 5L.не знаю |
2 | С помощью позднего связывания подключаются . . . методы. |
|
3 | #include <iostream.h> class Point { public: Point() {cout << 1;} virtual ~Point() {cout << 2;} }; class Circle: public Point { public: Circle() {cout << 3;} virtual ~Circle() {cout << 4;} }; int main(void) { Point *pPoint = new Circle; delete pPoint; return 1; } | Выберите один, самый правильный ответ:
M.3124
|
Вариант №8
1 | #include <iostream.h> class point { private: const c,d; static int x,y; public: point(): c(5), d(12) {x=0x10; y=0x11; } ~point(){} void setpoint(int a=2, int b=30) { x=a; y=b; } virtual void setdata1(int a, int b) { x=a; y=b; } static void setdata2() { x=10; y=11; } int getx() {return x;} int gety() {return y;} int getc() {return c;} int getd() {return d;} }; int point::x=25; int point::y=30; int main(void) { point my, *ptr=NULL; ptr=&my; if (ptr==NULL) { my.setpoint(); cout << " x= " << ptr->getx() << " y= " << ptr->gety() << endl; } else { cout << " c= " << my.getc() << " y= " <<my.gety() << " "; } cin.get(); return 1; } | Выберите один , самый правильный ответ: N.c=5 y=30O.x=10 y=11P.x=16 y=17Q.c=5 y=17R.x=2 y=30S.не знаю |
2 | Конструктор и деструктор необходимы при использовании . . . методов. |
|
3 | #include <iostream.h> //1: class Point { protected: int x; int y; }; class Circle: public Point { public: int Radius; }; class Ring: public Circle { private: int Width; public: int GetRad(){return Radius;} }; //2: class Point { protected: int x; int y; }; class Ring: public Point { private: int Width; int Radius; public: int GetRad(){return Radius;} }; //3: class Point { protected: int x; int y; }; class Circle: public Point { private: int Radius; }; class Ring: public Circle { private: int Width; public: int GetRad(){return Radius;} }; //4: class Point { protected: int x; int y; }; class Circle: public Point { protected: int Radius; public: int GetRad(){return Radius;} }; class Ring: public Circle { protected: int Width; public: int GetWidth(){return Radius;} }; //5: class Point { int x; int y; }; class Ring: public Point { protected: int Radius; int Width; public: int GetRad(){return Radius;} } int main(void) { return 1; } | Какое(какие) представление иерархии классов содержат ошибки?
T.3
|
Вариант №9
1 | #include <iostream.h> class point { private: const c,d; static int x,y; public: point(): c(5), d(12) {x=0x10; y=0x11; } ~point(){} void setpoint(int a=2, int b=30) { x=a; y=b; } virtual void setdata1(int a, int b) { x=a; y=b; } static void setdata2() { x=10; y=11; } int getx() {return x;} int gety() {return y;} int getc() {return c;} int getd() {return d;} }; int point::x=25; int point::y=30; int main(void) { point my, *ptr=NULL; ptr=&my; if (ptr!=NULL) { my.setpoint(); cout << " x= " << ptr->getx() << " y= " << ptr->gety() << endl; } else { cout << " c= " << my.getc() << " y= " <<my.gety() << " "; } cin.get(); return 1; } | Выберите один , самый правильный ответ: A.c=5 y=30B.x=10 y=11C.x=16 y=17D.c=5 y=17E.x=2 y=30F.не знаю |
2 | Инициализация объекта происходит при использовании . . . |
|
3 | #include <iostream.h> //1: struct Point { int x; public: Point(int Initx=10){x=Initx;} int GetX(){return x;} }; struct Circle: Point { int Rad; public: Circle(int Initx, int InitRad=20): Point(Initx) {Rad=InitRad;} int GetRad() {return Rad;} }; //2: struct Point { int x; public: Point(int Initx=10){x=Initx;} int GetX(){return x;} }; class Circle: public Point { int Rad; public: Circle(int Initx, int InitRad=20): Point(Initx) {Rad=InitRad;} int GetRad() {return Rad;} }; //3: class Point { int x; public: Point(int Initx=10){x=Initx;} int GetX(){return x;} }; class Circle: public Point { int Rad; public: Circle(int Initx, int InitRad=20): Point(Initx) {Rad=InitRad;} int GetRad() {return Rad;} }; //4: class Point { int x; public: Point(int Initx=10){x=Initx;} int GetX(){return x;} }; struct Circle: Point { int Rad; public: Circle(int Initx, int InitRad=20): Point(Initx) {Rad=InitRad;} int GetRad() {return Rad;} }; //5: union Point { int x; unsigned char code; }; union Circle: public Point { float Rad; }; int main(void) { return 1; } | Какое определение ошибочное:
G.3
|
Вариант №10
1 | #include <iostream.h> class Point { public: virtual void DrawFig() {cout << " Drawing Point \n";} void PaintFig() {cout << " Painting Point \n";} }; class Circle: public Point { public: void DrawFig() {cout << " Drawing Circle \n";} void PaintFig() {cout << " Painting Circle \n";} }; int main(void) { Point *pPoint = new Circle; Circle *pCircle = new Circle; pCircle->DrawFig(); pCircle->PaintFig(); pPoint->DrawFig(); pPoint->PaintFig(); delete pPoint; delete pCircle; cout << endl; return 1; } | Выберите один , самый правильный ответ: A: Drawing Circle Painting Circle Drawing Circle Painting Circle B: Drawing Circle Painting Circle Drawing Point Painting Point C: Drawing Circle Painting Circle Drawing Circle Painting Point D:Drawing Point Painting Circle Drawing Point Painting Point E: Drawing Circle Painting Circle Drawing Point Painting Circle J: Не знаю |
2 | Переменная, описанная с объектным типом, – это . . .. |
|
3 | #include <iostream.h> class Point { public: virtual void Tell() {cout << "\tIn Point class \n";} }; struct Circle: public Point { public: virtual void Tell() {cout << "\tIn Circle class \n";} }; int main(void) { Point APoint, *pPoint; Circle ACircle, * pCircle; //1: pCircle= (&ACircle); //2: pCircle= (&APoint); //3: pPoint= (&ACircle); //4: pPoint= (&APoint); //5: pCircle= (pCircle); return 1; } | Выберите один, самый правильный ответ: H.1
|
Вариант №11
1 | #include <iostream.h> class A { public: virtual void f1()=0; virtual void f2()=0; }; //********* int main(void) { B b; b.f1(); b.f2(); return 1; } | Выберите какой фрагмент объявления класса В, который должен быть вставлен в место //*********: A: class B: public A { public: void f1(){}; void f2(){}; }; B: class B: public A { public: void f1(){}; virtual void f2(); }; C: class B: public A { public: void f1(); void f2(); }; D: class B: public A { public: void f1(){}; void f2(); }; E: class B: public A { public: void f1(); virtual void f2(){}; }; J: Не знаю |
2 | Данные объекта-родителя . . . в объекте-потомке |
|
3 | #include <iostream.h> class Point { public: Point() {cout << 1;} virtual ~Point() {cout << 2;} }; class Circle: public Point { public: Circle() {cout << 3;} virtual ~Circle() {cout << 4;} }; int main(void) { Point *pPoint = new Circle; delete pPoint; return 1; } | Выберите один, самый правильный ответ:
I.3124
|
Вариант №12
1 | #include <iostream.h> class Point { int x,y; protected: char visible; public: Point(int x0=10, int y0=20) { x=x0; y=y0; visible='f'; } int GetX() { return x; } char IsVisible() { return visible; } }; //1:============= class Circle: private Point { int Radius; public: Circle(int x0, int y0, int Rad0): Point(x0, y0) { Radius=Rad0; } int GetRad() { return Radius; } }; //2: ============= class Circle: protected Point { int Radius; public: Circle(int x0, int y0, int Rad0): Point(x0, y0) { Radius=Rad0; } int GetRad() { return Radius; } }; //3: ============= class Circle: Point { int Radius; public: Circle(int x0, int y0, int Rad0): Point(x0, y0) { Radius=Rad0; } int GetRad() { return Radius; } }; //4: ============= class Circle: public Point { int Radius; public: Circle(int x0, int y0, int Rad0): Point(x0, y0) { Radius=Rad0; } int GetRad() { return Radius; } }; //5: ============= class Circle: public Point { int Radius; int GetRad() { return Radius; } public: Circle(int x0, int y0, int Rad0): Point(x0, y0) { Radius=Rad0; } }; int main(void) { Circle ACircle(10,20,30); cout << ACircle.GetX() << " " << ACircle.IsVisible() << " " << ACircle.GetRad() << endl; cin.get(); return 1; } | Указать номер варианта, начиная с которого оператор cout начнет работать: A.5
B.Никакой
C.2D.не знаю |
2 | Объект-потомок может содержать |
|
3 | #include <stdio.h> #include <conio.h> class At { int x, y; public: At(int _x):x(_x){y=0;}; void func() {printf("%d", ++x);} void callmemberptr(void(At:: *funcptr)()) { (*this.*funcptr)(); } }; void usemembfuncptr(At *objectptr, void (At::*funcptr)()) { (objectptr->*funcptr)(); } int main(void) { void (At::*funcptr)()=&At::func; At i1(1); usemembfuncptr(&i1, funcptr); At i2(2); i2.callmemberptr(funcptr); while(!kbhit()); return 1; } | Выберите один , самый правильный ответ: E.12
F.24G.0H.3I.Сообщение об ошибкеJ.не знаю |
Ответы 2:
Вариант: | 1 | 2 | 3 |
1 | A | A | A,D |
2 | B | 3 | C |
3 | D | B | B,D |
4 | D | B | E |
5 | H | A | 5 |
6 | D | C | B,E |
7 | B | A | I |
8 | J | A | H,J |
9 | E | A | D |
10 | C | B | E |
11 | A | A | C |
12 | B | A,B,C,D | H |
Рейтинговая оценка (3 семестр).doc