Struct trong c (Bài 9)
Struct trong c được sử dụng để định nghĩa kiểu dữ liệu mới dựa trên kiểu dữ liệu hiện có và có đặc điểm tập hợp nhiều thành phần có kiểu dữ liệu khác nhau.
Ví dụ định nghĩa kiểu dữ liệu tên SinhVien gồm các thành phần như họ tên (kiểu chuỗi), nơi sinh (kiểu chuỗi), điểm trung bình (kiểu số), ….
Sử dụng kiểu dữ liệu mở rộng struct trong các yêu cầu như: Chương trình quản lý nhân sự, mỗi nhân sự gồm họ tên, giới tính, ngày sinh, nơi sinh, bằng cách,… Chương trình quản lý điểm của sinh viên. Các thông tin cần quản lý gồm mã sinh viên, họ tên, môn học, điểm,…
Struct trong c – Cú pháp khai báo
struct Kiểu_Dữ_Liệu_Mới {
Kiểu_Dữ_Liệu Thành_Phần_1;
Kiểu_Dữ_Liệu Thành_Phần_2;
...
Kiểu_Dữ_Liệu Thành_Phần_n;
};
Trong đó Kiểu_Dữ_Liệu có thể là int, long, float, double, char. Bên dưới là một ví dụ về định nghĩa kiểu dữ liệu date gồm các thành phần như ngày, tháng và năm
struct date {
int ngay;
int thang;
int nam;
};
Struct trong c – Sử dụng
Khai báo biến kiểu struct
Kiểu_Dữ_Liệu_Mới Tên_Biến;
Ví dụ khai báo biến kiểu date
date d;
Truy cập các thành phần bên trong struct
Tên_Biến.Tên_Thành_Phần;
Ví dụ truy cập các thành phần của biến d
printf("%d", d.ngay); //Hiển thị ngày
printf("%d", d.thang); //Hiển thị tháng
printf("%d", d.nam); //Hiển thị năm
Bài tập vận dụng: Định nghĩa kiểu dữ liệu môn học biết rằng mỗi môn học gồm tên môn, số giờ.
Struct trong c – Tổng kết
Định nghĩa kiểu dữ liệu mới với struct
Sử dụng kiểu dữ liệu struct
Struct trong c – Bài tập thực hành
Bài thực hành số 1: Viết chương trình c lưu tên và tuổi của 5 nhân viên sử dụng mảng cấu trúc (struct). Chương trình cho phép tìm kiếm thông tin nhân viên theo tên.
Bài thực hành số 2: Cho một danh sách lưu thông tin của các thí sinh khi thi tuyển vào lớp 10 ban A, thông tin gồm :
- Số báo danh (chuỗi, 5 ký tự)
- Họ tên (chuỗi, tối đa 25 ký tự)
- Điểm toán (số thực)
- Điểm lý (số thực)
- Điểm anh văn (số thực)
- Điểm tổng (số nguyên, trong đó điểm tổng= điểm toán+ điểm lý + điểm anh văn).
Yêu cầu thực hiện:
- Nhập danh sách thí sinh và điểm
- Hiển thông tin những thí sinh có tổng điểm >= 18 và không có môn nào dưới 5
- Cập nhật điểm thí sinh theo mã số (mã số được nhập vào)