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
20 trang |
Chia sẻ: Mr hưng | Lượt xem: 1244 | Lượt tải: 0
Nội dung tài liệu Tin học đại cương - Bài 7: Cấu trúc, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TIN HỌC ĐẠI CƯƠNGBài 7. CẤU TRÚC. Nguyễn Thành Kiên Bộ môn Kỹ thuật máy tính Khoa Công nghệ thông tin – ĐHBK HN*Bài 7. CẤU TRÚC7.1. Khái niệm cấu trúc7.2. Khai báo và sử dụng cấu trúc7.3. Xử lí dữ liệu cấu trúc 7.4. Mảng cấu trúc*7.1. Khái niệm cấu trúc7.2. Khai báo và sử dụng cấu trúc7.3. Xử lí dữ liệu cấu trúc 7.4. Mảng cấu trúcBài 7. CẤU TRÚC*7.1. Khái niệm cấu trúcKhi cần lưu danh sách sinh viên với các thông tin liên quan đến điểm các môn học, dùng mảng được không? Kiểu cấu trúc (Structure) là kiểu dữ liệu bao gồm nhiều thành phần, mỗi thành phần có thể có kiểu khác nhau, mỗi thành phần được gọi là một trường (field).*7.2. Khai báo và sử dụng cấu trúcKhai báo kiểu dữ liệu cấu trúc Cú pháp: struct tên_cấu_trúc { ; };struct sinh_vien{ char ma_so_sv[10]; char ho_va_ten[30]; float diem_TinDC; } struct point_3D{ float x; float y; float z;}*7.2. Khai báo và sử dụng cấu trúcKhai báo biến cấu trúcC1: struct tên_cấu_trúc tên_biến; struct sinh_vien a, b, c;C2: kết hợp đồng thời vừa khai báo kiểu dữ liệu cấu trúc vừa khai báo biến: struct [tên_cấu_trúc] { ; } tên_biến_cấu_trúc; *Ví dụ khai báo biến cấu trúc struct diem_thi { float diem_Toan; float diem_Ly; float diem_Hoa; } struct thi_sinh { char SBD[10]; char ho_va_ten[30]; struct diem_thi ket_qua; } thi_sinh_1, thi_sinh_2;các cấu trúc có thể lồng nhau mức độ lồng là không hạn chế *7.2. Khai báo và sử dụng cấu trúcNgôn ngữ C còn cho phép khai báo trực tiếp trường dữ liệu là cấu trúc bên trong cấu trúc chứa nó struct thi_sinh{ char SBD[10]; char ho_va_ten[30]; struct diem_thi { float diem_Toan;float diem_Ly;float diem_Hoa; }ket_qua;} thi_sinh_1, thi_sinh_2;*7.2. Khai báo và sử dụng cấu trúcĐịnh nghĩa kiểu DL cấu trúc với typedefKhai báo biến cấu trúc phải bắt đầu bằng từ khóa struct, sau đó đến tên cấu trúc rồi mới đến tên biến => quên từ khóa struct=> đặt tên mới cho kiểu dữ liệu cấu trúc bằng câu lệnh typedef typedef struct tên_cũ tên_mới; typedef struct [tên_cũ]{ ;}danh_sách_các_tên_mới; Lưu ý: Được phép đặt tên_mới trùng với tên_cũ. *7.2. Khai báo và sử dụng cấu trúcVí dụ: typedef struct point_2D{ float x, y;}point_2D, diem_2_chieu, ten_bat_ki;point_2D X;diem_2_chieu Y;ten_bat_ki Z;struct point_3D{ float x, y, z;} P;struct point_3D M;typedef struct point_3D point_3D;point_3D N;*7.1. Khái niệm cấu trúc7.2. Khai báo và sử dụng cấu trúc7.3. Xử lí dữ liệu cấu trúc 7.4. Mảng cấu trúcBài 7. CẤU TRÚC*7.3. Xử lí dữ liệu cấu trúc Truy nhập các trường DL của cấu trúc tên_biến_cấu_trúc.tên_trường ta có thể “đối xử” với tên_biến_cấu_trúc.tên_trường giống như một biến thông thường có kiểu dữ liệu là kiểu dữ liệu của tên_trường *Ví dụ cách sử dụng biến cấu trúc#include #include void main(){ struct point_2D { char ten_diem; struct { float x, y; } toa_do; } p; float temp_float; char temp_char; printf(“\n Hay nhap thong tin ve mot diem”); printf(“\n Ten cua diem: “); fflush(stdin); scanf(“%c”,&temp_char); p.ten_diem = temp_char; printf(“\n nhap vao hoanh do cua diem: “); scanf(“%f”,&temp_float); p.toa_do.x = temp_float; // giả sử điểm đang xét nằm trên đường thẳng y = 3x + 2; p.toa_do.y = 3*p.toa_do.x + 2; printf(“\n %c = (%5.2f,%5.2f)”,p.ten_diem, p.toa_do.x, p.toa_do.y); getch();}*7.3. Xử lí dữ liệu cấu trúc Phép gán giữa các biến cấu trúcCó thể thực hiện phép gán biến cấu trúcstruct s{ char ho_ten[20]; float diem;}a, b, c;float temp_f;printf("\na.ho_ten: ");fflush(stdin); gets(a.ho_ten);printf("\na.diem = ");scanf("%f",&temp_f);a.diem = temp_f;strcpy(c.ho_ten, a.ho_ten);c.diem = a.diem;b = a;*7.3. Xử lí dữ liệu cấu trúc Con trỏ cấu trúc Con trỏ cấu trúc chứa địa chỉ của một cấu trúc.Cú pháp khai báo struct * ; Truy nhập vào trường DL của cấu trúc từ biến con trỏ cấu trúc:(*).-> *7.1. Khái niệm cấu trúc7.2. Khai báo và sử dụng cấu trúc7.3. Xử lí dữ liệu cấu trúc 7.4. Mảng cấu trúcBài 7. CẤU TRÚC*7.4. Mảng cấu trúcCú pháp khai báo:struct [số phần tử]; Ví dụ:struct sinh_vien{ char ho_ten[20]; float diem_thi;};struct sinh_vien lop_CNTT[50];*Ví dụ về cách sử dụng mảng cấu trúc#include #include #include void main(){ struct sinh_vien { char ma_sv[10]; char ho_ten[20]; float diem_thi; }; struct sinh_vien sv[3]; int i; clrscr(); for(i=0;i<3;i++) { char str[20]; float diem; printf(“\n Nhap thong tin cho sinh vien thu %d”,i+1); printf(“\n Ma so sinh vien:”); fflush(stdin); gets(str); strcpy(sv[i].ma_sv,str); printf(“\n Ho va ten: “); fflush(stdin); gets(str); strcp(sv[i].ho_ten,str); printf(“\n Diem thi: “); scanf(“%f”,&diem); sv[i].diem_thi = diem; } printf(“\n Thong tin ve cac sinh vien”); for(i=0;i<3;i++) { printf(“\n Sinh vien thu %d ”,i+1); printf(“%-10s %-20s %-3.1f”,sv[i].ma_sv, sv[i].ho_ten, sv[i].diem_thi); } getch();}*Bài tập 1Viế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ệ).Yêu cầu người dùng nhập vào thông tin của n sinh viên gồm:Họ và tên: có kiểu dữ liệu là xâu kí tự gồm không quá 30 kí tựLớp: xâu kí tự có độ dài không quá 5 kí tựĐiểm thi Tin đại cương: là một số nguyên có giá trị từ 0 đến 10Điểm thi Toán.Đư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àoHiển thị danh sách các sinh viên thi qua môn Tin.Hiển thị 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.*Bài tập 2Viế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 10 n 20 (có kiểm tra tính hợp lệ)Yêu cầu người dùng nhập vào thông tin của n mặt hàng gồm:Tên mặt hàng: có kiểu dữ liệu là xâu kí tự gồm không quá 30 kí tựSố lượng: là một số nguyên dương.Đơn giá: là một số thực dương.Đưa ra màn hình danh sách các mặt hàng cùng các thông tin liên quan (số lượng và đơn giá).Tìm và đưa ra màn hình danh sách các mặt hàng có số lượng nhỏ hơn một số nguyên nhập từ bàn phím. Mẫu hiển thị là: Tên mặt hàng Số lượngTìm và đưa ra màn hình những mặt hàng có giá trị lớn hơn một số thực được nhập từ bàn phím, biết rằng giá trị của một loại mặt hàng tính bằng số lượng mặt hàng đó nhân với đơn giá của nó. Mẫu đưa ra màn hình làTên mặt hàng Số lượng Đơn giá Giá trị
Các file đính kèm theo tài liệu này:
- tindc_kiennt_p2_b7_6992.ppt