Đề thi môn lập trình hướng đối tượng và c++ - Pdf 33

ĐỀ THI THAM KHẢO MÔN LẬP TRÌNH HƯỜNG ĐỐI TƯỢNG VÀ C++

Đề thi môn
Lập trình hướng đối tượng và C++
Đề số

Khoa CNTT – Bộ môn KHMT
Chủ nhiệm bộ môn

CNT45DH
GROUP

Câu 1:
a) Cho lớp Vector được khai báo như sau:
class Vector{
public:
int getSize()const; // trả về độ dài của vector
int &kthElement(int k); // trả về phần tử dữ liệu thứ k của thành viên data
private:
int data[100];
int size;
};
Hãy cài đặt hai hàm getSize() và kthElement() và các hàm cấu tử sau của lớp Vector trên:
cấu tử mặc định, cấu tử có 1 tham số mặc định là kích thước của biến thành viên size, hàm
cấu tử có hai tham số tương ứng với hai biến thành viên của lớp.
b) Cài đặt một hàm toán tử * và một hàm bạn multiply cho phép lấy tích vô hướng của
hai đối tượng thuộc lớp Vector trên.
Câu 2:
a) Cho lớp Computer được khai báo như sau:
class Computer{
public:

Lập trình hướng đối tượng và C++
Đề số

Khoa CNTT – Bộ môn KHMT
Chủ nhiệm bộ môn

CNT45DH
GROUP

Câu 1:
a) Cho đoạn chương trình sau:
class Work{
public:
char * getName();
char * getDes();
private:
char * name; // tên công việc
char * description; // mô tả về công việc
};
template <class T>
T max(T list[], int size){
T temp = list[size-1];
for(int i=0;i

Khoa CNTT – Bộ môn KHMT
Chủ nhiệm bộ môn

CNT45DH
GROUP

Câu 1:
a) Cho lớp số phức ComplexN được khai báo như sau
class ComplexN{
public:
float * getReal();
float * getImg();
private:
float r; // phần thực
float i ; // phần ảo.
};
Hãy cài đặt 3 hàm cấu tử khác nhau cho lớp ComplexN trong đó có hàm cấu tử mặc định.
b) Giả sử người ta thêm vào hai hàm toán tử bạn phục vụ cho các thao tác nhập xuất dữ
liệu cho các đối tượng của lớp số phức trên, hãy cài đặt hai hàm này và sử dụng chúng
để viết một đoạn chương trình cho phép nhập dữ liệu cho một dãy 10 số phức và in
chúng ra màn hình.
Câu 2:
a) Có đoạn chương trình sau:
enum Days{Monday, Tuesday, Wenesday,Thursday, Friday, Saturday, Sunday};
Days & operator ++(Days & d, int){
if(d==Sunday)
return d=Monday;
int temp = d;
return d = static_cast<Days>(++temp);


CNT45DH
GROUP

Câu 1:
a) Cho lớp IntList cài đặt danh sách móc nối các số nguyên được khai báo như sau:
class IntList{
public:
IntList(); // khởi tạo danh sách rỗng kích thước bằng 100
IntList(int Size); // khởi tạo danh sách rỗng kích thước bằng Size
int getFirst(); // trả về giá trị phần tử ở đầu danh sách
int getLast(); // trả về giá trị phần tử ở cuối danh sách
void delFirst(); // xóa phần tử ở đầu danh sách
Void delLast(); // xóa phần tử ở cuối danh sách
int getSize(); // trả về số phần tử của danh sách
private:
int * data
int size;
};
Dựa vào lớp IntList hãy kế thừa và xây dựng lớp IntStack gồm các phương thức sau:
IntStack(); // khởi tạo stack rỗng kích thước bằng 100
IntStack(int Size); // khởi tạo stack rỗng kích thước bằng Size
Bool isEmpty(); // kiểm tra stack rỗng
int Pop(); // loại bỏ phần tử ở đỉnh stack
void Push(int); // thêm 1 phần tử vào đỉnh stack
b) Thế nào là ràng buộc động, cho ví dụ? Cách thức trình biên dịch giải quyết ràng buộc
động?
Câu 2:
a) Cho lớp Song và một đoạn chương trình như sau:
class Song{

Chủ nhiệm bộ môn

CNT45DH
GROUP

Câu 1:
a) Cho lớp Set cài đặt một tập hợp các ký tự được khai báo như sau:
const int MAX_SIZE = 255;
class CharSet{
public:
CharSet();
Bool isIn(char) const; // kiểm tra xem một ký tự có trong tập hợp không
Bool isFull()const; // kiểm tra tập hợp đã đầy chưa
Bool isEmpty() const; // kiểm tra tập hợp rỗng
int getSize() const; // trả về số phần tử của tập hợp
void add(char); // thêm vào tập hợp một ký tự mới
void del(char); // loại bỏ một ký tự khỏi tập hợp
void print()const; // in các ký tự trong tập hợp ra màn hình
private:
char data[MAX_SIZE];
int top;
};
Hãy cài đặt các các hàm của lớp Set trừ hai hàm getSize() và print().
b) Cài đặt hàm toán tử + thực hiện phép toán hợp hai tập hợp, kết quả trả về là một tập
hợp mới.
Câu 2:
a) Cho một hàm bản mẫu hoán đổi giá trị của hai đối tượng bất kỳ và đoạn chương trình
sau:
template<class T>
void swap(T& x, T& y){

Chủ nhiệm bộ môn

CNT45DH
GROUP

Câu 1:
a) Cho lớp Animal mô tả các đối tượng động vật nói chung và lớp Cat mô tả các đối
tượng mèo kế thừa từ lớp Animal và có thêm 1 thành viên dữ liệu là color để mô tả
màu lông, lớp Animal được khai báo như sau:
class Animal{
public:
Animal(char * N = “”):age(0){
name = new char[strlen(N)+1];
strcpy(name, N);
}
Animal(char * N, int Age):age(Age){
name = new char[strlen(N)+1];
strcpy(name, N);
}
~Animal(){delete name;}
private:
char * name;
int age;
};
Giả sử lớp Cat có hai cấu tử: một cấu tử mặc định và một cấu tử có đầy đủ 3 tham số cho
các biến thành viên và một hủy tử. Hãy đưa ra cài đặt của lớp Cat.
b) Nêu sự khác nhau giữa việc gọi một hàm ảo và một hàm bình thường? Có thể thực
hiện chồng hàm hủy tử của một lớp được không, tại sao?
Câu 2:
Cho lớp bản mẫu Stack được khai báo như sau:

Khoa CNTT – Bộ môn KHMT
Chủ nhiệm bộ môn

CNT45DH
GROUP

Câu 1:
a) Cho hai lớp A, B các lớp C, D dựa trên hai lớp A, B như sau:
class C{
class D{
public:
public:
C();
D();
~C();
~D();
private:
private:
A aObj;
A aObjList[10];
B bObj;
};
};
Giả sử các lớp A, B có đầy đủ các hàm cấu tử và hủy tử hãy cho biết thứ tự gọi tới các
hàm cấu tử và hủy tử của hai đối tượng aObj, bObj đối với lớp C và các đối tượng của
mảng aObjList đối với lớp D.
b) Chỉ ra các chỗ sai trong đoạn chương trình sau và sửa lại (có thể bỏ đi nếu cần thiết)
cho đúng:
class Point {
public:


ĐỀ THI THAM KHẢO MÔN LẬP TRÌNH HƯỜNG ĐỐI TƯỢNG VÀ C++

Đề thi môn
Lập trình hướng đối tượng và C++
Đề số

Khoa CNTT – Bộ môn KHMT
Chủ nhiệm bộ môn

CNT45DH
GROUP

Câu 1:
a) Cho lớp Stdlib được khai báo như sau:
class Stdlib {
public:
static int strlen(const char* s) { return ::strlen(s); }
static int strcmp(const char* a, const char* b) { return ::strcmp(a, b); }
};
Khai báo trên có gì sai không, nếu có hãy chỉ rõ chỗ sai và sửa lại. Cho biết giá trị của
sizeof(Stdlib). Để sử dụng các phương thức của lớp Stdlib có cần tạo ra đối tượng nào
tương ứng hay không, cho ví dụ cụ thể?
b) Cho hai lớp Base và Derived được khai báo như sau:
class Base {
class Derived : public Base {
private:
private:
int x;
int y;

void sort(); // sắp xếp danh sách
~LinkList();};
Hãy đưa ra cài đặt đầy đủ của lớp LinkList và cho biết một lớp C bất kỳ cần thỏa mãn điều
kiện gì để có thể sử dụng lớp thể nghiệm LinkList<C>.
Thời gian làm bài là 60 phút – Thí sinh không được phép mở bất kỳ tài liệu nào

8




Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status