Khái niệm cấu trúc tiếp Ví dụ: Cấu trúc mô tả sinh viên: Cần lưu giữ các thông tin liên quan đến sinh viên như họ tên, tuổi, kết quả học tập… Mỗi thông tin thành phần lại có kiểu dữ
Trang 1Chương 7 Cấu trúc (struct)
Ngo Van Linh
Bộ môn Hệ thống thông tin
Viện Công nghệ thông tin và Truyền thông
Đại học Bách Khoa Hà Nội
Trang 2Nội dung
7.1 Khái niệm cấu trúc
7.2 Khai báo và sử dụng cấu trúc
7.3 Xử lí dữ liệu cấu trúc
7.4 Mảng cấu trúc
7.5 Bài tập
Trang 37.1 Khái niệm cấu trúc
Kiểu dữ liệu cấu trúc (struct) là kiểu dữ
liệu phức hợp bao gồm nhiều thành phần, mỗi thành phần có thể thuộc những kiểu dữ liệu khác nhau.
Các thành phần dữ liệu trong cấu trúc được gọi là các trường dữ liệu ( field ).
Trang 47.1 Khái niệm cấu trúc (tiếp)
Ví dụ: Cấu trúc mô tả sinh viên:
Cần lưu giữ các thông tin liên quan đến sinh viên như họ tên, tuổi, kết quả học tập…
Mỗi thông tin thành phần lại có kiểu dữ liệu khác nhau như họ tên có kiểu dữ liệu là xâu kí
tự, tuổi có kiểu dữ liệu là số nguyên, kết quả học tập có kiểu dữ liệu là số thực.
Trang 5Nội dung
7.1 Khái niệm cấu trúc
7.2 Khai báo và sử dụng cấu trúc
7.3 Xử lí dữ liệu cấu trúc
7.4 Mảng cấu trúc
7.5 Bài tập
Trang 67.2 Khai báo kiểu dữ liệu cấu trúc
Trang 77.2.2 Khai báo biến cấu trúc
Cú pháp:
struct ten_cau_truc ten_bien_cau_truc;
Ví dụ:
struct sinh_vien a, b, c;
Trang 97.2.4 Định nghĩa kiểu dữ liệu cấu trúc với typedef
Đặt tên mới cho kiểu dữ liệu cấu trúc cú
pháp:
typedef struct tên_cũ ten_moi;
Hoặc ta có thể đặt lại tên cho cấu trúc ngay khi khai báo bằng cú pháp
typedef struct [tên_cũ]
{
//khai_bao_cac_truong;
}danh_sach_cac_tên_mới;
Trang 107.2.4 Định nghĩa kiểu dữ liệu cấu trúc với typedef (tiếp)
Lưu ý: Được phép đặt tên_mới trùng với
Trang 11Nội dung
7.1 Khái niệm cấu trúc
7.2 Khai báo và sử dụng cấu trúc
7.3 Xử lí dữ liệu cấu trúc
7.4 Mảng cấu trúc
7.5 Bài tập
Trang 127.3 Xử lý dữ liệu cấu trúc
Truy nhập các trường dữ liệu của cấu trúc
Phép gán giữa các biến cấu trúc
Con trỏ cấu trúc
Trang 137.3.1 Truy nhập các trường dữ liệu của cấu trúc
Trang 147.3.2 Phép gán giữa các biến cấu trúc
Giả sử ta có 2 biến cấu trúc là a và b có
cùng kiểu dữ liệu là một cấu trúc
nào đó.
Phép gán cấu trúc có cú pháp tương tự như phép gán thông thường:
bien_cau_truc_1 = bien_cau_truc_2;
Trang 157.3.3 Con trỏ cấu trúc
Cú pháp:
struct ten_cau_truc *ten_bien_con_tro_ctruc;
Có 2 cách truy nhập vào trường dữ liệu của cấu trúc từ biến con trỏ cấu trúc là
(*ten_bien_con_tro_ctruc).ten_truong_du_lieu
Hoặc:
ten_bien_con_tro_ctruc -> ten_truong_du_lieu
Trang 16Nội dung
7.1 Khái niệm cấu trúc
7.2 Khai báo và sử dụng cấu trúc
7.3 Xử lí dữ liệu cấu trúc
7.4 Mảng cấu trúc
7.5 Bài tập
Trang 19printf(“\nNhap thong tin cho sinh vien %d”,i+1);
printf(“\nMa so sinh vien:”);
Trang 21Thong tin ve cac sinh vien
Sinh vien thu 1: SV0032 Nguyen Thanh Binh 8.5
Sinh vien thu 2: SV0002 Pham Hong Phuc 9.0
Sinh vien thu 3: SV0046 Le Minh Hoa 10.0
Trang 22Bài tập
Viết 1 chương trình thực hiện những công việc sau:
Yêu cầu người dùng nhập vào một số nguyên dương n với 5 n 20 (có kiểm tra tính hợp lệ của giá trị được nhập vào, nếu giá trị n nhập vào không thỏa mãn điều kiện thì yêu cầu nhập lại)
Yêu cầu người dùng nhập vào thông tin của n sinh viên gồm những mục sau
Đưa ra màn hình danh sách các sinh viên cùng thông tin của họ mà người dùng vừa nhập vào.
Trang 23Bài tập
Yêu cầu người dùng nhập vào từ bàn phím một
số thực Đưa ra màn hình danh sách các sinh viên có điểm thi Tin đại cương nhỏ hơn giá trị số thực vừa nhập vào.
Đưa ra màn hình danh sách sinh viên được sắp xếp theo chiều giảm dần của điểm thi Tin đại cương.
Đưa ra màn hình danh sách sinh viên với họ và tên được sắp xếp theo chiều của bảng chữ cái.
Trang 24Bài tập có lời giải
Thông tin về một học sinh lưu trong một cấu trúc gồm các trường: Mã số (8 ký tự), Họ tên (không quá 30 ký tự), Điểm toán (số thực) Hãy viết một chương trình hoàn chỉnh thực hiện các công việc sau:
a) Nhập vào danh sách học sinh của một lớp (biết rằng lớp này có không quá 30 học sinh) Quá trình nhập kết thúc khi đã nhập đủ 30 học sinh hoặc khi nhập Mã số là xâu
"$$$".
b) Sắp xếp danh sách học sinh theo thứ tự giảm dần của Điểm toán và hiển thị danh sách này ra màn hình.
Trang 27/*Hien thi danh sach ra man hinh*/
printf("\n DANH SACH HOC SINH SAU KHI SAP XEP THEO DIEM TOAN");
Trang 28Hỏi - đáp