Đề thi cuối kỳ môn C Programming Introduction – ICT| Môn C Programming Introduction – ICT| Trường Đại học Bách Khoa Hà Nội

Trong ngân hàng đề thi gồm tối đa 100 câu hỏi, mỗi câu hỏi được lưu trữ với cấu trúc sau:
typedef struct {long ID; // Question ID int chapter; // Chapter (from 1 to 20) char content[50]; // Question content (containing space)}

Question;
Hãy viết chương trình dạng menu (2đ) thực hiện các chức năng sau (menu hiển thị khi bắt đầu
chương trình và sau khi thực hiện xong mỗi chức năng để người dùng lựa chọn):

Khoa Khoa hc máy tính
Trường Công ngh Thông tin & Truyn thông
Trường Đại hc Bách khoa Hà Ni
Đề thi cui k 20211
Hc phn: C Programming (Introduction)
IT3220
Thi gian: 90’
(Nghiêm cm sao chép bài thi ca người khác)
Ngày thi: 16/02/2022
ĐỀ BÀI
Trong ngân hàng đ thi gm tối đa 100 câu hỏi, mi câu hi được lưu trữ vi cu trúc sau:
typedef struct {
long ID; // Question ID
int chapter; // Chapter (from 1 to 20)
char content[50]; // Question content (containing space)
} Question;
Hãy viết chương trình dạng menu () thc hin các chức năng sau (menu hiển th khi bắt đầu
chương trình và sau khi thực hin xong mi chức năng để ngưi dùng la chn):
1/ Read (3đ): Yêu cầu người dùng nhp vào s câu hi. S câu hi n phi là s nguyên dương và 0 < n
<= 100. Nếu không tha mãn thì hiện thông báo “Must be > 0 and <= 100” và yêu cu nhp li ti khi
tha mãn. Sau đó nhp thông tin cho mi câu hi. Người dùng ch nhp chapter (1 <= chapter <= 20)
content (xâu tối đa 50 t cha khong trng) còn trường ID được t động sinh ra vi giá tr
bắt đầu 1 tăng thêm 1 cho mỗi câu hi mi. Trường chapter content ca mi câu hi đưc
nhp cùng lúc theo định dng: chapter, theo sau du cách, theo sau content (xem thêm gi ý
mc *). Sau khi nhp xong, chương trình in ra danh sách câu hi theo th t đã nhập. Dòng đu là
các header gm ID, Chap, và Content. Mi dòng mt câu hi theo th t ID, chapter, và content cách
nhau bi du tab, ni dung content nm trong cp dấu “”. Ví d:
ID Chap Content
1 1 Cau 1
2 2 “cau 2
3 1 Cau 3
2/ Search (1đ): Yêu cầu người dùng nhp vào mt ID hin th ra thông tin ca câu hỏi tương ng
trong danh sách theo định dạng như trong dụ chức năng 1/ Read. Nếu không có, hin th ra
thông báo “ID not found”.
3/ Add (1.5đ): Yêu cầu người dùng nhp thông tin cho câu hi mi thêm câu hi này vào danh
sách. Trường ID t động được to ra bng cách thêm 1 vào ID ln nht trong danh sách hin có. In ra
danh sách sau khi đã bổ sung câu hi theo định dạng như ví d trong chc năng 1/ Read.
4/ Count (1đ): Hin th danh sách các chapter trong ngân hàng cùng vi s câu hi trong mi
chapter này theo th t tăng dần ca chapter. Dòng đầu header gm Chap Count. d vi
danh sách phía trên:
Chap Count
1 2
2 1
5/ Check (1đ): soát ngân hàng câu hi, in ra các danh sách câu hi t chun" là các câu bắt đầu
bi mt ch cái in hoa và không cha mt trong các kí t ‘*’, ‘$’, và\’. Ví d:
ID Chap Content
1 1 Cau 1
3 1 Cau 3
6/ Exit (0.5đ): Thoát khỏi chương trình.
-Kết thúc-
* GI Ý: Có th áp dng hàm scanf có s dụng scanset để đọc cùng lúc mt s kiu int theo sau là
mt du cách và mt xâu có cha du cách bng mt lnh scanf ới đây.
// Gi s x và str lần lượt là các biến kiu s nguyên và kiểu xâu đã được khai báo
scanf("%d %[^\n], &x, str);
Gi s ngưi dùng nhp:
1 Cau 1
thì x s có giá tr = 1 và str s có giá tr “Cau 1”
| 1/2

Preview text:

Khoa Khoa học máy tính
Đề thi cuối kỳ 20211
Trường Công nghệ Thông tin & Truyền thông
Học phần: C Programming (Introduction)–
Trường Đại học Bách khoa Hà Nội IT3220 Thời gian: 90’
(Nghiêm cấm sao chép bài thi của người khác) Ngày thi: 16/02/2022 ĐỀ BÀI
Trong ngân hàng đề thi gồm tối đa 100 câu hỏi, mỗi câu hỏi được lưu trữ với cấu trúc sau: typedef struct { long ID; // Question ID int chapter; // Chapter (from 1 to 20) char content[50];
// Question content (containing space) } Question;
Hãy viết chương trình dạng menu (2đ) thực hiện các chức năng sau (menu hiển thị khi bắt đầu
chương trình và sau khi thực hiện xong mỗi chức năng để người dùng lựa chọn):
1/ Read (3đ): Yêu cầu người dùng nhập vào số câu hỏi. Số câu hỏi n phải là số nguyên dương và 0 < n
<= 100. Nếu không thỏa mãn thì hiện thông báo “Must be > 0 and <= 100” và yêu cầu nhập lại tới khi
thỏa mãn. Sau đó nhập thông tin cho mỗi câu hỏi. Người dùng chỉ nhập chapter (1 <= chapter <= 20)
và content (xâu tối đa 50 kí tự có chứa khoảng trắng) còn trường ID được tự động sinh ra với giá trị
bắt đầu là 1 và tăng thêm 1 cho mỗi câu hỏi mới. Trường chapter và content của mỗi câu hỏi được
nhập cùng lúc theo định dạng: chapter, theo sau là dấu cách, theo sau là content (xem thêm gợi ý
ở mục *).
Sau khi nhập xong, chương trình in ra danh sách câu hỏi theo thứ tự đã nhập. Dòng đầu là
các header gồm ID, Chap, và Content. Mỗi dòng một câu hỏi theo thứ tự ID, chapter, và content cách
nhau bởi dấu tab, nội dung content nằm trong cặp dấu “”. Ví dụ: ID Chap Content 1 1 “Cau 1” 2 2 “cau 2” 3 1 “Cau 3”
2/ Search (1đ): Yêu cầu người dùng nhập vào một ID và hiển thị ra thông tin của câu hỏi tương ứng
trong danh sách theo định dạng như trong ví dụ ở chức năng 1/ Read. Nếu không có, hiển thị ra
thông báo “ID not found”.
3/ Add (1.5đ): Yêu cầu người dùng nhập thông tin cho câu hỏi mới và thêm câu hỏi này vào danh
sách. Trường ID tự động được tạo ra bằng cách thêm 1 vào ID lớn nhất trong danh sách hiện có. In ra
danh sách sau khi đã bổ sung câu hỏi theo định dạng như ví dụ trong chức năng 1/ Read.
4/ Count (1đ): Hiển thị danh sách các chapter có trong ngân hàng cùng với số câu hỏi trong mỗi
chapter này theo thứ tự tăng dần của chapter. Dòng đầu là header gồm Chap và Count. Ví dụ với danh sách phía trên: Chap Count 1 2 2 1
5/ Check (1đ): Rà soát ngân hàng câu hỏi, in ra các danh sách câu hỏi "đạt chuẩn" là các câu bắt đầu
bởi một chữ cái in hoa và không chứa một trong các kí tự ‘*’, ‘$’, và ‘\’. Ví dụ: ID Chap Content 1 1 “Cau 1” 3 1 “Cau 3”
6/ Exit (0.5đ): Thoát khỏi chương trình. -Kết thúc-
* GỢI Ý: Có thể áp dụng hàm scanf có sử dụng scanset để đọc cùng lúc một số kiểu int theo sau là
một dấu cách và một xâu có chứa dấu cách bằng một lệnh scanf dưới đây.
// Giả sử x và str lần lượt là các biến kiểu số nguyên và kiểu xâu đã được khai báo
scanf("%d %[^\n]”, &x, str);
Giả sử người dùng nhập: 1 Cau 1
thì x sẽ có giá trị = 1 và str sẽ có giá trị “Cau 1”