Download as pdf or txt
Download as pdf or txt
You are on page 1of 2

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN, ĐHQG-HCM MÃ LƯU TRỮ

(do phòng KT-ĐBCL ghi)


ĐỀ THI KẾT THÚC HỌC PHẦN
Học kỳ 2 – Năm học 2016-2017

Tên học phần: Kỹ thuật lập trình Mã HP: CSC10002


Thời gian làm bài: 100 phút Ngày thi: 20/06/2017
Ghi chú: Sinh viên [  được phép /  không được phép] sử dụng tài liệu khi làm bài.

Họ tên sinh viên: …............................................................. MSSV: …………… STT: …..

Lưu ý: - Mã nguồn viết bằng ngôn ngữ lập trình C/C++.


- Khi viết các hàm đề bài yêu cầu, có thể phát sinh các hàm khác để hỗ trợ.

Câu 1 (2 điểm).
Hãy viết hàm getParagraph(char *&s) để đọc từ bàn phím một đoạn văn, sau đó lưu
vào chuỗi cấp phát động s. Biết rằng:
- Đoạn văn là một chuỗi ký tự có độ dài không xác định trước.
- Đoạn văn kết thúc bằng dấu chấm câu và ký tự xuống dòng.

Câu 2 (2 điểm).
Để tính tích giữa hai số nguyên không âm x và y, ta có công thức truy hồi sau:

Trong đó, các phép toán >> và << là các phép dịch phải và dịch trái bit.
Hãy viết hàm multiply(int x, int y) tính tích hai số nguyên bằng đệ quy dựa vào
công thức truy hồi trên.

Câu 3 (2 điểm).
Một danh sách liên kết đơn có thành phần dữ liệu là số nguyên được khai báo như sau:
struct Node {
int data;
Node* next;
};
Hãy viết hàm deleteRightDuplicates(Node *&head) xóa các phần tử trùng nhau
của danh sách liên kết, chỉ chừa lại những phần tử xuất hiện đầu tiên bên trái.
Ví dụ:
- Danh sách ban đầu: 1 3 6 3 1 5
- Danh sách sau khi xóa: 1 3 6 5
(Đề thi gồm 2 trang)
Họ tên người ra đề/MSCB: ......................................................... Chữ ký: ................ [Trang 1/2]
Họ tên người duyệt đề: .............................................................. Chữ ký: .................
CuuDuongThanCong.com https://fb.com/tailieudientucntt
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN, ĐHQG-HCM MÃ LƯU TRỮ
(do phòng KT-ĐBCL ghi)
ĐỀ THI KẾT THÚC HỌC PHẦN
Học kỳ 2 – Năm học 2016-2017
Câu 4 (2 điểm).
Cho mảng A gồm N số nguyên khác nhau. Hãy viết hàm liệt kê tất cả các tổ hợp 0-phần tử,
1-phần tử, 2-phần tử, …, n-phần tử của các số nguyên trong mảng (không cần theo thứ tự).
Ví dụ: n = 3, mảng A = {1, 2, 3} Hướng dẫn cách làm với n = 3.
Có tất cả 8 tổ hợp: Phát sinh các 3-bit tương ứng
với các tổ hợp.
{ },
1 2 3
{1}, {2}, {3},
0 0 0 0 { }
{1, 2}, {1, 3}, {2, 3}, 1 0 0 1 { 3 }
2 0 1 0 { 2 }
{1, 2, 3} 3 0 1 1 { 2 3 }
4 1 0 0 { 1 }
5 1 0 1 { 1 3 }
6 1 1 0 { 1 2 }
7 1 1 1 { 1 2 3 }

Câu 5 (2 điểm).
Thông tin của một sinh viên bao gồm: họ tên, mã số, năm sinh, lớp học, điểm trung bình.
Khi lưu vào tập tin nhị phân, thông tin sinh viên được lưu thành dãy byte liên tiếp nhau.
Ví dụ: sinh viên (Nguyen Van A, 1612999, 1998, 16CTTxx, 8.5)
Dãy ký tự ASCII
Dãy byte (hệ thập lục phân)
tương ứng
4E 67 75 79 65 6E 20 56 |61 6E 20 41 00 00 00 00 Nguyen Van A....
00 00 00 00 00 00 00 00 |00 00 00 00 00 00 00 31 ...............1
36 31 32 39 39 39 00 CE |07 31 36 43 54 54 78 78 612999.Î.16CTTxx
00 00 00 08 41 | ....A

Một tập tin nhị phân lưu trữ danh sách sinh viên. Thông tin của các sinh viên trong danh
sách được lưu trữ liên tiếp nhau, hết sinh viên này đến sinh viên khác.
Hãy thực hiện những yêu cầu sau:
- Khai báo kiểu cấu trúc biểu diễn một sinh viên được lưu trữ trong tập tin nhị phân.
- Viết hàm binaryToText(char *binFile, char *textFile) đọc danh sách
sinh viên từ tập tin nhị phân có tên quy định bởi binFile, và ghi danh sách đọc
được ra tập tin văn bản (ASCII TEXT) có tên quy định bởi textFile.
Khi lưu vào tập tin văn bản, thông tin mỗi sinh viên được lưu trên một dòng theo
định dạng: Mã số–Họ tên-Năm sinh-Lớp học-Điểm trung bình
Ví dụ: 1612999–Nguyen Van A-1998-16CTTxx-8.5

- HẾT -

(Đề thi gồm 2 trang)


Họ tên người ra đề/MSCB: ......................................................... Chữ ký: ................ [Trang 2/2]
Họ tên người duyệt đề: .............................................................. Chữ ký: .................
CuuDuongThanCong.com https://fb.com/tailieudientucntt

You might also like