Lập trình hướng đối tượng - 5

b. pa = (*(A+1)) + 1;

c. pa = &A[1][1];

d. pa = *((*(A+1)) + 1);

9. Giả sử ta khai báo một hàm có sử dụng con trỏ hàm với khuôn mẫu như sau: int Calcul(int a, int b, int (*Xcalcul)(int x, int y)){},

và ta có cài đặt một số hàm như sau: int add(int a, int b);

void cal(int a, int b); int squere(int a);

khi đó, lời gọi hàm nào sau đây là đúng:

a. Calcul(5, 10, add);

b. Calcul(5, 10, add(2, 3));

c. Calcul(5, 10, cal);

Có thể bạn quan tâm!

Xem toàn bộ 256 trang tài liệu này.

d. Calcul(5, 10, squere);

10. Ta muốn cấp phát bộ nhớ cho một con trỏ kiểu int và khởi đầu giá trị cho nó là

Lập trình hướng đối tượng - 5

20. Lệnh nào sau đây là đúng:

a. int *pa = 20;

b. int *pa = new int{20};

c. int *pa = new int(20);

d. int *pa = new int[20];

11. Ta muốn cấp phát bộ nhớ cho một mảng động kiểu int có chiều dài là 20. Lệnh nào sau đây là đúng:

a. int *pa = 20;

b. int *pa = new int{20};

c. int *pa = new int(20);

d. int *pa = new int[20];

12. Xét đoạn chương trình sau: int A[5] = {10, 20, 30, 40, 50}; int *pa = A;

pa = new int(2); khi đó, *pa = ?

a. 10

b. 30

c. 2

d. Không xác định

13. Xét đoạn chương trình gồm 4 dòng lệnh sau: int A[5] = {10, 20, 30, 40, 50};

int *pa = A; pa += 15;

delete pa;

Đoạn chương trình trên có lỗi ở dòng nào?

a. 1

b. 2

c. 3

d. 4

14. viết chương trình thực hiện các phép toán cộng, trũ, nhân, chia trên đa thức. Các đa thức được biểu diễn bằng mảng động một chiều. Bậc cđa đa thức và các hệ số tương ứng được nhập từ bàn phím.

15. viết chương trình thực hiện các phép toán cộng, trũ, nhân hai ma trận kích thước m*n. Các ma trận được biểu diễn bằng mảng động hai chiều. Giá trị kích cỡ ma trận (m, n) và giá trị các phần tử cđa ma trận được nhập từ bàn phím.

16. Để định nghĩa một cấu trúc sinh viên có tên là Sinhvien, gồm có tên và tuổi sinh viên. Định nghĩa nào sau đây là đúng:

a. struct Sinhvien

{

char name[20]; int age;

};

b. struct

{

char name[20]; int age;

} Sinh vien;

c. typedef struct Sinhvien

{

char name[20]; int age;

};

17. Một cấu trúc được định nghĩa như sau: struct Employee

{

char name[20]; int age;

};

khi đó, cách khai báo biến nào sau đây là đúng:

a. struct Employee myEmployee;

b. struct employee myEmployee;

c. Employee myEmployee;

d. employee myEmployee;

18. Một cấu trúc được định nghĩa như sau: typedef struct employee

{

char name[20]; int age;

} Employee;

khi đó, cách khai báo biến nào sau đây là đúng:

a. Employee myEmployee;

b. employee myEmployee;

c. struct Employee myEmployee;

d. struct employee myEmployee;

19. Với cấu trúc được định nghĩa như trong bài 3. Khi đó, cách khởi tạo biến nào sau đây là đúng:

a. Employee myEmployee = {A, 27};

b. Employee myEmployee = {A, 27};

c. Employee myEmployee = (A, 27);

d. Employee myEmployee = (A, 27);

20. Với cấu trúc được định nghĩa như trong bài 3. Khi đó, các cách cấp phát bộ nhớ cho biến con trỏ nào sau đây là đúng:

a. Employee *myEmployee = new Employee;

b. Employee *myEmployee = new Employee();

c. Employee *myEmployee = new Employee(10);

d. Employee *myEmployee = new Employee[10];

21. Định nghĩa một cấu trúc về môn học cđa một học sinh có tên Subject, bao gồm các thông tin:

ư Tên môn học, kiểu char[];

ư Điểm tổng kết môn học, kiểu float;

22. Định nghĩa cấu trúc về học sinh tên là Student bao gồm các thông tin sau:

ư Tên học sinh, kiểu char[];

ư Tuổi học sinh, kiểu int;

ư Lớp học sinh, kiểu char[];

ư Danh sách điểm các môn học cđa học sinh, kiểu là một mảng các cấu trúc Subject

đã được định nghĩa trong bài tập 21.

ư Xềp loại học lực, kiểu char[];

23. Khai báo một biến có cấu trúc là Student đã định nghĩa trong bài 22. Sau đó, thực hiện tính điểm trung bình cđa tất cả các môn học cđa học sinh đó, và viết một thđ tục xềp loại họcsinh dựa vào điểm trung bình các môn học:

ư nếu điểm trung bình nhỏ hơn 5.0, xềp loại kém

ư nếu điểm trung bình từ 5.0 đến dưới 6.5, xềp loại trung bình.

ư nếu điểm trung bình từ 6.5 đến dưới 8.0, xềp loại khá

ư nếu điểm trung bình từ 8.0 trở lên, xềp loại giỏi.

24. viết một chương trình quản lí các học sinh cđa một lớp, là một dãy các cấu trúc có kiểu Student định nghĩa trong bài 22. Sử dụng thđ tục đã cài đặt trong bài 23 để thực hiện các thao tác sau:

ư Khởi tạo danh sách và điểm cđa các học sinh trong lớp.

ư Tính điểm trung bình và xềp loại cho tất cả các học sinh.

ư Tìm tất cả các học sinh theo một loại nhất định

25. viết một chương trình khai báo cấu trúc phân số, xây dựng các hàm và hàm toán tử để:

a. Nhập một phân số từ bàn phím

b. Hiển thị một phân số ra màn hình

c. Rút gọn một phân số đến dạng phân số tối giản

d. Tính tổng hai phân số

e. Tính hiệu hai phân số

f. Tính tích hai phân số

g. Tính thương hai phân số

26. viết một chương trình khai báo cấu trúc số phức, xây dựng các hàm và hàm toán tử để:

a. Nhập một số phức từ bàn phím

b. Hiển thị một số phức ra màn hình

c. Tính tổng hai số phức

d. Tính hiệu hai số phức

e. Tính tích hai số phức

f. Tính thương hai số phức

27. viết một chương trình khai báo cấu trúc Stack, xây dựng các hàm để:

a. Khởi tạo Stack rỗng

b. Kiểm tra Stack đầy

c. Kiểm tra Stack rỗng

c. Bổ sung một phần tử vào Stack

d. Loại bỏ phần tử ở đỉnh Stack

Sử dụng Stack để đổi một số nguyên dương từ hệ thập phân sang hệ nhị phân

28. viết một chương trình khai báo cấu trúc ma trận vuông cấp n, xây dựng các hàm và hàm toán tử để:

a. Nhập một ma trận từ bàn phím

b. Hiển thị một ma trận ra màn hình

c. Tính tổng hai ma trận

d. Tính hiệu hai ma trận

e. Tính tích hai ma trận

f. Tìm ma trận chuyển vị

29. viết chương trình khai báo cấu trúc một nút (phần tử) trong danh sách nối đơn có trường info có kiểu số nguyên và xây dựng các hàm để:

a. Tạo danh sách

b. Hiển thị danh sách

c. Bổ sung một phần tử vào cuối danh sách

d. Loại bỏ phần tử ở đầu danh sách

e. Sắp xềp các phần tử cđa danh sách theo thứ tự tăng dần cđa giá trị trường info

f. Tìm phần tử có giá trị trường info lớn nhất

g. Tìm phần tử có giá trị trường info bằng x cho trước

30. viết một chương trình khai báo cấu một nút (phần tử) trong danh sách nối kép có trường info có kiểu student định nghĩa trong bài 22 và các hàm để:

a. Tạo danh sách lưu trữ danh sách sinh viên

b. Hiển thị danh sách

c. Bổ sung một phần tử vào cuối danh sách(nút cực phải)

d. Loại bỏ phần tử ở đầu danh sách(nút cực trái)

e. Sắp xềp các phần tử cđa danh sách theo thứ tự từ trái sang phải giá trị trường tuổi sinh viên tăng dần

f. Tìm phần tử có giá trị trường tên sinh viên được nhập từ bàn phím.


Chương 2: Lớp và đối tượng

Nội dung cđa chương tập trung trình bày các vấn đề sau:

Lớp: định nghĩa lớp, thành phần cđa lớp, phạm vi truy xuất đến các thành phần cđa lớp.

Đối tượng: biến, mảng, con trỏ đối tượng.

Hàm, hàm bạn và các phương thức cđa lớp.


2.1. Định nghĩa lớp

Lớp là một kiểu dữ liệu do người dùng tự định nghĩa theo cú pháp:

class <tên lớp>

{


private:

<khai báo các thành phần riêng trong từng đối tượng>


public:

<khai báo các thành phần công cộng cđa từng đối tượng>

};

<định nghĩa cđa các phương thức chưa được định nghĩa bên trong khai báo lớp>

...

Trong đó: các thành phần cđa lớp bao gồm các thuộc tính và các phương thức. Mỗi thuộc tính được khai báo giống cú pháp khai báo biến, mỗi phương thức được khai báo giống khai báo hàm.

Ví dụ 2.1:

#include <iostream.h>

#include <conio.h> class point {

/*khai báo các thành phần dữ liệu riêng*/

private: int x,y;

/*khai báo các phương thức công cộng*/

public:

void init(int ox, int oy); void move(int dx, int dy); void display();

};

/*định nghĩa các phương thức bên ngoài khai báo lớp*/

void point::init(int ox, int oy)

{

cout<<"Ham thanh phan initn";

x = ox; y = oy; /*x,y là các thành phần cđa đối tượng gọi phương thức*/

}

void point::move(int dx, int dy)

{

cout<<"Ham thanh phan moven"; x += dx; y += dy;

}

void point::display()

{

cout<<"Ham thanh phan displayn"; cout<<"Toa do: "<<x<<" "<<y<<"n";

}

void main()

{

clrscr(); point p;

p.init(2,4); /*gọi phương thức từ đối tượng*/

p.display();

p.move(1,2);

p.display();

getch();

}


2.2. Phạm vi truy xuất

Khi khai báo các thành phần cđa lớp ta sử dụng các từ khoá private, protected, public để quy định phạm vi truy xuất đến các thành phần này. Các thành phần private chỉ được phép truy xuất trong phạm vi lớp mà nó được khai báo, các thành phần protected được phép truy xuất trong phạm vi lớp nó được khai báo và trong lớp dẫn xuất trực tiếp (lớp con) từ lớp đó, các thành phần public có phạm vi truy xuất trong toàn bộ chương trình.

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 03/07/2022