1. Trang chủ
  2. » Công Nghệ Thông Tin

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

4 281 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 4
Dung lượng 75,57 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương 5Cấ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

Trang 1

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)

{ 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.

Trang 2

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)

cùng kiểu.

thành phần của p như sau:

 p=&sv1

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);

}

Trang 3

Một số ví dụ về sử dụng struct

số.

 {

 int tu;

 int mau;

 }

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);

 }

Trang 4

Một số ví dụ về sử dụng struct (tt)

 {

 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)

 {

 PhanSo t;

 t.tu=p.tu*q.tu;

 t.mau=p.mau*q.mau;

 rutGon(&t);

 return t;

 }

Hỏi đáp

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

TỪ KHÓA LIÊN QUAN

w