Bài giảng Lập trình C - Chương 6: Kiểu cấu trúc và kiểu liệt kê - Ngô Công Thắng
Các giá trị kiểu liệt kê được lưu trữ như các số nguyên liệu kiểu int, giá trị tên đầu tiên là 0, giá trị tên tiếp theo là 1...
Ví dụ: Với kiểu liệt kê days_of-week ở trên thì Sun có giá trị 0, Mon có giá trị 1, Tue có giá trị 3
Ta có thể thay đổi giá trị số của các giá trị tên
15 trang |
Chia sẻ: huongthu9 | Lượt xem: 416 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài giảng Lập trình C - Chương 6: Kiểu cấu trúc và kiểu liệt kê - Ngô Công Thắng, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Bài gi ng Ngô ng C - Ch ng 6 GV. Ngô Công Th ngả ữ ươ ắ 1
Ch ng 6. Ki u c u trúc và ki u li t kêươ ể ấ ể ệ
I. Ki u c u trúc (struct)ể ấ
II. Ki u li t kê (enum)ể ệ
Bài gi ng Ngô ng C - Ch ng 6 GV. Ngô Công Th ngả ữ ươ ắ 2
I. Ki u c u trúcể ấ
1. Khái ni m v ki u c u trúcệ ề ể ấ
2. Khai báo ki u c u trúcể ấ
3. Khai báo bi n c u trúcế ấ
4. Truy nh p các thành ph n c a c u trúcậ ầ ủ ấ
5. Kh i t o bi n c u trúcở ạ ế ấ
6. Phép gán bi n c u trúcế ấ
7. M ng c u trúcả ấ
Bài gi ng Ngô ng C - Ch ng 6 GV. Ngô Công Th ngả ữ ươ ắ 3
1. Khái ni m v ki u c u trúcệ ề ể ấ
Ngoài các ki u d li u có s n trong C, ng i ể ữ ệ ẵ ườ
l p trình còn có th t o ra nh ng ki u d li u ậ ể ạ ữ ể ữ ệ
c a riêng mình: Ki u c u trúc và ki u li t kê.ủ ể ấ ể ệ
M t c u trúc là m t nhóm các ph n t có th ộ ấ ộ ầ ử ể
có ki u d li u khác nhau. Các ph n t này ể ữ ệ ầ ử
g i là các thành ph n c a c u trúc. Ki u c u ọ ầ ủ ấ ể ấ
trúc trong C t ng đ ng v i ki u b n ghi ươ ươ ớ ể ả
trong Pascal.
Bài gi ng Ngô ng C - Ch ng 6 GV. Ngô Công Th ngả ữ ươ ắ 4
2. Khai báo ki u c u trúcể ấ
Khai báo c u trúc là mô t v các thành ph n ấ ả ề ầ
c a c u trúc. Cú pháp nh sau:ủ ấ ư
struct Tên_ki u_c u trúcể ấ
{
Ki u_1 Tên_thành_ph n_1; ể ầ
Ki u_2 Tên_thành_ph n_2; ể ầ
. . . .
};
T khoáừ
Các thành ph n ầ
c a c u trúcủ ấ
D u ch m ph y k t ấ ấ ẩ ế
thúc khai báo ki u c u ể ấ
trúc
Bài gi ng Ngô ng C - Ch ng 6 GV. Ngô Công Th ngả ữ ươ ắ 5
2. Khai báo ki u c u trúc (ti p)ể ấ ế
Ví d : Đ l u tr thông tin v nhân s c a phòng t ụ ể ư ữ ề ự ủ ổ
ch c v i các thông tin v h tên, ngày sinh, đ a ch , ứ ớ ề ọ ị ỉ
l ng ta khai báo m t ki u c u trúc nh sau:ươ ộ ể ấ ư
struct nhansu
{
char hoten[30];
char ngaysinh[10];
char diachi[40];
float luong;
};
Bài gi ng Ngô ng C - Ch ng 6 GV. Ngô Công Th ngả ữ ươ ắ 6
2. Khai báo ki u c u trúc (ti p)ể ấ ế
Sau khi khai báo ki u c u trúc ta có th dùng tên ể ấ ể
ki u c u trúc nh tên các ki u d li u c b n.ể ấ ư ể ữ ệ ơ ả
Ki u c a các thành ph n c a c u trúc có th là ki u ể ủ ầ ủ ấ ể ể
c u trúc, t c là trong c u trúc có th ch a c u trúc ấ ứ ấ ể ứ ấ
khác. Ví d :ụ
struct ngaythang
{
int ngay,thang,nam;
};
struct nhansu
{
char hoten[30];
ngaythang ngaysinh;
char diachi[40];
float luong;
};
Bài gi ng Ngô ng C - Ch ng 6 GV. Ngô Công Th ngả ữ ươ ắ 7
3. Khai báo bi n c u trúcế ấ
Vi c khai báo ki u c u trúc không t o ra ệ ể ấ ạ
vùng nh ch a c u trúc mà ch mô t v c u ớ ứ ấ ỉ ả ề ấ
trúc xem có nh ng gì.ữ
Mu n có vùng nh ch a c u trúc ta ph i khai ố ớ ứ ấ ả
báo bi n c u trúc. Cú pháp:ế ấ
Tên_ki u_c u_trúc Tên_bi n_c u trúc;ể ấ ế ấ
Ví d :ụ
nhansu ng1,ng2;
Bài gi ng Ngô ng C - Ch ng 6 GV. Ngô Công Th ngả ữ ươ ắ 8
4. Truy nh p các thành ph n c u trúcậ ầ ấ
Đ truy nh p các thành ph n c a c u trúc ta dùng ể ậ ầ ủ ấ
toán t ch m. Cú pháp:ử ấ
Tên_bi n_c u_trúc.Tên_thành_ph nế ấ ầ
Ví d :ụ
struct thisinh
{
char SBD[15];
float toan,ly,hoa;
};
//Khai bao bien cau truc
thisinh ts;
//Nhap du lieu cho thi sinh
printf("So bao danh: “); scanf(“%s”,&ts.SBD);
printf(“Diem Toan: “); scanf(“%f”,&ts.toan);
printf(“Diem Ly: “); scanf(“%f”,&ts.ly);
printf(“Diem Hoa: “); scanf(“%f”,&ts.hoa);
Bài gi ng Ngô ng C - Ch ng 6 GV. Ngô Công Th ngả ữ ươ ắ 9
5. Kh i t o bi n c u trúcở ạ ế ấ
Khi khai báo bi n c u trúc ta có th kh i t o giá tr cho các ế ấ ể ở ạ ị
thành ph n c a c u trúc nh kh i t o cho các ph n t c a ầ ủ ấ ư ở ạ ầ ử ủ
m ng.ả
Ví d :ụ
//Khai bao kieu cau truc
struct thisinh
{
char SBD[15];
float toan,ly,hoa;
};
//Khai bao va khoi tao bien cau truc
thisinh ts={"NNHA23456", 7, 8, 9};
Bài gi ng Ngô ng C - Ch ng 6 GV. Ngô Công Th ngả ữ ươ ắ 10
6. Phép gán bi n c u trúcế ấ
Ta có th gán m t bi n c u trúc cho m t bi n c u ể ộ ế ấ ộ ế ấ
trúc cùng ki u. Ví d :ể ụ
//Khai bao kieu cau truc
struct thisinh
{
char SBD[15];
float toan,ly,hoa;
};
//Khai bao bien cau truc
thisinh ts1={"NNHA23456",7,8,9};
thisinh ts2;
ts2=ts1;
Bài gi ng Ngô ng C - Ch ng 6 GV. Ngô Công Th ngả ữ ươ ắ 11
7. M ng c u trúcả ấ
Sau khi khai báo ki u c u trúc thì tên ki u c u trúc ể ấ ể ấ
đ c dùng nh các ki u d li u khác. Ch ng h n, ượ ư ể ữ ệ ẳ ạ
dùng c u trúc làm ki u ph n t c a m ng.ấ ể ầ ử ủ ả
Ví d :ụ
//Khai bao kieu cau truc
struct thisinh
{
char SBD[15];
float toan,ly,hoa;
};
//Khai bao bien cau truc
thisinh ds[100];
strcpy(ds[0].SBD,"NNHA23456");
ds[0].toan=8;
ds[0].ly=8;
ds[0].hoa=9;
Bài gi ng Ngô ng C - Ch ng 6 GV. Ngô Công Th ngả ữ ươ ắ 12
Ví dụ
Vi t ch ng trình qu n lý đi m môn h c c a sinh ế ươ ả ể ọ ủ
viên. M i sinh viên có các thông tin v h tên, l p, ỗ ề ọ ớ
đi m ki m tra 1, đi m ki m tra 2, trung bình ki m ể ể ể ể ể
tra, đi m thi, đi m môn h c. Nh p vào m t danh ể ể ọ ậ ộ
sách n sinh viên. Hi n danh sách ra màn hình theo ệ
d ng b ng v i các c t STT, H và tên, L p, TB ạ ả ớ ộ ọ ớ
KTra, Đ.Thi, Đi m MH. Khi nh p d li u ch nh p ể ậ ữ ệ ỉ ậ
H tên, L p, Đi m Ktra1, Đi m Ktra2, còn TB ọ ớ ể ể
KTra = (Đi m KTra1 + Đi m Ktra2)/2, Đi m MH = ể ể ể
0,3xTB KTra + 0,7xĐi m Thi.ể
Bài gi ng Ngô ng C - Ch ng 6 GV. Ngô Công Th ngả ữ ươ ắ 13
II. Ki u li t kêể ệ
Ki u li t kê là ki u d li u do ng i l p trình t ể ệ ể ữ ệ ườ ậ ự
đ nh nghĩa b ng cách li t kê t t c các giá tr . Các ị ằ ệ ấ ả ị
giá tr c a ki u li t kê là các tên t đ t.ị ủ ể ệ ự ặ
Đ đ nh nghĩa ki u li t kê ta dùng t khóa enum ể ị ể ệ ừ
theo cú pháp sau:
enum Tên_ki u_li t_kê {Danh sách các tên t đ t};ể ệ ự ặ
Ví d :ụ enum boolean {TRUE, FALSE};
enum mausac {Xanh, Do, Tim, Vang};
enum days_of_week {Sun, Mon, Tue, Wed, Thu, Fri, Sat};
Bài gi ng Ngô ng C - Ch ng 6 GV. Ngô Công Th ngả ữ ươ ắ 14
II. Ki u li t kê (ti p)ể ệ ế
Sau khi khai báo ki u li t kê ta có th khai ể ệ ể
báo các bi n ki u li t nh các bi n ki u khác:ế ể ệ ư ế ể
Tên_ki u_li t_kê Danh_sách_các_bi n;ể ệ ế
Ví d :ụ Gi s các ki u li t kê đã đ c khai ả ử ể ệ ượ
báo trên, ta khai báo các bi n li t kê:ở ế ệ
days_of_week day1, day2;
Đ đ a giá tr vào bi n li t kê ta dùng l nh ể ư ị ế ệ ệ
gán:
Ví d :ụ day1 = Mon; day2 = Sat;
Bài gi ng Ngô ng C - Ch ng 6 GV. Ngô Công Th ngả ữ ươ ắ 15
II. Ki u li t kê (ti p)ể ệ ế
Các giá tr ki u li t kê đ c l u tr nh các s ị ể ệ ượ ư ữ ư ố
nguyên ki u int, giá tr tên đ u tiên là 0, giá tr tên ể ị ầ ị
ti p theo là 1,ế
Ví d :ụ V i ki u li t kê days_of_week trên thì Sun ớ ể ệ ở
có giá tr 0, Mon có giá tr 1, Tue có giá tr 3,ị ị ị
Ta có th thay đ i giá tr s c a các giá tr tênể ổ ị ố ủ ị
Cho các giá tr tên có giá tr s b t đ u t m t s khác 0ị ị ố ắ ầ ừ ộ ố
Ví d : enum mausac {Xanh=5, Do, Tim, Vang};ụ
V i khai báo này Xanh có giá tr 5, Do có giá tr 6, Tim ớ ị ị
có giá tr 7, Vàng có giá tr 8.ị ị
Các file đính kèm theo tài liệu này:
- bai_giang_lap_trinh_c_chuong_6_kieu_cau_truc_va_kieu_liet_ke.pdf