CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự do – Hạnh phúc

ĐÁP ÁN ĐỀ THI TỐT NGHIỆP CAO ĐẲNG NGHỀ KHÓA 3 (2009-2012) NGHỀ: LẬP TRÌNH MÁY TÍNH MÔN THI: LÝ THUYẾT CHUYÊN MÔN NGHỀ Mã đề thi: DA LTMT - LT33

Hình thức thi: Viết tự luận

Thời gian: 150 phút (không kể thời gian giao đề thi)

ĐÁP ÁN

Câu 1: (2.5 điểm)

Nội dung Điểm

TT a v× 1.5 điểm

b Không thuộc v×

1 điểm

Câu 2: (3 điểm)

Cho dãy khóa K: 32 43 18 80 60 59 93 70 55

Minh họa quá trình tìm kiếm X1 = 80; X2 = 81 theo phương pháp

tìm kiếm nhị phân.

TT Nội dung Điểm

Cho dãy khóa K:

32 43 18 80 60 59 93 70 55

3 điểm Minh họa quá trình tìm kiếm X1 = 80; X2 = 81 theo

phương pháp tìm kiếm nhị phân.

1 điểm Dãy khóa K:

32 43 18 80 60 59 93 70 55

Để có thể tìm kiếm được theo phương pháp tìm

kiếm nhị phân, dãy tìm kiếm phải là dãy có thứ tự. Ta

có thể sắp xếp dãy K theo thứ tự tăng dần:

Trang: 1/ 4

18 32 43 55 59 60 70 80 93

* Minh họa quá trình tìm kiếm X1 = 80 theo phương

pháp tìm kiếm nhị phân:

+ Khởi đầu: L = 1; R = 9.

- m = (L + R) div 2 = (1 + 9) div 2 = 5

- So sánh K[m] = K[5] = 59 < X1 nên tiếp

tục tìm kiếm X1 trong dãy con có:

L = 6; R = 9

+ Với L = 6; R = 9

- m = (L + R) div 2 = (6 + 9) div 2 = 7 1 điểm

- So sánh K[m] = K[7] = 70 < X1 nên tiếp

tục tìm kiếm X1 trong dãy con có:

L = 8; R = 9

+ Với L = 8; R = 9

- m = (L + R) div 2 = (8 + 9) div 2 = 8

- So sánh K[m] = K[8] = 80 = X1 nên quá

trình tìm kiếm dừng lại vì đã tìm thấy X1 tại vị trí thứ

8 trong dãy K. * Minh họa quá trình tìm kiếm X2 = 81 theo phương 1 điểm

pháp tìm kiếm nhị phân:

+ Khởi đầu: L = 1; R = 9.

- m = (L + R) div 2 = (1 + 9) div 2 = 5

- So sánh K[m] = K[5] = 59 < X2 nên tiếp

tục tìm kiếm X2 trong dãy con có:

L = 6; R = 9

+ Với L = 6; R = 9

- m = (L + R) div 2 = (6 + 9) div 2 = 7

- So sánh K[m] = K[7] = 70 < X2 nên tiếp

tục tìm kiếm X2 trong dãy con có:

L = 8; R = 9

+ Với L = 8; R = 9

Trang: 2/ 4

- m = (L + R) div 2 = (8 + 9) div 2 = 8

- So sánh K[m] = K[8] = 80 < X2 nên tiếp

tục tìm kiếm X2 trong dãy con có:

L = 9; R = 9

+ Với L = 9; R = 9

- m = (L + R) div 2 = (9 + 9) div 2 = 9

- So sánh K[m] = K[9] = 80 > X2 nên tiếp

tục tìm kiếm X2 trong dãy con có:

L = 9; R = 8 + Với L = 9; R = 8 ta thấy L > R nên quá trình

tìm kiếm dừng lại mà không tìm thấy X2 trong dãy

khóa K

Câu 3: (1.5 điểm)

Cho biết kết quả hiển thị ra màn hình của đoạn chương trình sau: Lập bảng để giải thích từng dòng lệnh #include; int main () { int value1 = 5, value2 = 15; int *p1, *p2; p1 = &value1; p2 = &value2; *p1 = 10; *p2 = *p1; p1 = p2; *p1 = 20; cout << "value1==" << value1 << "/ value2==" << value2; return 0; } TT Nội dung

Value1 =10, value2 =20

Điểm 0.5 điểm 1 điểm Lệnh

int value1 = 5, value2 = 15; Giá trị của các biến Khai báo 2 biến value1

Trang: 3/ 4

và value2 kiểu int và

gán giá trị cho 2 biển.

Value1 =5,value2 =15 khai con trỏ p1,p2 kiểu int *p1, *p2;

int Cho con trỏ p1 trỏ tới

p1 = &value1; p2 = &value2; địa chỉ của value1 và

con trỏ p2 trỏ tới

value2 Gán giá trị của ô nhớ *p1 = 10;

con trỏ p1 đang trỏ tới

bằng 10=> value1 =10 Giá trị trỏ bỏi p2 gán *p2 = *p1

= giá trị trỏ bởi p1

Lúc này value1 = 10,

value 2 =10 Phép gán 2 con trỏ, lúc p1 = p2;

này p1 cũng trỏ tới

value2 giá trị trỏ bới p1 sẽ *p1 = 20;

được gán là 20=>

value2 =20 In tr màn hình value 1=

10/ value2 = 20

cout << "value1==" << value1 << "/ value2==" << value2; return 0;

Trang: 4/ 4