Bài 7. Con trỏ Mục tiêu: 1. Luyện tập sử dụng con trỏ và địa chỉ của các biến 2. Sử dụng con trỏ khi thao tác với mảng. Giới hạn: không dùng các thư v

Tài liệu tương tự
Lập trình và ngôn ngữ lập trình

Animation, Modules 6 - Hoạt hình, tách file

Hàm và lớp template trong Lập trình hướng đối tượng Hàm và lớp template trong Lập trình hướng đối tượng Bởi: unknown Trong phần này, chúng ta tìm hiểu

Ví dụ về duyệt đồ thị ưu tiên chiều sâu DFS và ứng dụng Đồ thị ví dụ: Nguyễn Hữu Tuân vimaru.edu.vn Hình 1: Đồ thị vô hướng có 8 đỉnh Với đồ thị trên,

Template and Exception Template and Exception Bởi: Thanh Hiền Vũ TEMPLATE Trong phần này, chúng ta tìm hiểu về một trong các đặc tính còn lại của C++,

Chương trình dịch

Microsoft Word - Day_lop_4_P1.doc

Trường ĐHBK Hà Nội Khoa Điện Bộ môn Điều khiển Tự động Tài liệu hướng dẫn thực hành: KĨ THUẬT LẬP TRÌNH C/C++ Bài 1: Lập trình cơ sở 1 Mục đích bài th

Câu lệnh (statement) Câu lệnh (statement) Bởi: Khuyet Danh Trong C# một chỉ dẫn lập trình đầy đủ được gọi là câu lệnh. Chương trình bao gồm nhiều câu

Trường Đại học Dân lập Văn Lang - Nội san Khoa học & Đào tạo, số 5, 11/2005 NHÓM HỌC TẬP SÁNG TẠO THS. NGUYỄN HỮU TRÍ Trong bài viết này tôi muốn chia

NGÔN NGƯ LÂ P TRIǸH Biên tập bởi: nguyenvanlinh

MỘT SỐ GIẢI PHÁP NHẰM NÂNG CAO CHẤT LƯỢNG GIẢNG DẠY CÁC MÔN LÝ LUẬN CHÍNH TRỊ CỦA CÁC TRƯỜNG CAO ĐẲNG, ĐẠI HỌC Ở NƯỚC TA HIỆN NAY TS. Võ Minh Hùng Bộ

Những cơ sở của ngôn ngữ C# Những cơ sở của ngôn ngữ C# Bởi: phamvanviet truonglapvy Trong chương này sẽ trình bày về hệ thống kiểu trong C#; phân biệ

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TIN HỌC ĐẠI CƯƠNG Bài 5. Kiểu dữ liệu và biểu thức trong C Nội dung 1. Các ki

Microsoft Word - KY YEU Hoi thao Lien Hiep nam thanh + dung.doc

MỘT SỐ LƯU Ý KHI DẠY CÁC TIẾT ÔN TẬP CHƯƠNG Môn Tin học cung cấp cho học sinh những kiến thức phổ thông về ngành khoa học tin học, hình thành và phát

Chuyên đề

SÁCH TRÒ CHƠI AWANA

Giáo án Âm nhạc 9 Nhạc lí: Giới thiệu về dịch giọng Tập đọc nhạc: Giọng pha trưởng - TĐN số 3 I. Mục tiêu: - Có khái niệm sơ bộ về dịch giọng, đó là s

DANH MỤC ĐỀ TÀI TIỂU LUẬN MÔN HỌC

Microsoft Word - cau-truc-du-lieu-hang-doi.docx

BỘ VĂN HÓA, THỂ THAO VÀ DU LỊCH TRƯỜNG ĐẠI HỌC VĂN HÓA TP. HỒ CHÍ MINH & QUY CHẾ HỌC VỤ Tài liệu dành cho sinh viê

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TIN HỌC ĐẠI CƯƠNG Bài 13. Hàm Nội dung 1. Khái niệm hàm 2. Khai báo và sử dụn

CHƯƠNG 1

Trường Tiểu học Trung Lập Thượng Khối 1 Giáo viên: Nguyễn Thanh Quang Ngày dạy: thứ, ngày tháng năm 201 Môn Mỹ thuật tuần 19 Chủ đề EM VÀ NHỮNG VẬT NU

daithuavoluongnghiakinh

PowerPoint Template

Chương 1:

Lớp và đối tượng-các hàm và các lớp friend Lớp và đối tượng-các hàm và các lớp friend Bởi: Thanh Hiền Vũ CÁC HÀM VÀ CÁC LỚP friend Một hàm friend của

Microsoft Word - Con se lam duoc.doc

VanHocVaDaoDuc_LNT

1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TIN HỌC ĐẠI CƯƠNG Bài 11. Mảng và xâu kí tự Nội dung 1. Mảng 2. Xâu kí tự 2 1

Phân tích bài Tiếng nói của văn nghệ

50. Làm cách nào để người ta ngoan ngoãn bước vào trại tù mặc dù không biết trước ngày về? Đó là câu hỏi mà nhiều người không bị nếm mùi «học tập cải

TÀI LIỆU PHỔ BIẾN TẠI PHÒNG THI

Nguồn Động lực BÁO CÁO CỦA Sample Report Nguồn Động lực Bản đánh giá Phong cách động lực Báo cáo của: Sample Report Ngày: 08/06/2017 Bản quyền Copyrig

Nghị định số 159/2013/NĐ-CP ngày 12/11/2013 quy định xử phạt vi phạm hành chính trong hoạt động báo chí, xuất bản

Document

A DI ĐÀ KINH SỚ SAO DIỄN NGHĨA A DI ĐÀ KINH SỚ SAO DIỄN NGHĨA Liên Trì Đại Sư Chùa Vân Thê soạn Sớ Sao Pháp Sư Cổ Đức Diễn Nghĩa Giảng giải: Pháp Sư T

Chương trình dịch

Chuyên đề năm 2017: Học tập và làm theo tư tưởng, đạo đức, phong cách Hồ Chí Minh về phòng, chống suy thoái tư tưởng chính trị, đạo đức, lối sống, tự

ĐẠI HỌC MỞ TP.HCM KHÓA BỒI DƯỠNG NGHIỆP VỤ GIÁM SÁT THI CÔNG XÂY DỰNG CÔNG TRÌNH CHUYÊN NGÀNH GIÁM SÁT THI CÔNG XÂY DỰNG CÔNG TRÌNH GIAO THÔNG Bài Giả

BỘ GIÁO DỤC VÀ ĐÀO TẠO VIỆN ĐẠI HỌC MỞ HÀ NỘI CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc Số: 318 /QĐ-ĐHM Hà Nội, ngày 26 tháng 08

PHÓNG SANH VẤN ĐÁP

ẤN QUANG PHÁP SƯ VĂN SAO TỤC BIÊN ẤN QUANG PHÁP SƯ VĂN SAO TỤC BIÊN Giảng giải: Đại Sư Ấn Quang Việt dịch: Bửu Quang Tự đệ tử Như Hòa PHẦN MƯỜI HAI 19

Hướng dẫn Bắt đầu Nhanh Microsoft Publisher 2013 trông khác với các phiên bản trước, vì vậy chúng tôi tạo ra hướng dẫn này để giúp bạn dê dàng nắm bắt

Bài thu hoạch chính trị hè Download.com.vn

Ngày xưa - Thành Bắc Ninh Tỉnh Bắc Ninh là cửa ngõ của cố đô Thăng Long, là vùng đất trung chuyển giữa kinh đô xưa với miền địa đầu giáp giới Trung Qu

Chuỗi Chuỗi Bởi: phamvanviet truonglapvy Chuỗi (string) trong C# là một kiểu dựng sẵn như các kiểu int, long, có đầy đủ tính chất mềm dẻo, mạnh mẽ và

NGƯỜI CHIẾN SĨ KHÔNG QUÂN PHỤC Tam Bách Đinh Bá Tâm Tôi vốn xuất thân trong một dòng tộc mà ba thế hệ đều có người làm quan văn và không vị nào theo b

Để Hiểu Thấu Hành Đúng Pháp Hộ Niệm DIỆU ÂM (MINH TRỊ) 1

Nhúng mã-cách khai báo biến Nhúng mã-cách khai báo biến Bởi: Khoa CNTT ĐHSP KT Hưng Yên Nhúng mã javascript trong trang HTML Bạn có thể nhúng JavaScri

whitepaper_vi.pages

Lương Sĩ Hằng Ðại Hạnh Siêu Sinh

LUẬT GIỐNG VÀ BẢO HỘ GIỐNG CÂY TRỒNG NHẬT BẢN (Luật số 83 ngày 29 tháng 05 năm 1998) được sửa đổi bằng Luật số 49/2007. *Bản dịch tiếng được cung cấp

HỌC VIỆN NÔNG NGHIỆP VIỆT NAM SỔ TAY SINH VIÊN (Dùng cho sinh viên khóa 63) Sinh viên : Mã sinh viên :..

Microsoft Word - NOI DUNG BAO CAO CHINH TRI.doc

Kỹ năng tạo ảnh hưởng đến người khác (Cẩm nang quản lý hiệu quả) Roy Johnson & John Eaton Chia sẽ ebook : Tham gia cộn

BỘ GIÁO DỤC VÀ ĐÀO TẠO

UBND THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THỦ ĐỨC ĐẠO ĐỨC TRI THỨC KỸ NĂNG SỔ TAY HỌC SINH SINH VIÊN HỌC KỲ I, NĂM HỌC Đào tạo ng

LỜI TỰA Sau khi cuốn sách Kinh nghiệm thành công của ông chủ nhỏ đầu tiên của tôi được phát hành, không ngờ chỉ trong vòng nửa năm đã có tới hơn một t

ZTE-G R255 越南说明书.doc

NGHIÊN CỨU & TRAO ĐỔI CÁC ĐẶC TRƯNG VÀ NGUYÊN TẮC CƠ BẢN TRONG VIỆC GIẢNG DẠY CÁC MÔN LÝ LUẬN CHÍNH TRỊ Ở CÁC TRƯỜNG CAO ĐẲNG VÀ ĐẠI HỌC TÓM TẮT Nguyê

Hãy chọn phương án đúng CÂU HỎI TRẮC NGHIỆM TIN HỌC 7 HK1 Câu 1: Bảng tính thường được dùng để: a. Tạo bảng điểm của lớp em b. Bảng theo dõi kết quả h

Microsoft Word - 45-RÔ-MA.docx

MÔN SINH HỌC 11 GV. Phạm Hữu Nghĩa GIÁO ÁN BÀI 24: ỨNG ĐỘNG I. MỤC TIÊU BÀI HỌC: Qua bài này HS phải: 1. Kiến thức: - Nêu được khái niệm ứng động. - P

quytrinhhoccotuong

MICHAEL WILKINSON ĐỌC VỊ KHÁCH HÀNG BUYING STYLES Bản quyền tiếng Việt 2011 Công ty Sách Alpha Tùng Linh dịch NHÀ XUẤT BẢN LAO ĐỘNG - XÃ HỘI Dự án 1.0

I. MỤC ĐÍCH - YÊU CẦU 1. Kiến thức: - Trẻ biết tên bài tập Bật tách, khép chân qua 7 ô. - Trẻ biết dùng sức của đôi chân để bật tách, khép chân qua cá

giáo án dạy thêm môn Toán lớp 6 - Download.com.vn

THÍCH CA PHƯƠNG CHÍ Việt dịch: Linh Sơn Pháp Bảo Đại Tạng Kinh

Trước khi sử dụng Hướng dẫn cơ bản Hướng dẫn chuyên sâu Thông tin cơ bản về máy ảnh Chế độ tự động / Chế độ bán tự động Hướng dẫn sử dụng máy ảnh Chế

Cúc cu

Microsoft Word - coi-vo-hinh.docx

LỜI GIỚI THIỆU Chia sẽ ebook : Tham gia cộng đồng chia sẽ sách : Fanpage : C

Microsoft Word - IP Law 2005 (Vietnamese).doc

Microsoft PowerPoint - ChonBaiHatTrongPhungVu.pptx

2018 Nhận xét, phân tích, góp ý cho Chương trình môn Tin học trong Chương trình Giáo dục Phổ thông mới

Bình giảng tác phẩm “Chiếc thuyền ngoài xa” của Nguyễn Minh Châu

CÔNG TY TNHH XÂY DỰNG TXD CẨM NANG XÂY NHÀ Dành cho người xây nhà 1 P a g e

Tác giả: Giáo sư Andreas Thalassinos (Trưởng phòng Đào tạo của FXTM)

Chinh phục tình yêu Judi Vitale Chia sẽ ebook : Tham gia cộng đồng chia sẽ sách : Fanpage :

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM NGHỆ THUẬT TRUNG ƯƠNG NGUYỄN THỊ PHƯƠNG NHUNG DẠY HỌC MÔN TRANG TRÍ CHO NGÀNH CAO ĐẲNG SƯ PHẠM TIỂU HỌC

Microsoft Word - Bia trong.doc

Xã hội học số 2(54) 1996

Giải bài tập Ngữ văn lớp 12: Kiểm tra tổng hợp cuối học kỳ 1

Microsoft Word - SC_IN3_VIE.doc

Chiến lược kiểm thử Chiến lược kiểm thử Bởi: Khoa CNTT ĐHSP KT Hưng Yên Các công đoạn kiểm thử Quá trình kiểm thử có thể chia làm các giai đoạn : Kiểm

HƯỚNG ĐẠO, CHỈ THẾ THÔI! Lý thuyết và thực hành dành cho các Trưởng Hướng Đạo Nam và nữ. Hướng Đạo, đơn giản thế thôi! 1

Cảm nghĩ về người thân

Bài tập thực hành Chuyên đề 1 CNPM - Java Khoa CNTT- Trường ĐH Công nghệ TP.HCM Lab 01: LẬP TRÌNH JAVA CƠ BẢN VỚI NET BEANS A. MỤC TIÊU: Hướng dẫn tải

Giáo trình thực hành nghiệp vụ lễ tân

Uû Ban Nh©n D©n tp Hµ néi Céng hoµ x· héi chñ nghÜa viÖt nam

ĐỀ CƯƠNG ÔN TẬP HỌC KÌ I – LỚP 9

UM-VN A

SỰ SỐNG THẬT

Gia Sư Tài Năng Việt BÀI TẬP TIẾNG VIỆT LỚP 4 NÂNG CAO ĐỀ 1 ĐỌC THẦM VÀ TRẢ LỜI CÂU HỎI: HỌC ĐÀN HÃY HỌC IM LẶNG Bét to ven

QUY TRÌNH KỸ THUẬT AN TOÀN KHOAN ĐCCT (Ban hành theo QĐ số 292 /QĐ-QLKT ngày 05 tháng 07 năm 2016 của Công ty Cổ phần Tư vấn thiết kế kiểm định và Địa

Tài liệu Hướng dẫn sử dụng

Bản ghi:

Bài 7. Con trỏ Mục tiêu: 1. Luyện tập sử dụng con trỏ và địa chỉ của các biến 2. Sử dụng con trỏ khi thao tác với mảng. Giới hạn: không dùng các thư viện stl (chẳng hạn vector, algorithm) Yêu cầu nộp bài : Toàn bộ 7 bài phần A, và. 3 câu hỏi phần B. Lời giải cho B viết vào file readme.txt Lưu ý: chép bài hoặc cho chép bài sẽ dẫn đến trượt môn học! A. Thực hành 1. Lỗi sử dụng con trỏ. Hãy chạy chương trình thử nghiệm các đoạn code lỗi đã cho trong bài giảng. 2. Mảng truyền vào hàm dạng con trỏ. Hãy viết một chương trình demo rằng khi truyền tham số, mảng được truyền vào hàm ở dạng con trỏ chứ không phải dạng mảng. Gợi ý: khai báo một mảng một chiều A, in kích thước của mảng bằng toán tử sizeof. Sau đó, viết thêm một hàm f nhận tham số kiểu mảng (thử cả mảng không xác định cũng như có xác định kích thước) và in ra kích thước của mảng. So sánh kết quả của sizeof đối với mảng A từ bên trong hàm f và bên ngoài - nơi khai báo mảng A. 3. Truy nhập mảng. Viết môt hàm count_even(int*, int) nhận tham số là một mảng và kích thước, và trả về số số chẵn trong mảng. Viết hàm main demo việc sử dụng hàm cho một mảng (có thể hardcode - khởi tạo tại chỗ không cần nhập) cho các trường hợp gọi hàm count_even() cho đoạn 5 phần tử đứng đầu mảng và đoạn 5 phần tử đứng cuối mảng. 4. Tìm kiếm nhị phân. Hãy viết lại chương trình tìm kiếm nhị phân mà bạn đã làm (đệ quy hay vòng lặp đều được) nhưng hàm tìm kiếm truy nhập mảng hoàn toàn bằng con trỏ. 5. Dangling references. Hãy viết chương trình thử nghiệm lỗi con trỏ truy nhập vùng bộ nhớ không hợp lệ. Thử cho hàm main() gọi weird_string() và in kết quả trả về. Xem trình biên dịch cảnh báo những gì và bạn có nhận xét gì về output của hàm main? char* weird_string() { char c[] = 123345 ; return c; Bài học cần rút ra từ thử nghiệm này là không được trả về địa chỉ của một vùng nhớ không hợp lệ. Mảng c là biến địa phương của hàm weird_string, khi truy nhập mảng c khi hàm weird_string đã kết thúc, ta đang truy nhập vào vùng bộ nhớ stack đã bị thu hồi, không

thể đảm bảo dữ liệu cũ vẫn còn ở đó, thậm chí có thể dẫn đến các lỗi hệ thống nghiêm trọng khác. 6. Tham số dòng lệnh của hàm main(). Cho chương trình thử nghiệm dưới đây: int main(int argc, const char * argv[]) { cout << "Number of command-line arguments: " << argc << endl; for (int i = 0; i < argc; i++) { cout << "Argument #" << i << ": _" << argv[i] << "_\n"; return 0; Đó là một ví dụ demo việc lấy tham số dòng lệnh. Bạn cần chạy chương trình từ cửa sổ cmd. Chẳng hạn nếu biên dịch ra file test-cmd.exe. Hãy thử chạy các lệnh sau từ dấu nhắc cmd để quan sát kết quả của chương trình: test-cmd test-cmd first second 3rd test-cmd 1 Hãy sửa bài A8 (BT06) để nhận N từ tham số dòng lệnh hoặc sửa domin (BT05) để nhận kích thước bảng mìn và số mìn từ tham số dòng lệnh. Ví dụ bạn có thể chạy dò mìn với kích thước 3 dòng 4 cột 2 quả mìn bằng lệnh sau tại cửa sổ cmd: domin 3 4 2 Tất nhiên, chương trình không được yêu cầu nhập kích thước và số mìn nữa. 7. Hàm xử lý xâu. Sử dụng hàm strcmp ( http://www.cplusplus.com/reference/cstring/strcmp/ ) hãy viết một chương trình nhận 2 tham số từ dòng lệnh là hai xâu kí tự, đếm xem xâu thứ nhất xuất hiện bao nhiêu lần trong xâu thứ hai. In kết quả ra màn hình. B. Câu hỏi 1. Cho đoạn lệnh sau. char c = A', d = B'; char* p1 = &c; char* p2 = &d; char* p3; Giả sử địa chỉ của c là 0x1234, địa chỉ của b là 0x5678. Hỏi output của đoạn lệnh sau là gì? p3 = &d; cout << *p3 = << *p3 <<, p3 = << p3 << endl; p3 = p1; cout << *p3 = << *p3 <<, p3 = << p3 << endl; *p1 = *p2;

cout << *p1 = << *p1 <<, p1 = << p1 << endl; 2. Cho các lệnh sau. int *p; int i; int k; i = 4; k = i; p = &i; (Những) lệnh nào trong số các lệnh dưới đây sẽ gán cho i giá trị 5? k = 5; *k = 5; p = 5; *p = 5; 3. Giải thích lỗi sau: char c = C'; double *p = &c; C. Bài tập 1. Viết hàm mô phỏng quá trình đổ 1 quân xúc xắc (trả về giá trị trong khoảng từ 1-6), Sử dụng hàm đổ xúc xắc trên viết chương trình mô phỏng trò chơi sau: Hai người chơi, lần lượt đổ 1 xúc xắc, tổng điểm được cộng gộp vào cho mỗi người chơi. Ai có tổng điểm BẰNG 100 trước là thắng. Đổi lượt đổ xúc xắc cho người chơi kia theo 2 cách: A. Mỗi người chơi lần lượt đổ xúc xắc. B. Người có tổng điểm nhỏ hơn sẽ được đổ xúc xắc. Ví dụ với cách đổi lượt thứ nhất: xuc xac nguoi choi 1: 2 Tong nguoi 1: 2 xuc xac nguoi choi 2: 4 Tong nguoi 2: 4 xuc xac nguoi choi 1: 5 Tong nguoi 2: 7 xuc xac nguoi choi 2: 1 Tong nguoi 1: 5 Ví dụ với cách đổi lượt thứ hai: xuc xac nguoi choi 1: 2 Tong nguoi 1: 2 xuc xac nguoi choi 2: 4 Tong nguoi 2: 4 xuc xac nguoi choi 1: 5 Tong nguoi 1: 7 xuc xac nguoi choi 2: 1 Tong nguoi 2: 5 xuc xac nguoi choi 2: 1 Tong nguoi 2: 6 2. Viết chương trình giả lập trò chơi Rùa & Thỏ. Đường đua là một con dốc bao gồm 70 vị trí (tương ứng với 70 vị trí trên màn hình). Điểm đích của đường đua là đỉnh dốc,

tương đương vị trí 70. Cả rùa và thỏ bắt đầu từ chân dốc, tương đương vị trí 0. Rùa và thỏ cùng bắt đầu cuộc đua. Sau mỗi lượt, vị trí của rùa và thỏ trên đường đua được thay đổi ngẫu nhiên như sau: Vật Đua Loại chuyển động Tỷ lệ Bước chuyển động Rùa Tiến dài 50% Tiến 3 (+3) Tiến ngắn 30% Tiến 1 (+1) Trượt 20% Trượt 6 (-6) Thỏ Ngủ 20% Đứng im (0) Tiến dài 20% Tiến 9 (+9) Trượt dài 10% Trượt 12 (-12) Tiến ngắn 30% Tiến 1 (+1) Trượt ngắn 20% Trượt 2 (-2) Chú ý: chú ý nếu trượt quá vạch xuất phát thì đưa rùa/thỏ trở lại vạch xuất phát (không có vị trí <0). Viết hàm giả lập chuyển động cho rùa & thỏ như ở bảng trên. Thông báo khi cuộc đua bắt đầu và kết thúc. Thông báo người thắng cuộc. Thông báo vị trí của rùa & thỏ sau mỗi lượt, in ra R (rùa) & T (thỏ). In ra vị trí bắt đầu và kết thúc của đường đua trong suốt cuộc đua. In ra chi tiết mỗi bước chuyển động của rùa và thỏ. Nâng cao: sử dụng con trỏ hàm để viết hàm giả lập chuyển động cho rùa & thỏ: void chay(int& vitri, int (*buoc)()); 3. Viết chương trình giả lập trò chơi Tiến Lên Kiểu Úc cho 4 người chơi. Bộ bài gồm 52 quân, mỗi quân bài có thông tin về số (2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A) và chất (,,, ). Mỗi quân bài có quyền ưu tiên dựa trên số rồi chất (nếu số giống nhau). Mức ưu tiên tăng dần theo số: 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A; và theo chất,,,. Ví dụ 4 ưu tiên cao hơn 4 và 5 ưu tiên cao hơn 4. Ngoài ra nên có thông tin khóa cho mỗi quân bài (dựa trên khóa có thể xác định chính xác quân bài theo số & chất). Ví dụ khóa 0 cho quân 2, khóa 51 cho quân A. 1. Viết hàm xác định quân bài dựa trên khóa và quyền ưu tiên giữa hai quân bài dựa trên khóa: string inquanbai(int khoa); bool uutienhon(int khoa1, int khoa2); Bước 1 Tráo bộ bài: 52 quân bài được sắp xếp một cách ngẫu nhiên (có thể sử dụng khóa của quân bài). 2. Viết hàm tráo bài: void traobai(int *bobai); Bước 2 Chia bài: Chia hết bộ bài (52 quân bài) sau khi đã được tráo cho 4 người chơi, mỗi người lần lượt nhận một quân bài từ bộ bài đã tráo. Sau khi chia bài, mỗi người chơi có 13 quân bài. 3. Viết hàm chia bài và hàm in bộ bài của mỗi người chơi void chiabai(int *bobai, int **bobainguoichoi); void inbobainguoichoi(int *bobainguoichoi); Bước 3 Chơi bài: Người chơi có 2 (quân bài có quyền ưu tiên thấp nhất) được chơi

đầu tiên & người chơi đó phải chơi quân bài này. Người chơi tiếp theo (xác định dựa trên thứ tự ở Bước 2 Chia bài) chọn một quân bài ngẫu nhiên để chơi. Quân bài này được phép chơi ra nếu có quyền ưu tiên cao hơn quân bài người trước vừa chơi. Nếu không người đó sẽ mất lượt chơi tại vòng này. Người mất lượt sẽ không được chơi trong vòng cho tới khi vòng chơi kết thúc. Vòng chơi kết thúc khi chỉ còn lại một người chơi. Khi đó vòng mới bắt đầu (có 4 người chơi) với việc người cuối cùng còn lại trong vòng trước chơi một quân bài bất kỳ. Ván bài kết thúc ngay sau khi có một người chơi hết bài (không còn quân bài nào) và là người thắng ván đó. Tính điểm: mỗi quân bài còn lại của 3 người thua trong ván được tính là 1 điểm. Toàn bộ số điểm này được cộng cho người thắng ván đó. Ván bài mới bắt đầu lại từ việc tráo bài, chia bài, chơi bài (2 ) cho tới khi ai được 100 điểm đầu tiên thì trò chơi kết thúc. 4. Viết hàm xác định người chơi đầu tiên bắt đầu mỗi ván (2 ) int aico2bich(int **inbobainguoichoi); 5. Viết hàm chọn một quân bài bất kỳ từ bộ bài của người chơi. int chonbai(int *bobainguoichoi); 6. Viết hàm cho phép chơi quân bài vừa chọn. void choibai(int *bobainguoichoi, int quanbaivuachoi); 7. Viết hàm loại một người chơi khỏi vòng chơi & hàm xác định người chơi tiếp theo của vòng chơi. void loainguoichoi(int*, int&, int); int nguoichoitieptheo(int*, int, int); 8. Viết hàm kiểm tra xem đã có người chơi nào hết bài chưa. bool chuaaihetbai(int **bobainguoichoi); In ra các thông tin chi tiết trong quá trình chơi bài: Các quân bài hiện tại của mỗi người chơi Quân bài vừa chơi là quân gì (ai chơi). Người chơi tiếp theo là ai, chơi quân gì, có mất lượt không. Tổng điểm của mỗi người khi ván bài kết thúc. D. Câu hỏi trắc nghiệm 1. Câu lệnh nào sau đây thực hiện gán giá trị của n cho con trỏ *p int n = 5; int *p; i. p = n; ii. p = &n; iii. *p = n; iv. *p = &n;

2. Câu lệnh nào sau đây thực hiện chỉ con trỏ *p1 vào vị trí con trỏ *p2 đang chỉ i. *p1 = p2; ii. p1 = *p2; iii. p1 = p2; iv. *p1 = *p2 3. Đối với phép toán con trỏ, phát biểu nào sau đây có ý nghĩa lập trình i. Phép nhân trên con trỏ kiểu int ii. Phép cộng trừ trên con trỏ kiểu int iii. Phép gán với con trỏ kiểu int iv. Tất cả các phép toán với con trỏ kiểu int 4. Phát biểu nào sau đây chính xác i. Phép cộng trừ với các con trỏ ở mảng khác nhau ii. Phép cộng trừ với các con trỏ ở cùng mảng iii. Tất cả các phép toán với các con trỏ ở cùng mảng (trong giới hạn mảng) iv. Tất cả các phát biểu trên 5. Phát biểu nào sau đây đúng với con trỏ tới hàm i. Có thể được truyền vào trong trong ii. Có thể được trả về bới hàm iii. Có thể được lưu trong mảng iv. Tất cả các phát biểu trên 6. Khai báo hàm nào sau đây không đúng i. void bubble(int [], const int, bool (*) (int, int)); ii. void bubble(int [], const int, bool * (int, int)); iii. void bubble(int [], const int, (bool *) (int, int)); iv. void bubble(int [], const int, bool (* (int, int))); 7. Kết quả đoạn mã sau là gì: int a[6] = {1, 2, 3; int *b; b = &a[0]; for (int i=0; i<3; i++) switch (i%3) { case 0: *(b+i) = a[i]; break; case 1: *(b++) = a[i]; break; case 2: *(++b) = a[i]++; break; for (int i=0; i<3; i++) cout << a[i] << " "; i. 0 2 3 ii. 2 2 0 iii. 2 2 3

iv. 3 0 3