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

Chuong 7 struct full pascal

15 209 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 147,8 KB

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

Nội dung

mac os x lion 10 7 2 free download full versionmac os x 10 7 lion free download full versionwindows 7 professional free download full versionmacromedia flash mx 2004 7 0 free download full versionphim hoạt hình 7 viên ngọc rồng full htv37 viên ngọc rồng full trên htv3windows live movie maker for windows 7 ultimate free download full version7 viên ngọc rồng fullformat usb or flash drive software 7 0

Trang 1

Chương 7: KIỂU CẤU TRÚC

(STRUCTURE TYPE)

Giáo viên: Tạ Thúc Nhu Khoa CNTT trường ĐH Lạc Hồng

NGÔN NGỮ C

Trang 2

I- Tổng Quan:

I- Tổng Quan:

Kiểu cấu trúc, còn gọi là kiểu mẫu tin, là kiểu dữ liệu tự tạo

dùng lưu trữ tập hợp các thông tin thuộc tính cần xử lý của một đối tượng trong thực tế

Mỗi thuộc tính trong một kiểu cấu trúc có một tên phân biệt

và thuộc về một kiểu dữ liệu đã định nghĩa

Kiểu của các thuộc tính có thể khác nhau.

Ví dụ: Thông tin về một nhân viên bao gồm:

– Mã số nhân viên thuộc kiểu số nguyên,

– Họ tên thuộc kiểu chuổi,

– ngày sinh thuộc kiểu cấu trúc ngày tháng năm đã định nghĩa,

– hệ số lương thuộc kiểu số thực v.v

Trang 3

II- Định nghiã kiểu cấu trúc:

II- Định nghiã kiểu cấu trúc:

typedef struct {

Kiểu Thuộctính_1;

Kiểu Thuộctính_2;

Kiểu Thuộctính_n;

struct Tên_Kiểu

{

Kiểu Thuộctính_1;

Kiểu Thuộctính_2;

Kiểu Thuộctính_n;

};

Mẫu 2 Mẫu 1

Trang 4

Ví dụ: Định nghiã kiểu cấu trúc tên là Date

chứa thông tin ngày, tháng và năm

Ví dụ: Định nghiã kiểu cấu trúc tên là Date

chứa thông tin ngày, tháng và năm

typedef struct {

unsigned char Ngay, Thang ; int Nam ;

} Date ;

struct Date

{

unsigned char Ngay, Thang ;

int Nam ;

};

int unsigned char

unsigned char

Nam Thang

Ngay

Date

Trang 5

Ví dụ: Định nghiã kiểu cấu trúc

lưu trữ thông tin nhân viên

Ví dụ: Định nghiã kiểu cấu trúc

lưu trữ thông tin nhân viên

typedef struct

{ int MSNV;

char Ho[20], Ten[8];

Date NgaySinh;

float HeSoLuong;

} NhanVien;

struct NhanVien

{

int MSNV;

char Ho[20], Ten[8];

struct Date NgaySinh;

float HeSoLuong;

} ;

NhanVien

float int

uc uc

char[8]

char[20]

int

Nam Thang

Ngay

NgaySinh

HeSoLuong Ten

Ho MSNV

Trang 6

III- Biến kiểu cấu trúc:

III- Biến kiểu cấu trúc:

1 Khai báo biến cấu trúc:

[struct] TênKiểuCấuTrúc TênBiếnCT ={giá trị mục 1, giá trị mục 2, };

2 Thuộc tính của biến cấu trúc được xác định bởi:

TênBiếnCT ThuộcTính

nv

.Nam Thang

.Ngay

nv NgaySinh

nv HeSoLuong

nv Ten

nv Ho

nv MSNV

ngaysinh

1999 5

12

ngaysinh Nam

ngaysinh Thang

ngaysinh Ngay

Trang 7

Ví dụ: In giá trị của các thuộc tính của biến nv

Ví dụ: In giá trị của các thuộc tính của biến nv

puts("Thong tin nhan vien:");

printf("Ma so : %d", nv.MSNV );

printf(“\nHo ten : %s %s”, nv.Ho , nv.Ten );

nv.NgaySinh.Nam );

printf("\nHe so luong : %f ", nv.HeSoLuong );

nv

2.05 1960

3 12

Tuan

Le Anh 9

.Nam Thang

.Ngay

nv NgaySinh

nv HeSoLuong

nv Ten

nv Ho

nv MSNV

Trang 8

Ví dụ: Nhập giá trị cho các thuộc tính

của biến nv

Ví dụ: Nhập giá trị cho các thuộc tính

của biến nv

puts("\nNhap thong tin nhan vien :");

printf("Ma so: "); scanf("%d", &nv.MSNV ); flushall( );

printf("Ten : "); scanf("%s", nv.Ten );

printf("He so luong : "); scanf(“%f”, &nv.HeSoLuong );

nv

.Nam Thang

.Ngay

nv NgaySinh

nv HeSoLuong

nv Ten

nv Ho

nv MSNV

Trang 9

Ví dụ: Tính tọa độ trung điểm

của 1 đoạn thẳng AB

Ví dụ: Tính tọa độ trung điểm

của 1 đoạn thẳng AB

typedef struct{ float x, y; } Diem ;

void main()

{

Diem A,B,M;

printf("\nNhap toa do diem A: ");

scanf("%f%%f", &A.x, &A.y);

printf("\nNhap toa do diem B: ");

scanf("%f%%f", &B.x, &B.y);

M.x = (A.x + B.x)/2;

M.y = (A.y + B.y)/2;

printf("\nToa do diem M la (%.2f,%.2f)", M.x, M.y);

getch();

}

6 3

y

x B

0 1

y

x A

3 2

y x

M

Trang 10

III- Biến kiểu cấu trúc: (tt)

III- Biến kiểu cấu trúc: (tt)

3 Gán 2 biến cấu trúc có cùng kiểu cấu trúc:

NhanVien nv2 ;

nv2 = nv1;

nv1

2.05 1960

3 12

Tuan

Le Anh 9

Nam Thang

Ngay

NgaySinh

HeSoLuong Ten

Ho MSNV

nv2

2.05 1960

3 12

Tuan

Le Anh 9

Nam Thang

Ngay

NgaySinh

HeSoLuong Ten

Ho MSNV

Trang 11

IV- Hàm và kiểu cấu trúc:

IV- Hàm và kiểu cấu trúc:

1 Hàm có thể nhận một biến cấu trúc với 3 kiểu truyền: trị;

tên hay địa chỉ.

2 và có thể return biếncấutrúc về nơi gọi

Hàm B

Hàm A

Truyền Biến cấu trúc

return BiếnCấuTrúc;

Trang 12

Ví dụ: Chương trình tính tổng 2 phân số

(Truyền trị và tham chiếu)

Ví dụ: Chương trình tính tổng 2 phân số

(Truyền trị và tham chiếu)

void NhapPhanSo( PhanSo &a) { PhanSo x;

do { printf("\nNhap tu va mau: ");

scanf("%d%d", &x.tu, &x.mau); fflushall( );

} while (x.mau == 0);

a = x;

if (a.mau < 0) { a.tu = - a.tu;

a.mau = - a.mau;

} }

Chú ý: Không dùng scanf để nhập giá trị thuộc tính của tham chiếu kiểu cấu trúc và con trỏ kiểu cấu

//Khai báo kiểu phân số

typedef struct{ int tu , mau; } PhanSo ;

void NhapPhanSo( PhanSo & );

PhanSo Tong( PhanSo , PhanSo );

void main()

{ PhanSo a, b, c;

NhapPhanSo( a );

NhapPhanSo( b );

c = Tong(a,b);

printf(“KQ=%d/%d”,c.tu, c.mau);

}

PhanSo Tong( PhanSo a, PhanSo b)

c.tu = a.tu*b.mau + b.tu*a.mau;

c.mau = a.mau*b.mau;

return c;

Trang 13

Ví dụ: Chương trình tính tổng 2 phân số

(Truyền trị và địa chỉ)

Ví dụ: Chương trình tính tổng 2 phân số

(Truyền trị và địa chỉ)

void NhapPhanSo( PhanSo *a) { PhanSo x;

do { printf("\nNhap tu va mau: ");

scanf("%d%d", &x.tu, &x.mau); fflush(stdin);

} while (x.mau == 0);

*a = x;

if ( a->mau < 0) { a->tu = - a->tu ;

a->mau = - a->mau ; }

}

Chú ý: Thuộc tính của biến cấu trúc được truy xuất bằng biến con trỏ theo cú pháp:

pBiếnCT ->ThuộcTính

//Định nghĩa kiểu phân số

typedef struct{ int tu , mau; } PhanSo ;

void NhapPhanSo( PhanSo * );

PhanSo Tong( PhanSo , PhanSo );

void main()

{ PhanSo a, b, c;

NhapPhanSo( &a );

NhapPhanSo( &b );

c = Tong(a,b);

printf(“KQ=%d/%d”,c.tu, c.mau);

}

PhanSo Tong( PhanSo a, PhanSo b)

c.tu = a.tu*b.mau + b.tu*a.mau;

c.mau = a.mau*b.mau;

return c;

Trang 14

V- Mảng cấu trúc:

V- Mảng cấu trúc:

nv[i] là 1 biến cấu trúc thuộc kiểu NhanVien.

Mảnh nv

nv[2]

nv[1]

nv[0] 9 Le Anh Tuan 12 3 1960 2.05

Nam Thang

Ngay

NgaySinh

HeSoLuong Ten

Ho MSNV

Trang 15

Ví dụ: danh sách nhân viên

Ví dụ: danh sách nhân viên

void InDS(NhanVien A[], int N) { printf("%-4s %-30s %-10s %s",

“MSNV", "Ho Ten",

"Ngay sinh",“HSLg”);

for (int i = 0; i < N; i++) { printf("\n%4d %-20s %-9s

%.2d/%.2d/%4d %4.1f”, A[i].MSNV, A[i].Ho, A[i].Ten,

A[i].NgaySinh.Ngay, A[i].NgaySinh.Thang, A[i].NgaySinh.Nam, A[i].HeSoLuong);

puts(“”);

} } void main() { NhanVien NV[100];

NhapHoSo( NV, 5 );

void NhapHoso(NhanVien nv[],int N)

{ NhanVien a;

printf("\nNhap %d nhan vien :“, N);

for (int i=0; i < N; i++)

{ printf("Nhap nhan vien %d:“, i );

printf("Ma so: ");

scanf("%d", &a.MSNV ); flushall();

printf("Ho:"); gets(a Ho );

printf("Ten:"); scanf("%s", a.Ten );

printf("Ngay sinh:");

scanf(“%d”, &a.NgaySinh.Ngay );

printf("Thang sinh:");

scanf(“%d”, &a.NgaySinh.Thang );

printf("Nam sinh:");

scanf(“%d”, &a.NgaySinh.Nam );

printf("He so luong : ");

scanf(“%f”, &a.HeSoLuong );

nv[i] = a;

Ngày đăng: 04/11/2018, 10:30

TỪ KHÓA LIÊN QUAN

w