[Slide tin học đại cương] Bài 9. Kiểu cấu trúc

THThiNganHang
0 lượt tải
13
0

Đang tạo bản xem trước...

Nội dung tài liệu

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG TIN HỌC ĐẠI CƯƠNG Bài 9. Kiểu cấu trúc Nội dung 9.1. Khái niệm cấu trúc 9.2. Khai báo và sử dụng cấu trúc 9.3. Xử lý dữ liệu cấu trúc ThiNganHang.com9.4. Mảng cấu trúc 2 ThiNganHang.com 1

Trang 2

Nội dung 9.1. Khái niệm cấu trúc 9.2. Khai báo và sử dụng cấu trúc 9.3. Xử lý dữ liệu cấu trúc 9.4. Mảng cấu trúc 3 9.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 có thể thuộc các kiểu dữ liệu khác nhau ThiNganHang.com• – Các thành phần: gọi là trường dữ liệu (field)– Thông tin về kết quả học tập môn Tin đạiVí dụ cương của sinh viên: TenSV, MaSV, Diem. – Thông tin về cầu thủ: Ten, Tuoi, CLB, SoAo, Vitri,… 4 ThiNganHang.com 2

Trang 3

9.2. Khai báo và sử dụng cấu trúc 9.2.1. Khai báo kiểu dữ liệu cấu trúc 9.2.2. Khai báo biến cấu trúc 9.2.3. Định nghĩa kiểu dữ liệu với typedef 5 9.2.1. Khai báo kiểu dữ liệu cấu trúc • Khai báo cấu trúc • Ví dụ struct tên_cấu_trúc{ struct SinhVien{ <khai báo các trường dữ liệu> char MSSV[10]; } char hoVaTen[30]; ThiNganHang.comfloat diemTinDC; } struct Point3D{ float x; float y; float z; } 6 ThiNganHang.com 3

Trang 4

9.2.2. Khai báo biến cấu trúc • Cú pháp: struct tên_cấu_trúc tên_biến_cấu_trúc; • Ví dụ: – struct SinhVien a, b, c; • Kết hợp khai báo struct tên_cấu_trúc { <khai báo các trường dữ liệu>; } tên_biến_cấu_trúc; 7 9.2.2. Khai báo biến cấu trúc • Các cấu trúc có thể được khai báo lồng nhau struct DiemThi { float dToan, dLy, dHoa; } ThiNganHang.comstruct ThiSinh{ char SBD[10]; char hoTen[30]; struct DiemThi ketQua; } thiSinh1, thiSinh2; • Có thể khai báo trực tiếp các trường dữ liệu của một cấu trúc bên trong một cấu trúc khác 8 ThiNganHang.com 4

Trang 5

9.2.2. Khai báo biến cấu trúc • Có thể khai báo trực tiếp các trường dữ liệu của một cấu trúc bên trong cấu trúc khác struct ThiSinh{ char SBD[10]; char hoTen[30]; struct [DiemThi]{ float dToan, dLy, dHoa; } ketQua; } thiSinh1, thiSinh2; 9 9.2.3. Định nghĩa kiểu dữ liệu với typedef • Mục đích – Đặt tên mới cho kiểu dữ liệu cấu trúc – Giúp khai báo biến “quen thuộc” và ít sai hơn • Cú pháp ThiNganHang.comhoặc typedef struct <tên_cũ> <tên_mới>;typedef struct tên_cũ { <khai báo các trường dữ liệu>; } danh_sách_các_tên_mới; • Chú ý: cho phép đặt tên_mới trùng tên_cũ 10 ThiNganHang.com 5

Trang 6

9.2.3. Định nghĩa kiểu dữ liệu với typedef • Ví dụ: struct Point3D{ typedef struct { float x, y, z; float x, y, z; } }Point3D; struct Point3D M; Point3D M; typedef struct Point3D Point3D; Point3D N; Point3D N; 11 9.2.3. Định nghĩa kiểu dữ liệu với typedef • Ví dụ typedef struct Point2D { float x, y; }Point2D, Diem2Chieu, TenBatKi; ThiNganHang.comPoint2DDiem2ChieuX; Y; TenBatKi Z; => Point2D, Diem2Chieu, TenBatKi là các tên cấu trúc, không phải tên biến 12 ThiNganHang.com 6

Trang 7

9.3. Xử lý dữ liệu cấu trúc • 9.3.1. Truy cập các trường dữ liệu • 9.3.2. Phép gán giữa các biến cấu trúc 13 9.3.1. Truy cập các trường dữ liệu • Cú pháp tên_biến_cấu_trúc.tên_trường • Lưu ý – Dấu “.” là toán tử truy cập vào trường dữ liệu ThiNganHang.com– Nếu trường dữ liệu là một cấu trúc => sửtrong cấu trúcdụng tiếp dấu “.” để truy cập vào thành phần mức sâu hơn 14 ThiNganHang.com 7

Trang 8

9.3.1. Truy cập các trường dữ liệu Ví dụ: • Xây dựng một cấu trúc biểu diễn điểm trong không gian 2 chiều. Nhập giá trị cho một biến kiểu cấu trúc này, sau đó hiển thị giá trị các trường dữ liệu của biến này ra màn hình. – Cấu trúc: tên điểm, tọa độ x, tọa độ y – Nhập, hiển thị từng trường của biến cấu trúc như các biến dữ liệu khác 15 9.3.1. Truy cập các trường dữ liệu #include<stdio.h> #include<conio.h> typedef struct{ char ten[5]; ThiNganHang.com}ToaDo;voidint x,y;main(){ ToaDo t; printf("Nhap thong tin toa do\n"); 16 ThiNganHang.com 8

Trang 9

9.3.1. Truy cập các trường dữ liệu printf("Ten diem: ");gets(t.ten); printf("Toa do x: ");scanf("%d",&t.x); printf("Toa do y: ");scanf("%d",&t.y); printf("Gia tri cac truong\n"); printf("%-5s%3d%3d\n",t.ten,t.x,t.y); getch(); } 17 9.3.2. Phép gán giữa các biến cấu trúc • Muốn sao chép dữ liệu từ biến cấu trúc này sang biến cấu trúc khác cùng kiểu – gán lần lượt từng trường trong hai biến cấu trúc => “thủ công” ThiNganHang.com– C cung cấp phép gán hai biến cấu trúc cùngkiểu:biến_cấu_trúc_1 = biến_cấu_trúc_2; 18 ThiNganHang.com 9

Trang 10

9.3.2. Phép gán giữa các biến cấu trúc • Ví dụ – Xây dựng cấu trúc gồm họ tên và điểm TĐC của sinh viên – a, b, c là 3 biến cấu trúc. – Nhập giá trị cho biến a. – Gán b=a, còn gán từng trường của a cho c. b?c 19 9.3.2. Phép gán giữa các biến cấu trúc #include<stdio.h> #include<conio.h> typedef struct{ char hoTen[20]; ThiNganHang.com}SinhVien;voidint diem;main(){ SinhVien a,b,c; printf("Nhap thong tin sinh vien\n"); printf("Ho ten: ");gets(a.hoten); printf("Diem:");scanf("%d",&a.diem); 20 ThiNganHang.com 10

Trang 11

9.3.2. Phép gán giữa các biến cấu trúc b=a; strcpy(c.hoten,a.hoten); c.diem=a.diem; printf(“Bien a: "); printf("%-20s%3d\n",a.hoten,a.diem); printf(“Bien b: "); printf("%-20s%3d\n",b.hoten,b.diem); printf(“Bien c: "); printf("%-20s%3d\n",c.hoten,c.diem); getch(); } 21 9.4. Mảng cấu trúc • Là tập hợp các phần tử có cùng kiểu dữ liệu là kiểu cấu trúc • Mục đích: – Lưu trữ một tập hợp các phần tử có cùng ThiNganHang.com– Mỗi phần tử là một tập hợp các thành phần cókiểu. thể khác nhau: thông tin các sinh viên trong lớp, đội bóng… • Khai báo: struct <tên cấu trúc> <tên mảng cấu trúc> [số phần tử]; 22 ThiNganHang.com 11

Trang 12

9.4. Mảng cấu trúc • Ví dụ 1. Khai báo một cấu trúc gồm tên và điểm thi Tin đại cương 2. Khai báo mảng tên là sv thuộc kiểu trên 3. Nhập từ bàn phím số n là số sinh viên trong lớp 4. Nhập thông tin n sinh viên và lưu vào mảng sv 5. Sắp mảng mảng theo thứ tự tăng dần của điểm/tên 6. Hiển thị ra màn hình danh sách các sinh 23 viên có điểm >=8 Chương trình quản lý thông tin thí sinh Viết chương trình quản lý thông tin thí sinh có các chức năng sau: - Các thông tin cần quản lí: • Họ ThiNganHang.com• Tên• SBD • Điểm 3 môn • Điểm tổng - Số lượng tối đa trong danh sách : 100 24 ThiNganHang.com 12

Trang 13

Chương trình quản lý thông tin thí sinh • Nhập thông tin thí sinh từ bàn phím • Sắp xếp danh sách theo thứ tự ABC của tên thí sinh • Hiển thị danh sách thí sinh theo định dạng sau STT Họ và tên SBD Môn Toán Môn Lý Môn Hóa Tổng • Tìm thông tin thí sinh theo tên • Tìm thông tin thí sinh theo danh sách • Sửa thông tin của một thí sinh 25 Thảo luận ThiNganHang.com 26 ThiNganHang.com 13

Hiển thị 13 trang đầu. Tải tài liệu để xem đầy đủ.

Bình luận (0)

Đăng nhập để tham gia bình luận

Chưa có bình luận nào. Hãy là người đầu tiên!