Kiểu dữ liệu tự định nghĩa struct 1 - Ôn chuyên 2026
Struct nhân viên
Nộp bàiPoint: 1
Khai báo cấu trúc nhânviên. Biết rằng thông tin của một nhân viên bao gồm: họ tên (30 ký tự), ngày sinh (kiểu ngày), lương (số thực), giới tính (0. Nữ, 1.Nam).
Nhập thông tin cho n nhân viên, với n được nhập từ bàn phím.
Hiển thị danh sách các nhân viên có trong danh sách.
Liệt kê các nhân viên trên 40 tuổi trong danh sách.
Đếm số lượng nhân viên có lương lớn hơn 1.000.000 đồng trong danh sách.
Viết hàm sắp xếp các nhân viên giảm dần theo năm sinh (không quan tâm ngày và tháng sinh).
(năm hiện tại là năm 2025)
Input 01:
3
John Doe
15 5 1980
1200000
1
Jane Smith
20 10 1985
900000
0
Alice Brown
5 3 1970
1500000
0
Output:
Employee list:
Name: John Doe, DOB: 15/5/1980, Salary: 1200000, Gender: Male
Name: Jane Smith, DOB: 20/10/1985, Salary: 900000, Gender: Female
Name: Alice Brown, DOB: 5/3/1970, Salary: 1500000, Gender: Female
Employees over 40 years old:
Name: John Doe, DOB: 15/5/1980, Salary: 1200000, Gender: Male
Name: Alice Brown, DOB: 5/3/1970, Salary: 1500000, Gender: Female
Number of employees with salary > 1,000,000: 2
Employees sorted by year of birth (descending):
Name: Jane Smith, DOB: 20/10/1985, Salary: 900000, Gender: Female
Name: John Doe, DOB: 15/5/1980, Salary: 1200000, Gender: Male
Name: Alice Brown, DOB: 5/3/1970, Salary: 1500000, Gender: Female
Struct hoc sinh
Nộp bàiPoint: 1
Khai báo cấu trúc học sinh. Biết rằng thông tin của một học sinh bao gồm: họ tên (30 ký tự), điểm toán, điểm văn và điểm trung bình (tất cả là số thực).
- Nhập thông tin cho n sinh viên, với n được nhập từ bàn phím.
- Hiển thị danh sách các sinh viên có trong danh sách.
- Liệt kê các học sinh có điểm toán nhỏ hơn 5 trong danh sách.
- Đếm số lượng học sinh có điểm toán và điểm văn lớn hơn 8 điểm trong danh sách.
- Viết hàm sắp xếp các học sinh giảm dần theo điểm trung bình.
(Lưu ý: Khi in ra điểm trung bình luôn lấy 2 chữ số sau phần thập phân)
Input:
3
Nguyen Van A
4.5 7.0
Tran Thi B
9.0 8.5
Le Van C
6.0 5.5
Output:
Student list:
Name: Nguyen Van A, Math: 4.50, Literature: 7.00, Average: 5.75
Name: Tran Thi B, Math: 9.00, Literature: 8.50, Average: 8.75
Name: Le Van C, Math: 6.00, Literature: 5.50, Average: 5.75
Students with Math score < 5:
Name: Nguyen Van A, Math: 4.50, Literature: 7.00, Average: 5.75
Number of students with Math & Literature > 8: 1
Students sorted by average score (descending):
Name: Tran Thi B, Math: 9.00, Literature: 8.50, Average: 8.75
Name: Nguyen Van A, Math: 4.50, Literature: 7.00, Average: 5.75
Name: Le Van C, Math: 6.00, Literature: 5.50, Average: 5.75
Struct mặt phẳng OXY
Nộp bàiPoint: 1
Khai báo cấu trúc toạ độ các điểm trong mặt phẳng Oxy.
- Nhập thông tin cho n điểm trong mặt phẳng Oxy, với n được nhập từ bàn phím.
- Hiển thị danh sách các điểm có trong danh sách.
- Liệt kê các toạ độ các điểm trong phần tư thứ I của mặt phẳng Oxy.
- Tìm điểm có tung độ lớn nhất trong danh sách.
- Viết hàm sắp xếp toạ độ các điểm giảm dần theo khoảng cách từ nó đến gốc toạ độ.
Input:
4
1 2
-3 4
5 -6
2 3
Output:
List of points:
(1.00, 2.00)
(-3.00, 4.00)
(5.00, -6.00)
(2.00, 3.00)
Points in the first quadrant:
(1.00, 2.00)
(2.00, 3.00)
Point with the largest y (ordinate): (-3.00, 4.00)
Points sorted by distance to origin (descending):
(5.00, -6.00)
(-3.00, 4.00)
(2.00, 3.00)
(1.00, 2.00)
Struct khách sạn
Nộp bàiPoint: 1
Hãy khai báo cấu trúc phòng trong khách sạn (PHONG). Giả sử phòng khách sạn gồm những thành phần thông tin như sau:
+ Mã phòng: tối đa 5 ký tự.
+ Tên phòng: tối đa 30 ký tự.
+ Đơn giá thuê: kiểu số thực.
+ Số lượng giường: kiểu số nguyên.
+ Tình trạng phòng: 0 rảnh, 1 bận.
- Nhập thông tin cho n phòng trong khách sạn, với n được nhập từ bàn phím.
- Hiển thị thông tin các phòng có trong danh sách.
- Liệt kê các phòng trống trong danh sách.
- Tính tổng số lượng giường của các phòng có trong danh sách.
- Sắp xếp các phòng theo giá thuê tăng dần.
Input:
3
P01
Deluxe Room
1200000
2
0
P02
Standard Room
800000
1
1
P03
VIP Suite
1500000
3
0
Output:
Room list:
Room Code: P01, Name: Deluxe Room, Price: 1200000.00, Beds: 2, Status: Available
Room Code: P02, Name: Standard Room, Price: 800000.00, Beds: 1, Status: Occupied
Room Code: P03, Name: VIP Suite, Price: 1500000.00, Beds: 3, Status: Available
Available rooms:
Room Code: P01, Name: Deluxe Room, Price: 1200000.00, Beds: 2, Status: Available
Room Code: P03, Name: VIP Suite, Price: 1500000.00, Beds: 3, Status: Available
Total number of beds: 6
Rooms sorted by price (ascending):
Room Code: P02, Name: Standard Room, Price: 800000.00, Beds: 1, Status: Occupied
Room Code: P01, Name: Deluxe Room, Price: 1200000.00, Beds: 2, Status: Available
Room Code: P03, Name: VIP Suite, Price: 1500000.00, Beds: 3, Status: Available
Struct hộp sữa
Nộp bàiPoint: 1
Hãy khai báo cấu trúc hộp sữa (HOPSUA). Biết rằng một hộp sữa gồm những thành phần như sau: Nhãn hiệu (chuỗi tối đa 20 ký tự), Trọng lượng (kiểu số thực), hạn sử dụng (kiểu dữ liệu ngày). -Nhập thông tin cho n hộp sữa, với n được nhập từ bàn phím. -Hiển thị danh sách các hộp sữa có trong danh sách -Đếm số lượng hộp sữa sản xuất trước năm 2003 trong danh sách. -Tìm hộp sữa mới nhất trong danh sách. -Sắp xếp các hộp sữa tăng dần theo hạn sử dụng.
Input:
3
Vinamilk
1.2
15 5 2002
Dutch Lady
1.0
20 8 2005
TH True Milk
1.5
10 1 2003
Output:
Milk box list:
Brand: Vinamilk, Weight: 1.20, Expiry: 15/05/2002
Brand: Dutch Lady, Weight: 1.00, Expiry: 20/08/2005
Brand: TH True Milk, Weight: 1.50, Expiry: 10/01/2003
Number of milk boxes expiring before 2003: 1
Latest milk box:
Brand: Dutch Lady, Weight: 1.00, Expiry: 20/08/2005
Milk boxes sorted by expiry date (ascending):
Brand: Vinamilk, Weight: 1.20, Expiry: 15/05/2002
Brand: TH True Milk, Weight: 1.50, Expiry: 10/01/2003
Brand: Dutch Lady, Weight: 1.00, Expiry: 20/08/2005
Struct sách
Nộp bàiPoint: 1
Khai báo cấu trúc quyển sách. Biết rằng thông tin của một quyển sách bao gồm: tên sách (50 ký tự), tên tác giả (30 ký tự) và năm xuất bản.
- Nhập thông tin cho n quyển sách, với n được nhập từ bàn phím.
- Hiển thị thông tin các phòng có trong danh sách.
- Tìm quyển sách cũ nhất trong danh sách.
- Tìm một năm có nhiều sách xuất bản nhất và liệt kê tất cả các quyển sách xuất bản trong năm đó.
Input:
4
Dế Mèn Phiêu Lưu Ký
Tô Hoài
1941
Tuổi Thơ Dữ Dội
Phùng Quán
1988
Lão Hạc
Nam Cao
1941
Chí Phèo
Nam Cao
1941
Output:
Book list:
Title: Dế Mèn Phiêu Lưu Ký, Author: Tô Hoài, Year: 1941
Title: Tuổi Thơ Dữ Dội, Author: Phùng Quán, Year: 1988
Title: Lão Hạc, Author: Nam Cao, Year: 1941
Title: Chí Phèo, Author: Nam Cao, Year: 1941
Oldest book(s):
Title: Dế Mèn Phiêu Lưu Ký, Author: Tô Hoài, Year: 1941
Title: Lão Hạc, Author: Nam Cao, Year: 1941
Title: Chí Phèo, Author: Nam Cao, Year: 1941
Year with most books: 1941 (3 books)
Title: Dế Mèn Phiêu Lưu Ký, Author: Tô Hoài, Year: 1941
Title: Lão Hạc, Author: Nam Cao, Year: 1941
Title: Chí Phèo, Author: Nam Cao, Year: 1941
Struct tỉnh
Nộp bàiPoint: 1
Khai báo cấu trúc các tỉnh. Biết rằng thông tin của một tỉnh bao gồm: tên tỉnh (tối đa 30 ký tự), diện tích (kiểu số thực), dân số (số nguyên).
- Nhập thông tin cho n tỉnh, với n được nhập từ bàn phím.
- Hiển thị thông tin các tỉnh có trong danh sách.
- Tính tổng diện tích của tất cả các tỉnh trong danh sách.
- Tìm tỉnh có diện tích lớn nhất trong danh sách.
- Tìm một tỉnh có dân số lớn nhất trong danh sách.
- Sắp xếp danh sách tăng dần theo diện tích.
Input:
3
Ha Noi
3324.5 8000000
TP Ho Chi Minh
2095.6 9000000
Da Nang
1285.4 1100000
Output:
List of provinces:
Province: Ha Noi, Area: 3324.50 km^2, Population: 8000000
Province: TP Ho Chi Minh, Area: 2095.60 km^2, Population: 9000000
Province: Da Nang, Area: 1285.40 km^2, Population: 1100000
Total area: 6705.50 km^2
Province(s) with the largest area:
Province: Ha Noi, Area: 3324.50 km^2, Population: 8000000
Province(s) with the largest population:
Province: TP Ho Chi Minh, Area: 2095.60 km^2, Population: 9000000
Provinces sorted by area (ascending):
Province: Da Nang, Area: 1285.40 km^2, Population: 1100000
Province: TP Ho Chi Minh, Area: 2095.60 km^2, Population: 9000000
Province: Ha Noi, Area: 3324.50 km^2, Population: 8000000
Struct vé xem phim
Nộp bàiPoint: 1
Khai báo cấu trúc vé xem phim (VE). Biết rằng một vé xem phim gồm những thành phần như sau:
- Tên phim: chuỗi tối đa 20 ký tự.
- Giá tiền: kiểu số nguyên 4 byte.
- Xuất chiếu: kiểu thời gian (THOIGIAN, THOIGIAN bao gồm 3 thành phần là giờ, phút, giây).
- Ngày xem: kiểu dữ liệu ngày (NGAY, NGAY bao gồm 3 thành phần là ngày, tháng, năm).
- Nhập danh sách n vé xem phim, n nhập từ bàn phím.
- Hiển thị danh sách vé xem phím có trong danh sách.
- Tính tổng giá tiền của tất cả các vé trong danh sách.
- Sắp xếp vé xem phim tăng dần theo ngày xem và xuất chiếu.
Input:
3
Avengers
120000
19 30 00
5 5 2024
Conan
80000
14 15 00
4 5 2024
Spiderman
100000
20 00 00
5 5 2024
Output:
Danh sach ve xem phim:
Phim: Avengers, Gia: 120000 VND, Xuat chieu: 19:30:00, Ngay xem: 05/05/2024
Phim: Conan, Gia: 80000 VND, Xuat chieu: 14:15:00, Ngay xem: 04/05/2024
Phim: Spiderman, Gia: 100000 VND, Xuat chieu: 20:00:00, Ngay xem: 05/05/2024
Tong gia tien: 300000 VND
Danh sach ve sau khi sap xep theo ngay xem va xuat chieu:
Phim: Conan, Gia: 80000 VND, Xuat chieu: 14:15:00, Ngay xem: 04/05/2024
Phim: Avengers, Gia: 120000 VND, Xuat chieu: 19:30:00, Ngay xem: 05/05/2024
Phim: Spiderman, Gia: 100000 VND, Xuat chieu: 20:00:00, Ngay xem: 05/05/2024
Phân số
Nộp bàiPoint: 1
Cho hai phân số p và q với tử số và mẫu số không quá 10000. Hãy viết chương trình thực hiện:
a. Rút gọn sau đó Quy đồng hai phân số
b. Tính tổng hai phân số và rút gọn
c. Tính thương hai phân số và rút gọn
Đầu vào: Dòng 1 ghi số bộ test. Mỗi bộ test ghi trên một dòng 4 số nguyên dương lần lượt làtử số của p, mẫu số của p, tử số của q, mẫu số của q. Mỗi số cách nhau 1 khoảng trống
Đầu ra: Dòng đầu ghi dòng chữ Case và thứ tự bộ test (theo mẫu trong ví dụ). Tiếp theo là 3 dòng:
- Dòng 1 ghi 2 phân số sau khi quy đồng
- Dòng 2 ghi phân số tổng
- Dòng 3 ghi phân số thương
Input:
2
2 3 4 5
1 4 7 8
Output:
Case #1:
10/15 12/15
22/15
5/6
Case #2:
2/8 7/8
9/8
2/7
Sắp xếp danh sách mặt hàng
Nộp bàiPoint: 1
Hãy sắp xếp danh sách các mặt hàng theo lợi nhuận giảm dần. Mỗi mặt hàng gồm các thông tin: Mã mặt hàng (là một số nguyên, tự động tăng, tính từ 1); Tên mặt hàng, nhóm hàng: là các xâu ký tự; Giá mua, giá bán: là các số thực (không quá 9 chữ số)
Đầu vào: Dòng đầu chứa số mặt hàng. Mỗi mặt hàng viết trên 4 dòng: Dòng 1: Tên mặt hàng. Dòng 2: Nhóm hàng. Dòng 3: Giá mua. Dòng 4: Giá bán
Đẩu ra: Ghi ra danh sách mặt hàng đã sắp xếp theo lợi nhuận giảm dần (lợi nhuận tính bằng giá bán trừ đi giá mua). Mỗi mặt hàng viết trên một dòng gồm: mã, tên, nhóm hàng và lợi nhuận. Các thông tin cách nhau đúng 1 khoảng trống. Lợi nhuận viết với 2 chữ số sau dấu phẩy.
Ví dụ:
Input:
3
May tinh SONY VAIO
Dien tu
16400
17699
Tu lanh Side by Side
Dien lanh
18300
25999
Banh Chocopie
Tieu dung
27.5
37
Output:
2 Tu lanh Side by Side Dien lanh 7699.00
1 May tinh SONY VAIO Dien tu 1299.00
3 Banh Chocopie Tieu dung 9.50
Tìm thủ khoa
Nộp bàiPoint: 1
Cho danh sách thí sinh gồm các thông tin: Mã thí sinh: là một số nguyên, tự động tăng, tính từ 1; Tên thí sinh, ngày sinh, điểm môn 1, điểm môn 2, điểm môn 3. Hãy tìm thủ khoa trong danh sách đó. Nếu có nhiều thí sinh có điểm bằng nhau và đều cao nhất thì in ra tất cả thí sinh đó theo mã tăng dần.
Đầu vào: Dòng đầu chứa số thí sinh. Mỗi thí sinh viết trên 3 dòng: Dòng 1: Tên thí sinh, Dòng 2: Ngày sinh, Dòng 3,4,5: 3 điểm thi tương ứng. Các điểm thi đều đảm bảo hợp lệ (từ 0 đến 10).
Đẩu ra: In ra các thủ khoa của kỳ thi, mỗi thí sinh 1 dòng, gồm mã, tên, ngày sinh và tổng điểm. Chú ý: nếu có nhiều thí sinh bằng điểm nhau và cao nhất thì in ra tất cả thí sinh đó theo thứ tự mã thí sinh tăng dần.
Ví dụ:
Input:
3
Nguyen Van A
12/12/1994
3.5
7.0
5.5
Nguyen Van B
1/9/1994
7.5
9.5
9.5
Nguyen Van C
6/7/1994
8.5
9.5
8.5
Output:
2 Nguyen Van B 1/9/1994 26.5
3 Nguyen Van C 6/7/1994 26.5
Sắp xếp thí sinh
Nộp bàiPoint: 1
Hãy sắp xếp danh sách thí sinh theo tổng điểm giảm dần. Mỗi thí sinh gồm các thông tin:
- Mã thí sinh: là một số nguyên, tự động tăng. Tính từ 1.
- Tên thí sinh, ngày sinh
- Điểm môn 1, điểm môn 2, điểm môn 3
Đầu vào: Dòng đầu chứa số thí sinh. Mỗi thí sinh viết trên 3 dòng:
- Dòng 1: Tên thí sinh
- Dòng 2: Ngày sinh
- Dòng 3,4,5: 3 điểm thi tương ứng. Các điểm thi đều đảm bảo hợp lệ (từ 0 đến 10).
Đầu ra: In ra danh sách thí sinh đã sắp xếp theo tổng điểm giảm dần. Nếu 2 thí sinh bằng điểm nhau thì thí sinh nào xuất hiện trước sẽ viết trước. Mỗi thí sinh viết trên một dòng gồm: mã, tên, ngày sinh và tổng điểm. Các thông tin cách nhau đúng 1 khoảng trống. Điểm tổng được làm tròn đến 1 số sau dấu phẩy.
Ví dụ:
Input:
3
Nguyen Van A
12/12/1994
3.5
7.0
5.5
Nguyen Van B
1/9/1994
7.5
9.5
9.5
Nguyen Van C
6/7/1994
4.5
4.5
5.0
Output:
2 Nguyen Van B 1/9/1994 26.5
1 Nguyen Van A 12/12/1994 16.0
3 Nguyen Van C 6/7/1994 14.0
Cấu trúc sinh viên
Nộp bàiPoint: 1
Hãy xây dựng một cấu trúc SinhVien gồm các thông tin: Họ tên (chuỗi có dấu cách), Tuổi (số nguyên), Điểm GPA (số thực). Viết chương trình nhập thông tin cho 1 sinh viên và in ra màn hình.
Input:
Dòng 1: Họ và tên sinh viên.
Dòng 2: Tuổi.
Dòng 3: Điểm GPA.
Output:
In ra chuỗi "Ten: [Ten], Tuoi: [Tuoi], GPA: [GPA]" (GPA làm tròn 2 chữ số thập phân).
Ví dụ
Input:
Nguyen Van A
20
3.567
Output:
Ten: Nguyen Van A, Tuoi: 20, GPA: 3.57
Tổng hai phân số
Nộp bàiPoint: 1
Xây dựng cấu trúc PhanSo gồm tử số và mẫu số (số nguyên). Nhập vào 2 phân số, tính tổng của chúng và in ra kết quả dưới dạng tối giản.
Input:
Dòng 1: Tử số và mẫu số của phân số thứ nhất.
Dòng 2: Tử số và mẫu số của phân số thứ hai.
Output:
Phân số tổng đã tối giản dạng "tu/mau".
Ví dụ
Input:
1 2
1 3
Output:
5/6
Khoảng cách giữa hai điểm
Nộp bàiPoint: 1
Xây dựng cấu trúc Point gồm tọa độ x và y (số thực). Tính khoảng cách giữa 2 điểm A và B trong hệ tọa độ Oxy.
Input:
Dòng 1: Tọa độ x y của điểm A.
Dòng 2: Tọa độ x y của điểm B.
Output:
Khoảng cách giữa hai điểm, làm tròn 4 chữ số thập phân.
Ví dụ
Input:
0 0 3 4
Output:
5.0000
Tìm sinh viên điểm cao nhất
Nộp bàiPoint: 1
Cho danh sách N sinh viên với thông tin: mã sinh viên (số nguyên), tên (chuỗi không khoảng trắng), điểm (số thực). Tìm sinh viên có điểm cao nhất. Nếu điểm bằng nhau, lấy người có mã sinh viên nhỏ hơn.
Input:
Dòng 1: Số nguyên N.
N dòng tiếp theo: Mã SV, Tên, Điểm.
Output:
Thông tin sinh viên điểm cao nhất (Mã Tên Điểm).
Ví dụ
Input:
3
1 An 8.5
2 Binh 9.0
3 Cuong 9.0
Output:
2 Binh 9.0
Số phức
Nộp bàiPoint: 1
Xây dựng struct SoPhuc gồm phần thực và phần ảo. Tính tổng và tích của 2 số phức.
Input:
Dòng 1: Phần thực và phần ảo số thứ nhất.
Dòng 2: Phần thực và phần ảo số thứ hai.
Output:
Dòng 1: Tổng 2 số phức (dạng a + bi).
Dòng 2: Tích 2 số phức (dạng a + bi).
Ví dụ
Input:
1 2
3 4
Output:
4 + 6i
-5 + 10i
Sắp xếp sinh viên theo gpa
Nộp bàiPoint: 1
Cho danh sách sinh viên. Hãy sắp xếp danh sách theo thứ tự điểm GPA giảm dần.
Input:
Dòng 1: Số nguyên N.
N dòng tiếp theo: Tên (không dấu cách), GPA.
Output:
Danh sách đã sắp xếp, mỗi sinh viên một dòng.
Ví dụ
Input:
3
Lan 7.5
Diep 8.0
Hung 6.5
Output:
Diep 8.0
Lan 7.5
Hung 6.5