Kỹ thuật lập trình - Cấu trúc ppt

4 280 0
Kỹ thuật lập trình - Cấu trúc ppt

Đang tải... (xem toàn văn)

Thông tin tài liệu

Chương 5 Cấu trúc (structure) Đặt vấn đề  Để biểu diễn một dãy các phần tử cùng kiểu ta đã biết sử dụng mảng. Tuy nhiên khi các phần tử không cùng kiểu chẳng hạn, dữ liệu về một sinh viên gồm: - mã sinh viên (là một chuỗi). - họ tên sinh viên (chuỗi). - điểm trung bình (số thực) - giới tính (số nguyên) - thì mảng không còn phù hợp.  Trong C cấu trúc được dùng để biểu diễn những đối tượng như vậy.  Định nghĩa: Cấu trúc (struct) là dãy hữu hạn các phần tử (có thể không cùng kiểu dữ liệu với nhau) gọi là các trường hay các thành phần của cấu trúc đó. Khai báo kiểu cấu trúc  Định nghĩa kiểu dữ liệu trước:  Khai báo biến sau: Ví dụ: - khai báo số phức: typedef struct SoPhuc { float phanThuc; float phanAo; }; SoPhuc z,z1,z2; //khai báo các biến SoPhuc. typedef struct <tênkiểu CT> { //khai báo các thành phần }; <tênkiểu CT> <biến CT>; Khai báo kiểu cấu trúc (tt) - Khai báo kiểu sinh viên: typedef struct SinhVien { char ma[10]; char hoTen[30]; float diemTB; int gTinh; }; SinhVien sv1,sv2; SinhVien lop[50]; //khai báo mảng lop gồm 50 sv. Truy xuất dữ liệu biến cấu trúc  Qui tắc: để truy xuất dữ liệu biến cấu trúc ta phải truy xuất từng thành phần của nó, theo cú pháp:  Ví dụ: với các biến đã khai báo ở ví dụ trước ta có thể truy xuất như sau: printf(“%0.2f”,z.phanThuc);//in phần thực z. for(i=0;i<50;++i)gets(lop[i].hoTen);//nhập dssv. Chú ý: trong C không có phép toán lấy địa chỉ một thành phần của cấu trúc. Tức là phép toán: &sv.diemTB và câu lệnh scanf(“%f”,&sv.diemTB) là không hợp lệ. Để khắc phục điều này ta có thể sử dụng biến trung gian: scanf(“%f”,&tam);//tam là biến trung gian. sv.diemTB=tam; <tên biến>.<tên thành phần> Truy xuất dữ liệu biến cấu trúc (tt)  Chú ý: có thể gán trực tiếp 2 biến cấu trúc cùng kiểu.  Ví dụ: sv1 = sv2; sv1 = lop[10];  Nếu p là 1 con trỏ cấu trúc thì phép truy xuất thành phần của p như sau:  Ví dụ: SinhVien *p;  p=&sv1  Khi đó: p->hoTen tương đương với sv1.hoTen p-><tên thành phần> Mảng cấu trúc  Nh ậ n xét: Cách truy xu ấ t m ả ng c ấ u trúc t ươ ng t ự như m ả ng thông th ườ ng. T ứ c là ph ả i truy xu ấ t t ừ ng ph ầ n t ử c ủ a m ả ng tuy nhiên v ớ i m ỗ i ph ầ n t ử c ủ a m ả ng ta áp d ụ ng quy t ắ c truy xu ấ t đố i v ớ i bi ế n c ấ u trúc.  Ví d ụ : 2 hàm sau đ ây đề u in danh sách l ớ p ra màn hình: void inDS1(SinhVien lop[], int n) { int i; for(i=0;i<n;++i) printf(“\nlop[i].hoTen); } Mảng cấu trúc (tt) void inDS2(SinhVien *p, int n) { int i; for(i=0;i<n;++i) printf(“\n(p+i)->hoTen); } Một số ví dụ về sử dụng struct  Ví dụ 1: Thực hiện các phép toán trên phân số.  //Biểu diễn phân số:  typedef struct PhanSo  {  int tu;  int mau;  }  PhanSo p,p1,p2; Một số ví dụ về sử dụng struct (tt)  //hàm in phân s ố ra màn hình:  void inPS(PhanSo p)  {  printf(“%d/%d”,p.tu,p.mau);  }  //hàm tìm ướ c chung l ớ n nh ấ t c ủ a 2 s ố nguyên:  int ucln(int x, int y)  {  while(x*y)  if(x>y)x=x%y;  else y=y%x;  return (x+y);  } Một số ví dụ về sử dụng struct (tt)  //hàm rút gọn phân số:  void rutGon(PhanSo *p)  {  int d;  d=ucln(p->tu,p->mau);  p->tu=(p->tu)/d;  p->mau=(p->mau)/d;  } Một số ví dụ về sử dụng struct (tt)  //hàm nhập 1 phân số từ bàn phím:  void nhapPS(PhanSo *p)  {  int tam;  printf(“\ntu so = “);scanf(“%d”,&tam);  p->tu=tam;  printf(“\nmau so = “);scanf(“%d”,&tam);  p->mau=tam;  if(mau<0)  {  tu=-tu;  mau=-mau;  }  rutGon(p);  } Một số ví dụ về sử dụng struct (tt)  //hàm cộng 2 phân số:  PhanSo cong(PhanSo p, PhanSo q)  {  PhanSo t;  t.tu=p.tu*q.mau+p.mau*q.tu;  t.mau=p.mau*q.mau;  rutGon(&t);  return t;  } Một số ví dụ về sử dụng struct (tt)  //hàm nhân 2 phân số:  PhanSo nhan(PhanSo p, PhanSo q)  {  PhanSo t;  t.tu=p.tu*q.tu;  t.mau=p.mau*q.mau;  rutGon(&t);  return t;  } Hỏi đáp . gồm: - mã sinh viên (là một chuỗi). - họ tên sinh viên (chuỗi). - điểm trung bình (số thực) - giới tính (số nguyên) - thì mảng không còn phù hợp.  Trong C cấu trúc được dùng để biểu diễn những. vậy.  Định nghĩa: Cấu trúc (struct) là dãy hữu hạn các phần tử (có thể không cùng kiểu dữ liệu với nhau) gọi là các trường hay các thành phần của cấu trúc đó. Khai báo kiểu cấu trúc  Định nghĩa. phần> Truy xuất dữ liệu biến cấu trúc (tt)  Chú ý: có thể gán trực tiếp 2 biến cấu trúc cùng kiểu.  Ví dụ: sv1 = sv2; sv1 = lop[10];  Nếu p là 1 con trỏ cấu trúc thì phép truy xuất thành

Ngày đăng: 05/07/2014, 12:21

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan