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

Giáo trình Cấu trúc dữ liệu và giải thuật - Nghề: Công nghệ thông tin (Cao đẳng) - CĐ Kỹ Thuật Công Nghệ Bà Rịa-Vũng Tàu

86 63 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 86
Dung lượng 1,06 MB

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

Nội dung

(NB) Giáo trình Cấu trúc dữ liệu và giải thuật nhằm cung cấp cho sinh viên các thuật toán tổng quát, danh sách liên kết, và các giải thuật sắp xếp, tìm kiếm. Từ đó sinh viên sẽ từng bước cải tiến thuật toán để xây dựng được những chương trình hiệu quả và có tính ứng dụng cao. Mục đích của giáo trình là trang bị cho học viên những kiến thức và kỹ năng phân tích xây dựng được thuật toán kết hợp với giải thuật.

Trang 2

Bà R a – Vũng Tàu, năm 2016

TUYÊN B  B N QUY NỐ Ả Ề

Tài li u này thu c lo i sách giáo trình nên các ngu n thông tin có thệ ộ ạ ồ ể 

được phép dùng nguyên b n ho c trích dùng cho các m c đích v  đào t o vàả ặ ụ ề ạ  tham kh o.ả

M i m c đích khác mang tính l ch l c ho c s  d ng v i m c đích kinhọ ụ ệ ạ ặ ử ụ ớ ụ  doanh thi u lành m nh s  b  nghiêm c m.ế ạ ẽ ị ấ

Trang 3

L I GI I THI U Ờ Ớ Ệ

Giáo trình c u trúc d  li u và gi i thu t dùng cho h c sinh h  Caoấ ữ ệ ả ậ ọ ệ  

Đ ng và Trung c p c a ngh  l p trình máy tính và h  cao đ ng chuyên ngànhẳ ấ ủ ề ậ ệ ẳ  công ngh  thông tin  ng d ng ph n m m trong trệ ứ ụ ầ ề ường Cao đ ng ngh  T nhẳ ề ỉ  

BR – VT. Nh m cung c p cho sinh viên các thu t toán t ng quát, danh sáchằ ấ ậ ổ  liên k t, và các gi i thu t s p x p, tìm ki m. T  đó sinh viên s  t ng bế ả ậ ắ ế ế ừ ẽ ừ ướ  c

c i ti n thu t toán đ  xây d ng đả ế ậ ể ự ược nh ng chữ ương trình hi u qu  và có tínhệ ả  

ng d ng cao. M c đích c a giáo trình là trang b  cho h c viên nh ng ki n

th c và k  năng phân tích  xây d ng đứ ỹ ự ược thu t toán k t h p v i gi i thu tậ ế ợ ớ ả ậ

Đ  có th  n m b t các ki n th c h c sinh c n  để ể ắ ắ ế ứ ọ ầ ược trang b  các ki nị ế  

th c v   môn l p trình căn b n. Ngôn ng  l p trình đứ ề ậ ả ữ ậ ược ch n đ  minh h aọ ể ọ  các ki n th c trên là Dev C++. ế ứ

Trong qua trình biên so n giáo trình, ạ ch n ch n r ng trong giáo trình sắ ắ ằ ẽ còn nhi u khi m khuy t, tác gi  mong mu n nh n đề ế ế ả ố ậ ược các ý ki n quí báuế  đóng góp c a đ ng nghi p cũng nh  b n đ c đ  giáo trình này có th  hoànủ ồ ệ ư ạ ọ ể ể  thi n h n n a v  m t n i dung cũng nh  hình th c trong l n tái b n sau.ệ ơ ữ ề ặ ộ ư ứ ầ ả

      Biên so n

Nguy n Th  Maiễ ị

Trang 5

M C L CỤ Ụ

       TRANGCHƯƠNG TRÌNH MÔ ĐUN 8

BÀI 1GIỚI THIỆU CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT 10

1 Mối liên hệ giải thuật và cấu trúc dữ liệu 10

1.1 Giải thuật 10

1.2 Dữ liệu 10

1.3 Mối quan hệ giữa cấu trúc dữ liệu và giải thuật 11

2 Kiểu dữ liệu, mô hình dữ liệu, kiểu dữ liệu trừu tượng 11

2.1.Khái niệm về kiểu dữ liệu 11

2.2 Mô hình kiểu dữ liệu 12

2.3 Kiểu dữ liệu trừu tượng 13

3 Thiết kế và phân tích giải thuật 13

3.1 Thiết kế thuật toán 13

3.2 Phân tích tính đúng đắn của giải thuật 13

3.3 Phân tích tính đơn giản 14

4 Một số ví dụ về thiết kế và phân tích giải thuật 14

BÀI 2LÀM VIỆC VỚI CON TRỎ 17

1 Biến con trỏ 17

1.1 Khái niệm con trỏ ( pointer ) 17

1.3 Gán địa chỉ của biến cho biến con trỏ 18

1.4 Cấp phát vùng nhớ cho biến con trỏ 19

1.5 Giải phóng vùng nhớ cho biến con trỏ 19

1.6 Một số phép toán trên con trỏ 20

2 Con trỏ và mảng một chiều 21

3 Con trỏ và mảng nhiều chiều 22

BÀI 3 LÀM VIỆC VỚI KIỂU CẤU TRÚC 25

1 Khái niệm cấu trúc 25

2 Khai báo kiểu cấu trúc 25

3 Truy nhập đến các thành phần trong biến cấu trúc 28

4 Nhập dữ liệu cho biến cấu trúc 28

BÀI 4LÀM VIỆC VỚI KIỂU TẬP TIN 32

1 Khái niệm về tập tin 32

2 Các kiểu vào ra với tệp: 33

2.1 Khai báo biến tập tin 33

2.2 Mở tập tin 34

2.3 Đóng tập tin 35

2.4 Kiểm tra đến cuối tập tin hay chưa? 35

2.5 Di chuyển con trỏ tập tin về đầu tập tin - Hàm rewind() 36

3 Các thao tác trên tệp: 36

Trang 6

3.1 Ghi dữ liệu lên tập tin văn bản 36

3.2 Đọc dữ liệu từ tập tin văn bản 37

BÀI 5 THÊM PHẦN TỬ TRONG DANH SÁCH ĐẶC 41

1 Định nghĩa 41

2 Khởi tạo danh sách 41

3 Thêm một phần tử vào danh sách 42

3.1.Thêm vào đầu danh sách: 42

3.2.Thêm vào cuối danh sách: 42

3.3 Thêm vào vị trí bất kỳ trong danh sách: 42

BÀI 6 XÓA PHẦN TỬ TRONG DANH SÁCH ĐẶC 44

1 Xóa phần tử đầu 44

2 Xóa phần tử cuối 45

3 Xóa phần tử tại vị trí bất kỳ trong danh sách: 45

BÀI 7LÀM VIỆC VỚI DANH SÁCH LIÊN KẾT 46

1 Định nghĩa: 46

2 Khai báo một nút 47

3 Khai báo một danh sách 47

4 Khởi tạo một nút mới 47

5 Khởi tạo một danh sách 48

6 Nhập một danh sách 48

7 Xuất một danh sách 49

BÀI 8CHÈN PHẦN TỬ TRONG DANH SÁCH LIÊN KẾT 50

1 Chèn một nút vào đầu danh sách 50

2 Chèn một nút vào cuối danh sách 51

3 Chèn một nút vào vị trí bất kỳ 51

BÀI 9 XÓA PHẦN TỬ TRONG DANH SÁCH LIÊN KẾT 53

1 Xóa nút đầu danh sách 53

2 Xóa nút cuối danh sách 53

3 Hủy danh sách 54

BÀI 10 LÀM VIỆC VỚI NGĂN XẾP 561.4 Lấy một phần tử ra khỏi ngăn xếp 58

1.5 Thêm một phần tử vào ngăn xếp 58

2.3 Lấy một phần tử ra khỏi ngăn xếp 59

2.4 Thêm một phần tử vào ngăn xếp 60

2.5 Xóa phần tử ở ngăn xếp 60

BÀI 11LÀM VIỆC VỚI HÀNG ĐỢI(QUEUE) 62

1 Biểu diễn hàng đợi dùng mảng: 63

2.4 Lấy phần tử ở ở đầu Queue 67

Trang 8

­ Trình bày được các ki u d  li uể ữ ệ

­ Phân tích và xây d ng đự ược thu t toánậ

­ Phân tích được các lo i d  li u, gi i thu t và k t h p đạ ữ ệ ả ậ ế ợ ược d  li u và gi i ữ ệ ảthu t.ậ

­ Th c hi n đự ệ ược các thao tác trên các ki u d  li uể ữ ệ

­Cài đ t đặ ược các thu t toán s p x p và tìm ki m.ậ ắ ế ế

­ Cài đ t đặ ược các thu t toán trên các c u trúc d  li u: m ng, danh sách, danhậ ấ ữ ệ ả  sách liên k t đ n.ế ơ

­ Có tinh th n trách nhi m, ý th c t  ch c k  lu t, tác phong công nghi p, ầ ệ ứ ổ ứ ỷ ậ ệtinh th n h p tác trong công vi cầ ợ ệ

­ Có ý ch  đ ng, đ c l p trong công vi c, t  h củ ộ ộ ậ ệ ự ọ  c p nh t ki n th c, nâng ậ ậ ế ứcao trình đ  chuyên môn.ộ

Trang 9

4 Làm vi c v i ki u t p tinệ ớ ể ậ 5 Tích h pợ

Trang 10

Ti p theo, các phế ương pháp phân tích, đánh giá đ  ph c t p và th i gian th cộ ứ ạ ờ ự  

hi n gi i thu t . Qua bài h c này s  gi i thi u m t cách th t c  th  v  c uệ ả ậ ọ ẽ ớ ệ ộ ậ ụ ể ề ấ  trúc d  li u và gi i thu t.ữ ệ ả ậ

M c tiêu: 

­ Trình bày được ki n th c c  b n v  c u trúc d  li u, gi i thu t, ki uế ứ ở ả ề ấ ữ ệ ả ậ ể  

d  li u, mô hình d  li u ữ ệ ữ ệ

­ Phân tích được gi i thu t ả ậ

­ S  d ng đử ụ ược các phương pháp phân tích, thi t k  gi i thu t.ế ế ả ậ

­ Rèn luy n tính c n th n, kiên trì, sáng t o. ệ ẩ ậ ạ

­ B o đ m an toàn và v  sinh cho ngả ả ệ ười và thi t b  trong phòng máy.ế ị

D  li u ữ ệ raOut put

Trang 11

D  li u có th  là d  li u đ a vào (input data), d  li u trung gian ho cữ ệ ể ữ ệ ư ữ ệ ặ  

d  li u đ a ra(output data). Do v y, vi c t  ch c đ  l u tr  d  li u ph c vữ ệ ư ậ ệ ổ ứ ể ư ữ ữ ệ ụ ụ cho chương trình có ý nghĩa r t quan tr ng trong toàn b  h  th ng chấ ọ ộ ệ ố ươ  ngtrình. Vi c xây d ng c u trúc d  li u quy t đ nh r t l n đ n ch t lệ ự ấ ữ ệ ế ị ấ ớ ế ấ ượng cũng 

nh  công s c c a ngư ứ ủ ườ ậi l p trình trong vi c thi t k , cài đ t chệ ế ế ặ ương trình.1.3. M i quan h  gi a c u trúc d  li u và gi i thu tố ệ ữ ấ ữ ệ ả ậ

M i quan h  gi a c u trúc d  li u và Gi i thu t có th  minh h a b ng đ ngố ệ ữ ấ ữ ệ ả ậ ể ọ ằ ẳ  

th c:ứ

C u trúc d  li u + Gi i thu t = Chấ ữ ệ ả ậ ương trình

Nh  v y, khi đã có c u trúc d  li u t t, n m v ng gi i thu t th c hi n thìư ậ ấ ữ ệ ố ắ ữ ả ậ ự ệ  

vi c th  hi n chệ ể ệ ương trình b ng m t ngôn ng  c  th  ch  là v n đ  th iằ ộ ữ ụ ể ỉ ấ ề ờ  gian. Khi có c u trúc d  li u mà ch a tìm ra thu t gi i thì không th  cóấ ữ ệ ư ậ ả ể  

chương trình và ngượ ạc l i không th  có gi i thu t khi ch a có c u trúc dể ả ậ ư ấ ữ 

li u. M t chệ ộ ương trình máy tính ch  có th  đỉ ể ược hoàn thi n khi có đ y đ  cệ ầ ủ ả 

C u trúc d  li u đ  l u tr  d  li u và Gi i thu t x  lý d  li u theo yêu c uấ ữ ệ ể ư ữ ữ ệ ả ậ ử ữ ệ ầ  

c a bài toán đ t ra.ủ ặ

2. Ki u d  li u, mô hình d  li u, ki u d  li u tr u tể ữ ệ ữ ệ ể ữ ệ ừ ượng

2.1.Khái ni m v  ki u d  li uệ ề ể ữ ệ

Ki u d  li u T có th  xem nh  là s  k t h p c a 2 thành ph n:ể ữ ệ ể ư ự ế ợ ủ ầ

­ Mi n giá tr  mà ki u d  li u T có th  l u tr : V,ề ị ể ữ ệ ể ư ữ

­ T p h p các phép toán đ  thao tác d  li u: O.ậ ợ ể ữ ệ

T = <V, O>

M i ki u d  li u thỗ ể ữ ệ ường được đ i di n b i m t tên (đ nh danh). M i ph n ạ ệ ở ộ ị ỗ ầ

t  d  li u cóki u T s  có giá tr  trong mi n V và có th  đử ữ ệ ể ẽ ị ề ể ược th c hi n các ự ệphép toán thu c t p h pcác phép toán trong O.ộ ậ ợ

Đ  l u tr  các ph n t  d  li u này thể ư ữ ầ ử ữ ệ ường ph i t n m t s  byte(s) trong b  ả ố ộ ố ộ

nh , s byte(s) này g i là kích thớ ố ọ ướ ủc c a ki u d  li u.ể ữ ệ

Trang 12

2.2. Mô hình ki u d  li uể ữ ệ

H u h t các ngôn ng  l p trình đ u có cung c p các ki u d  li u c  s  Tùy ầ ế ữ ậ ề ấ ể ữ ệ ơ ởvào m iỗ

ngôn ng  mà các ki u d  li u c  s  có th  có các tên g i khác nhau song ữ ể ữ ệ ơ ở ể ọchung quy

l i có nh ng lo i ki u d  li u c  s  nh  sau:ạ ữ ạ ể ữ ệ ơ ở ư

­ Ki u s  nguyên:ể ố  Có th  có d u ho c không có d u và thể ấ ặ ấ ường có các kích 

thước sau:

+ Ki u s  nguyên 1 byteể ố

+ Ki u s  nguyên 2 bytesể ố

+ Ki u s  nguyên 4 bytesể ố

Ki u s  nguyên thể ố ường được th c hi n v i các phép toán: O = {+, ­, *, /, ự ệ ớDIV, MOD, <,>, <=, >=, =, …}

­ Ki u s  th cể ố ự : Thường có các kích thước sau:

+ Ki u s  th c 4 bytesể ố ự

+ Ki u s  th c 6 bytesể ố ự

+ Ki u s  th c 8 bytesể ố ự

+ Ki u s  th c 10 bytesể ố ự

Ki u s  th c thể ố ự ường được th c hi n v i các phép toán: O = {+, ­, *, /, <, >, ự ệ ớ

<=, >=, =, …}

­ Ki u ký t :ể ự  Có th  có các kích thể ước sau:

+ Ki u ký t  byteể ự

+ Ki u ký t  2 bytesể ự

Ki u ký t  thể ự ường được th c hi n v i các phép toán: O = {+, ­, <, >, <=, >=, ự ệ ớ

=, ORD,CHR, …}

­ Ki u chu i ký t :ể ỗ ự  Có kích thước tùy thu c vào t ng ngôn ng  l p trìnhộ ừ ữ ậ

Ki u chu i ký t  thể ỗ ự ường được th c hi n v i các phép toán: O = {+, &, <, >, ự ệ ớ

<=, >=, =,Length, Trunc, …}

Trang 13

­ Ki u lu n lý:ể ậ  Thường có kích thước 1 byte

Ki u lu n lý thể ậ ường được th c hi n v i các phép toán: O = {NOT, AND, OR,ự ệ ớ  XOR, <, >,<=, >=, =, …}

2.3. Ki u d  li u tr u tể ữ ệ ừ ượng

Ki u d  li u tr u tể ữ ệ ừ ượng là m t mô hình toán h c cùng v i m t t p h pộ ọ ớ ộ ậ ợ  các phép toán trên nó. Có th  nói ki u d  li u tr u tể ể ữ ệ ừ ượng là m t ki u d  li uộ ể ữ ệ  

do chúng ta đ nh nghĩa   m c khái ni m (conceptual), nó ch a đị ở ứ ệ ư ược cài đ t cặ ụ 

th  b ng m t ngôn ng  l p trình. ể ằ ộ ữ ậ

Khi cài đ t m t ki u d  li u tr u tặ ộ ể ữ ệ ừ ượng trên m t ngôn ng  l p trình c  th ,ộ ữ ậ ụ ể  chúng ta ph i th c hi n hai nhi m v : ả ự ệ ệ ụ

­ Bi u di n ki u d  li u tr u tể ễ ể ữ ệ ừ ượng b ng m t c u trúc d  li u ho c m tằ ộ ấ ữ ệ ặ ộ  

ki u d  li u tr u tể ữ ệ ừ ượng khác đã được cài đ t.ặ

­ Vi t các chế ương trình con th c hi n các phép toán trên ki u d  li u tr uự ệ ể ữ ệ ừ  

tượng mà ta thường g i là cài đ t các phép toán.ọ ặ

3. Thi t k  và phân tích gi i thu tế ế ả ậ

3.1. Thi t k  thu t toán.ế ế ậ

Người ta thường dùng phương pháp chia nh  bài toán hay chi n thu t chia đ  ỏ ế ậ ể

tr  đ  thi t k  gi i thu t.ị ể ế ế ả ậ

N u g i bài toán là m t modul chính thì ta chia modul chính thành các modul ế ọ ộcon r i l i chia các modul con thành các modul con nh  h n cho đ n khi ta ồ ạ ỏ ơ ế

được các modul đã bi t cách gi i r i. ­> Chi n thu t chia đ  trế ả ồ ế ậ ể ị

3.2. Phân tích tính đúng đ n c a gi i thu tắ ủ ả ậ

Ta ph i ch ng minh gi i thu t là đúngả ứ ả ậ

Người ta thường làm : Cho chương trình ch y th  v i m t b  d  li u đã bi t ạ ử ớ ộ ộ ữ ệ ế

k t quế ả

N u k t qu  chế ế ả ương trình khác v i k t qu  đã bi t thì ch c ch n chớ ế ả ế ắ ắ ương trình sai; n u b ng thì cũng ch a có k t lu n, do đó đây ch  là phế ằ ư ế ậ ỉ ương pháp tìm ra cái sai mà ch a ch ng minh cái đúngư ứ

Trang 14

­ Cho ch y chạ ương trình r i xem k t qu  có phù h p v i th c t  không, n u ồ ế ả ợ ớ ự ế ếphù h p thì hiợ   v ng đúng, còn không thì ch c ch n saiọ ắ ắ

­ Đ  ch ng minh tính chính xác thì ph i dùng toán h c – hay dùng qui n p (r tể ứ ả ọ ạ ấ  khó)

Tính hi u qu  th  hi n v  hai m tệ ả ể ệ ề ặ

­ Không gian (Chương trình bé chi m ít b  nh ) ế ộ ớ

­ Th i gian (Chờ ương trình ch y nhanh)ạ

4. M t s  ví d  v  thi t k  và phân tích gi i thu t ộ ố ụ ề ế ế ả ậ

­ Ví d  1:  Tìm s  l n nh t trong m t dãy các s  t  aố ớ ấ ộ ố ừ 1,…, an

Input : S   nguyên dố ương  N và  dãy  a1, a2, , , aN

Output : Tìm Max là giá tr  l n nh t c a dãy đã choị ớ ấ ủ

Kh i t o Max=aở ạ 1. V i m i i, n u aớ ỗ ế i > Max thì thay giá tr  Max= aị i

Phân tích gi i thu t nh  sau:ả ậ ư

Trang 15

­Ví d  2 :  Thi t k  và phân tích gi i thu t  gi i phế ế ả ậ ả ương trình b c 2.

Input: Các h  s  a,b,c.ệ ố

Ouput: Nghi m c a phệ ủ ương trình

Yêu c u ph i có công th c tính Delta = bầ ả ứ 2 – 4ac

Phân tích gi i thu t nh  sau:ả ậ ư

Thi t k  và phân tích gi i thu t các bài toán sauế ế ả ậ :

1.1: Gi i phả ương trình b c nh tậ ấ

Trang 16

1.2: Tìm giá tr  l n nh t và nh  nh t c a hai s  a,bị ớ ấ ỏ ấ ủ ố

1.3: Tính t ng : s=1+2+3+…+ nổ

Yêu c u đánh giá

­ Phân tích được gi i thu t ả ậ c a các bài toánủ

­ S  d ng đử ụ ược các phương pháp phân tích, thi t k  gi i thu t.ế ế ả ậ

Trang 17

BÀI 2LÀM VI C V I CON TRỆ Ớ Ỏ

Gi i thi u:ớ ệ

Con tr  là đ c tr ng và là m t trong nh ng s c m nh l n nh t trongỏ ặ ư ộ ữ ứ ạ ớ ấ  

l p trình C++. Vì th  vi c tìm hi u và v n d ng con tr  là đi u không thậ ế ệ ể ậ ụ ỏ ề ể thi u đ i v i m t l p trình viên. Bài vi t này s  giúp cho ngế ố ớ ộ ậ ế ẽ ườ ọi đ c có cái nhìn sâu s c h n v  con tr  trong l p trình C. Qua đó s  giúp các b n s  d ngắ ơ ề ỏ ậ ẽ ạ ử ụ  con tr  m t cách linh ho t, tránh đỏ ộ ạ ược nh ng sai sót và làm vi c m t cáchữ ệ ộ  

hi u qu ệ ả

M c tiêu:

­ Trình bày được khái ni m con trệ ỏ

­ Nêu được các thao tác trên con trỏ

­ Th c hi n đự ệ ược khai báo bi n con trế ỏ

­ Trình bày và v n d ng các phép toán trên bi n con tr  vào các bài toánậ ụ ế ỏ

­ Trình bày và v n d ng đậ ụ ược con tr  vào m ng m t chi u và m ng nhi uỏ ả ộ ề ả ề  chi uề

­  Rèn luy n tính c n th n, kiên trì, sáng t o, đ c l p và ho t đ ng nhóm. ệ ẩ ậ ạ ộ ậ ạ ộ

­  B o đ m an toàn và v  sinh cho ngả ả ệ ười và thi t b  trong phòng máy.ế ị

N i dung :

1. Bi n con trế ỏ

1.1. Khái ni m con tr  ( pointer ) ệ ỏ

   Con tr  là bi n dùng đ  ch a đ a ch  c a bi n khác ho c có th  là m t ỏ ế ể ứ ị ỉ ủ ế ặ ể ộhàm. Do có nhi u lo i đ a ch  nên cũng có nhi u lo i bi n con tr  Con tr  ề ạ ị ỉ ề ạ ế ỏ ỏ

ki u int dùng đ  ch a đ a ch  c a ki u int. Con tr  ki u float dùng đ  ch a ể ể ứ ị ỉ ủ ể ỏ ể ể ứ

đ a ch  ki u float.ị ỉ ể

­ Mu n s  d ng đố ử ụ ược pointer, trước tiên ph i có đả ược đ a ch  c a bi n mà ta ị ỉ ủ ế

c n quan tâm b ng phép toán l y đ a ch  & . K t qu  c a phép l y đ a ch  & ầ ằ ấ ị ỉ ế ả ủ ấ ị ỉ

Trang 18

Sau đó, n u ta mu n con tr  ptr ch  đ n ki u d  li u gì cũng đế ố ỏ ỉ ế ể ữ ệ ược. Tác d ng ụ

c a khai báo này là ch  dành ra 2 bytes trong b  nh  đ  c p phát cho bi n con ủ ỉ ộ ớ ể ấ ế

tr  ptr. ỏ

1.3. Gán đ a ch  c a bi n cho bi n con tr  ị ỉ ủ ế ế ỏ

Toán t  & dùng đ  đ nh v  con tr  đ n đ a ch  c a m t bi n đang làm vi c. ử ể ị ị ỏ ế ị ỉ ủ ộ ế ệ

 Cú pháp: <Tên bi n con tr >=&<Tên bi n> ế ỏ ế

­ Gi i thích : Ta gán đ a ch  c a bi n ị ỉ ủ ế Tên bi n  ế cho con tr  Tên bi n con tr ế ỏ. 

­ Ví dụ: Gán đ a ch  c a bi n a cho con tr  pa, gán đ a ch  c a bi n b cho con ị ỉ ủ ế ỏ ị ỉ ủ ế

tr  pb. ỏ

pa=&a; pb=&b; 

­ L u ýư : Khi gán đ a ch  c a bi n tĩnh cho con tr  c n ph i l u ý ki u d  li uị ỉ ủ ế ỏ ầ ả ư ể ữ ệ  

c a chúng. Ví d  sau đây không đúng do không tủ ụ ương thích ki u: ể

int Bien_Nguyen; 

Trang 19

 

Con_Tro_Thuc=&Bien_Nguyen; 

Phép gán   đây là sai vì Con_Tro_Thuc là m t con tr  ki u float (nó ch  có thở ộ ỏ ể ỉ ể 

ch a đứ ược đ a ch  c a bi n ki u float); trong khi đó, Bien_Nguyen có ki u int.ị ỉ ủ ế ể ể  1.4. C p phát vùng nh  cho bi n con tr  ấ ớ ế ỏ

Trước khi s  d ng bi n con tr , ta nên c p phát vùng nh  cho bi n con ử ụ ế ỏ ấ ớ ếtrỏ

này qu n lý đ a ch  Vi c c p phát đả ị ỉ ệ ấ ược th c hi n nh  các hàm ự ệ ờ

malloc(), calloc() trong th  vi n alloc.h. ư ệ

 Cú pháp các hàm: 

void *malloc(size_t size): C p phát vùng nh  có kích th c là size. ấ ớ ướ

void *calloc(size_t nitems, size_t size): C p phát vùng nh  có kích th c là ấ ớ ướnitems*size. 

1.5. Gi i phóng vùng nh  cho bi n con tr  ả ớ ế ỏ

M t vùng nh  đã c p phát cho bi n con tr , khi không còn s  d ng ộ ớ ấ ế ỏ ử ụ

n a, ta s  thu h i l i vùng nh  này nh  hàm free(). ữ ẽ ồ ạ ớ ờ

 Cú pháp: void free(void *block) 

 Ý nghĩa: Gi i phóng vùng nh  đ c qu n lý b i con tr  block. ả ớ ượ ả ở ỏ

 Ví dụ:   ví d  trên, sau khi th c hi n xong, ta gi i phóng vùng nh  cho 2 Ở ụ ự ệ ả ớ

bi n con tr  pa & pb: ế ỏ

Trang 20

Ta cũng có th  ép ki u con tr  theo cú pháp: ể ể ỏ

(<Ki u k t qu >*)<Tên con tr > ể ế ả ỏ

Ch ng h n, ví d  trên đẳ ạ ụ ược vi t l i: ế ạ

int a, *p, *a ; float *f; 

a = 5 ; p = &a ; q = p ; /* đúng */ 

f = (float*)p; /* Đúng nh  ép ki u*/ ờ ể

 C ng, tr  con tr  v i m t s  nguyên ộ ừ ỏ ớ ộ ố

Ta có th  c ng (+), tr  (­) 1 con tr  v i 1 s  nguyên N nào đó; k t qu  tr  v  ể ộ ừ ỏ ớ ố ế ả ả ề

là 1 con tr  Con tr  này ch  đ n vùng nh  cách vùng nh  c a con tr  hi n t i ỏ ỏ ỉ ế ớ ớ ủ ỏ ệ ạ

Trang 21

2.  Con tr  và m ng m t chi uỏ ả ộ ề

Gi a m ng và con tr  có m t s  liên h  r t ch t ch  Nh ng ph n t  ữ ả ỏ ộ ự ệ ấ ặ ẽ ữ ầ ử

c a m ng có th  đủ ả ể ược xác đ nh b ng ch  s  trong m ng, bên c nh đó chúng ị ằ ỉ ố ả ạcũng có th  để ược xác l p qua bi n con tr ậ ế ỏ

­ Ví dụ 1 : int A[5] ; * p ;

P = A ;

+ M ng b  trí 5 ô nh  liên ti p ( m i ô chi m 2 byte ).ả ố ớ ế ỗ ế

+ Tên m ng là 1 h ng đ a ch  ( không thay đ i đả ằ ị ỉ ổ ược ), chính là đ a ch  c a ị ỉ ủ

ph n t  đ u tiên. => A tầ ử ầ ương đương v i &A[0]ớ

     (A + i ) tương đương v i &A[i]ớ

   *(A + i ) tương đương v i A[i]ớ

   p = A => p = &A[0] ( p tr  t i ph n t  A[0])ỏ ớ ầ ử

  *(p + i ) tương đương v i A[i].ớ

=>b n cách vi t nh  sau là tố ế ư ương đương : A[i], * ( A + i ), * ( p + i ), p[i]

printf(" a[%d] = " , i ) ; scanf( " %d ", p + i );

   }/* sapxep tăng dan */

Trang 22

 if (*(a + i)> * ( a + j ) )

 {

 t = * ( a + i ) ; *(a + i ) = * ( a + j) ;

*(a + j ) = t ;}

printf(" mang sau khi sap xep");

for ( i = 0; i < n ; i ++ )        printf("%5d",a[i]);

  s= 0 ; for ( i=0 ; i < n ; ++i )

s= s+ a[ i];

      printf ("\n Tong = %5d ", s );

   getch ( );

 }

3. Con tr  và m ng nhi u chi uỏ ả ề ề

Ta có th  s  d ng con tr  thay cho m ng nhi u chi u nh  sau: ể ử ụ ỏ ả ề ề ư

Gi  s  ta có m ng 2 chi u và bi n con tr  nh  sau: ả ử ả ề ế ỏ ư

Trang 23

a[1][0] được qu n lý b i contro_int+m; ả ởa[1][1] được qu n lý b i contro_int+m+1; ả ở  

a[n][m] được qu n lý b i contro_int+n*m;ả ở

Tương t  nh  th  đ i v i m ng nhi u h n 2 chi u.ự ư ế ố ớ ả ề ơ ề

Trang 24

­ Nh p vào m ng m t chi u  m t dãy s  nguyên ậ ả ộ ề ộ ố a1,a2,a3…an 

­ Tính trung bình c a các nguyên t  đã nh p vàoủ ử ậ

­ Tìm và in giá tr  l n nh t, nh  nh t c a m ngị ớ ấ ỏ ấ ủ ả

­ Xu t ra dãy các s  chăn, s  lấ ố ố ẻ

Yêu c u đánh giá

­ Bi tế  được khai báo bi n con trế ỏ và các phép toán trên con trỏ

­ Áp d ng các phép toán trên bi n con tr  vào các bài toánụ ế ỏ

­ Áp d ng đụ ược con tr  vào m ng m t chi u và m ng nhi u chi uỏ ả ộ ề ả ề ề

­ Vi t đế ược chương trình và ch y, ki m tra đạ ể ược k t quế ả

Trang 25

BÀI 3 LÀM VI C V I KI U C U TRÚCỆ Ớ Ể Ấ

Gi i thi u:ớ ệ

Bên c nh nh ng ki u d  li u có s n nh  char, int, float,… C cũng cho ạ ữ ể ữ ệ ẵ ưphép chúng ta t  đ nh nghĩa ki u d  li u đ  phù h p v i m c đích cũng nh  ự ị ể ữ ệ ể ợ ớ ụ ư

t o mã ngu n t i  u nh t. Bài vi t này s  ti p t c trình bày v  ki u d  li u ạ ồ ố ư ấ ế ẽ ế ụ ề ể ữ ệ

người dùng t  đ nh nghĩa là struct. ự ị

M c tiêu:

­ Trình bày được khái ni m bi n c u trúcệ ế ấ

­ Khai báo được bi n ki u c u trúcế ể ấ

­ Truy c p đậ ược đ n các thành ph n c a c u trúcế ầ ủ ấ

­ Nh p d  li u đậ ữ ệ ược cho bi n c u trúcế ấ

­ V n d ng ki u c u trúc làm các bài toán trong l p trìnhậ ụ ể ấ ậ

­ Rèn luy n tính c n th n, kiên trì, sáng t o, đ c l p và ho t đ ng nhóm. ệ ẩ ậ ạ ộ ậ ạ ộ

­ B o đ m an toàn và v  sinh cho ngả ả ệ ười và thi t b  trong phòng máy.ế ị

Trang 26

­ Tên_c u_trúc là m t tên h p l  đấ ộ ợ ệ ược dùng làm tên c u trúc;ấ

­ danh sách các bi n c u trúc: li t kê các bi n có ki u c u trúc v a khai báo, ế ấ ệ ế ể ấ ừ

­ Khai báo các thành ph n:  là m t danh sách các khai báo tên và ki u d  li uầ ộ ể ữ ệ  

c a các thành ph n t o nên c u trúc này. ủ ầ ạ ấ

+ Ði m thi (diem) c a h c sinh. ể ủ ọ

+ Kèm theo khai báo ki u c u trúc, chúng ta đ nh nghĩa hai bi n: hs là m tể ấ ị ế ộ  

+ Ki u_đã_có là ki u d  li u mà ta mu n đ i tên.ể ể ữ ệ ố ổ

+ Tên_ki u_m i là tên m i mà ta mu n đ t.ể ớ ớ ố ặ

Xét câu l nh sau:ệ

struct hoc_sinh {

char ho_ten[20];

float diem;

Trang 28

4. Nh p d  li u cho bi n c u trúcậ ữ ệ ế ấ

­ Ví d : ụ  L p chậ ương trình nh p vào h  tên c a h c sinh, đi m toán, lý. Tínhậ ọ ủ ọ ể  trung bình chung c a các đi m nh p vào.ủ ể ậ

Trang 29

    printf(" hoten     diem toan  diemly   diem  ");

    for(i=0;i<n;i++)

    printf("\n %s  %3f  %3f %3f", dshs[i].hoten, dshs[i].toan, dshs[i].ly, dshs[i].diem);

Trang 30

  dshs[i].diem=dshs[i].toan+dshs[i].ly;

}     printf(" danh sach hoc sinh vua nhap");

    printf(" hoten     diem toan  diemly   diem  ");

   for(i=0;i<n;i++)

    printf("\n %s  %3f %3f %3f", dshs[i].hoten, dshs[i].toan, dshs[i].ly, dshs[i].diem);

   getch();

   return 0;

   }

Câu h i, bài t pỏ ậ

3.1. Trình bày đ nh nghĩa và cách khai báo bi n c u trúcị ế ấ

3.2. L p chậ ương trình nh p  m t b n ghi g m h  tên, tu i. ậ ộ ả ồ ọ ổ

­ In k t qu  v a nh p  ra màn hìnhế ả ừ ậ

Trang 31

­ S p x p m ng theo th  t  tăng d n c a tu iắ ế ả ứ ự ầ ủ ổ

3.3. Vi t chế ương trình nh p m t b n ghi bao g m các thành ph n sau: h  tên, ậ ộ ả ồ ầ ọnăm sinh, quê quán, h  s  lệ ố ương, lương, thưởng, ph  c p, t m  ng, còn ụ ấ ạ ứ

nh n. Trong đó các thành ph n đậ ầ ược tính nh  sau:ư

Lương = h  s  lệ ố ương * 650

Thưởng = 10% lương

Ph  c p = 15% lụ ấ ương

T m  ng = 25% lạ ứ ươngCòn nh n = lậ ương +thương +ph  c p – t m  ngụ ấ ạ ứ3.4. Vi t chế ương trình t o m t danh sách bao g m: ạ ộ ồ h  tên, năm sinh, quê ọquán, đi m tóan, đi m lý, đi m hóa, t ng đi m, x p l ai. Trong đó: t ng ể ể ể ổ ể ế ọ ổ

đi m = đi m tóan+ đi m lý+đi m hóaể ể ể ể

x p l ai :    = Gi i n u t ng đi m >=27ế ọ ỏ ế ổ ể

       = Khá n u t ng đi m <27  và >=21ế ổ ể

       = Trung bình n u t ng đi m <21ế ổ ể

3.5.Vi t chế ương trình qu n lý hàng hóa 1 c a hàng g m : mã m t hàng, tênả ử ồ ặ  

m t hàng, s  lặ ố ượng, đ n giá, thành ti n. Nh p vào danh sách n m t hàng. ơ ề ậ ặ

Bi t :  Thành ti n = s  lế ề ố ượng * đ n giáơ

­ In các m t hàng v a nh pặ ừ ậ

­ S p x p danh sách theo th  t  gi m d n c a thành ti n.ắ ế ứ ự ả ầ ủ ề

Yêu c u đánh giá

­ Trình bày được khái ni m bi n c u trúcệ ế ấ

­ Khai báo được bi n ki u c u trúcế ể ấ

­ Truy c p đậ ược đ n các thành ph n c a c u trúcế ầ ủ ấ

­ Nh p d  li u đậ ữ ệ ược cho bi n c u trúcế ấ

­ Vi t đế ược chương trình và ch y, ki m tra đạ ể ược k t quế ả

Trang 32

BÀI 4LÀM VI C V I KI U T P TINỆ Ớ Ể Ậ

­ Trình bày được khái ni m v i t p tinệ ớ ậ

­ Trình bày và th c hi n đự ệ ược các ki u vào ra v i t p tinể ớ ậ

­ Th c hi n đự ệ ược các thao tác trên t p tinậ

­ S  d ng ki u d  li u t p tin đ  đ c và ghi t p văn b nử ụ ể ữ ệ ậ ể ọ ệ ả

­ Rèn luy n tính c n th n, kiên trì, sáng t o, đ c l p và ho t đ ng nhóm. ệ ẩ ậ ạ ộ ậ ạ ộ

­ B o đ m an toàn và v  sinh cho ngả ả ệ ười và thi t b  trong phòng máy.ế ị

N i dung 

1. Khái ni m v  t p tinệ ề ậ

Là m t lo i d  li u có th  ghi lên đĩa đ  dùng nhi u l n.Trong C ch  cóộ ạ ữ ệ ể ể ề ầ ỉ  

m t lo i File, nh ng c u trúc c a m i File có th  khác nhau. C u trúc này ộ ạ ư ấ ủ ỗ ể ấ

được hình thành khi ta ghi d  li u lên File, nó ph  thu c vào hàm mà ta dùng ữ ệ ụ ộ

đ  ghi d  li u lên đĩa.ể ữ ệ

Có 3 lo i d  li u ki u t p tin:ạ ữ ệ ể ậ

­  T p tin văn b n (Text File): là lo i t p tin dùng đ  ghi các ký t  lên đĩa, các ậ ả ạ ậ ể ự

ký t  này đự ượ ưc l u tr  dữ ướ ại d ng mã Ascii

­ T p tin đ nh ki u (Typed File): là lo i t p tin bao g m nhi u ph n t  cóậ ị ể ạ ậ ồ ề ầ ử  cùng ki u: char, int, long, c u trúc… và để ấ ượ ưc l u tr  trên đĩa dữ ướ ại d ng m tộ  chu i các byte liên t c.ỗ ụ

­  T p tin không đ nh ki u (Untyped File): là lo i t p tin mà d  li u c a chúngậ ị ể ạ ậ ữ ệ ủ  

g m các c u trúc d  li u mà ngồ ấ ữ ệ ười ta không quan tâm đ n n i dung ho c ế ộ ặ

Trang 33

ki u c a nó,ch  l u ý đ n các y u t  v t lý c a t p tin nh  đ  l n và các y uể ủ ỉ ư ế ế ố ậ ủ ậ ư ộ ớ ế  

t  tác đ ng lên t p tin mà thôi.ố ộ ậ

 Bi n t p tin:ế ậ  là m t bi n thu c ki u d  li u t p tin dùng đ  đ i di n cho ộ ế ộ ể ữ ệ ậ ể ạ ệ

m  tt p tin. D  li u ch a trong m t t p tin độ ậ ữ ệ ứ ộ ậ ược truy xu t qua các thao tác ấ

v i thông s  là bi n t p tin đ i di n cho t p tin đó.ớ ố ế ậ ạ ệ ậ

 Con tr  t p tin:ỏ ậ  Khi m t t p tin độ ậ ược m  ra đ  làm vi c, t i m i th i ở ể ệ ạ ỗ ờ

đi m, s  có m t v  trí c a t p tin mà t i đó vi c đ c/ghi thông tin s  x y ra. ể ẽ ộ ị ủ ậ ạ ệ ọ ẽ ả

Người ta hình dung có m t con tr  đang ch  đ n v  trí đó và đ t tên nó là con ộ ỏ ỉ ế ị ặ

tr  t p tin.ỏ ậ

Sau khi đ c/ghi xong d  li u, con tr  s  chuy n d ch thêm m t ph n t  ọ ữ ệ ỏ ẽ ể ị ộ ầ ử

v  phía  cu i t p tin. Sau ph n t  d  li u cu i cùng c a t p tin là d u k t ề ố ậ ầ ử ữ ệ ố ủ ậ ấ ếthúc t p tin EOF (End Of File).ậ

2. Các ki u vào ra v i t p:ể ớ ệ

Mu n thao tác trên t p tin, ta ph i l n lố ậ ả ầ ượt làm theo các bước:

Trang 34

2.2. M  t p tinở ậ

 Cú pháp: FILE *fopen(char *Path, const char *Mode)

Trong đó:

 +  Path: chu i ch  đỗ ỉ ường d n đ n t p tin trên đĩa.ẫ ế ậ

 + Type: chu i xác đ nh cách th c mà t p tin s  m  Các giá tr  có th  c aỗ ị ứ ậ ẽ ở ị ể ủ  

wb T o ra t p tin nh  phân đ  ghiạ ậ ị ể

ab N i vào t p tin nh  phânố ậ ị

r+, r+t M  m t t p tin văn b n đ  đ c/ghi. T p tin ph i có trên đĩa ở ộ ậ ả ể ọ ậ ả

n u không s  có l i.ế ẽ ỗw+, w+t T o ra t p tin văn b n đ  đ c ghi. N u t p tin đã có trên đĩa ạ ậ ả ể ọ ế ậ

s  b  xóa.ẽ ịa+, a+t M  t p tin đ  đ c/ghi b  sung theo ki u văn b n. N u t p tinở ậ ể ọ ổ ể ả ế ậ  

ch a có thì t o m i.ư ạ ớr+b M  ra t p tin nh  phân đ  đ c/ghiở ậ ị ể ọ

w+b T o ra t p tin nh  phân đ  đ c/ghiạ ậ ị ể ọ

a+b N i vào hay t o m i t p tin nh  phânố ạ ớ ậ ị

­ Hàm fopen tr  v  m t con tr  t p tin. Chả ề ộ ỏ ậ ương trình c a ta không th  thay ủ ể

đ i giá tr  c a con tr  này. N u có m t l i xu t hi n trong khi m  t p tin thì ổ ị ủ ỏ ế ộ ỗ ấ ệ ở ậhàm này tr  v  con tr  NULL.ả ề ỏ

Trang 35

N u m  t p tin đ  ghi, n u t p tin đã t n t i r i thì t p tin s  b  xóa và m t ế ở ậ ể ế ậ ồ ạ ồ ậ ẽ ị ộ

t p tin m i đậ ớ ượ ạc t o ra. N u ta mu n ghi n i d  li u, ta ph i s  d ng ch  đế ố ố ữ ệ ả ử ụ ế ộ 

“a”. Khi m  v i ch  đ  đ c, t p tin ph i t n t i r i, n u không m t l i s  ở ớ ế ộ ọ ậ ả ồ ạ ồ ế ộ ỗ ẽ

xu t hi n.ấ ệ

2.3. Đóng t p tin

Hàm fclose() được dùng đ  đóng t p tin để ậ ược m  b i hàm fopen(). Hàm này ở ở

s  ghi d  li u còn l i trong vùng đ m vào t p tin và đóng l i t p tin.ẽ ữ ệ ạ ệ ậ ạ ậ

Cú pháp: int fclose(FILE *f)

Trong đó f là con tr  t p tin đỏ ậ ược m  b i hàm fopen(). Giá tr  tr  v  c a hàm ở ở ị ả ề ủ

là 0 báo r ng vi c đóng t p tin thành công. Hàm tr  v  EOF n u có xu t hi n ằ ệ ậ ả ề ế ấ ệ

 Ý nghĩa: Ki m tra xem đã ch m t i cu i t p tin hay ch a và tr  v  EOF ể ạ ớ ố ậ ư ả ề

n u cu i t p tin đế ố ậ ược ch m t i, ngạ ớ ượ ạ ả ềc l i tr  v  0

Trang 36

2.5. Di chuy n con tr  t p tin vể ỏ ậ ề đ u t p tin ­ Hàm rewind()ầ ậ

Khi ta đang thao tác m t t p tin đang m , con tr  t p tin luôn di chuy n v  ộ ậ ở ỏ ậ ể ềphía cu i t p tin. Mu n cho con tr  quay v  đ u t p tin nh  khi m  nó, ta s  ố ậ ố ỏ ề ầ ậ ư ở ử

Trong đó, tham s  c ch a mã Ascii c a m t ký t  nào đó. Mã này đố ứ ủ ộ ự ược ghi lên 

t p tin liên k t v i con tr  f. Hàm này tr  v  EOF n u g p l i.ậ ế ớ ỏ ả ề ế ặ ỗ

3.1.2. Hàm fputs()

­ Hàm này dùng đ  ghi m t chu i ký t  ch a trong vùng đ m lên t p tin văn ể ộ ỗ ự ứ ệ ậ

b n.ả

­ Cú pháp: int puts(const char *buffer, FILE *f)

Trong đó, buffer là con tr  có ki u char ch  đ n v  trí đ u tiên c a chu i ký t  ỏ ể ỉ ế ị ầ ủ ỗ ự

được ghi vào. Hàm này tr  v  giá tr  0 n u buffer ch a chu i r ng và tr  v  ả ề ị ế ứ ỗ ỗ ả ềEOF n u g p l i.ế ặ ỗ

Trang 37

%[.s  ch  s  th p phân] ố ữ ố ậ

f

Ghi s  th c có <s  ch  s  th p phân> theo quy t c làm ố ự ố ữ ố ậ ắtròn s ố

%x Ghi  s  nguyên h  th p l c phânố ệ ậ ụ

%e ho c %E ho c %g ặ ặ

ho c %Gặ

Ghi s  th c d ng khoa h c (nhân 10 mũ x)ố ự ạ ọ

­  Ví dụ: Vi t ch ng trình ghi chu i ký t  lên t p tin văn b n D:\\Baihat.txtế ươ ỗ ự ậ ả

Trang 38

­ Hàm này dùng đ  đ c d  li u t  t p tin văn b n đang để ọ ữ ệ ừ ậ ả ược m  đ  làm vi c.ở ể ệ

­  Hàm này được dùng đ  đ c m t chu i ký t  t  t p tin văn b n đang để ọ ộ ỗ ự ừ ậ ả ược 

m  ra và liên k t v i con tr  f cho đ n khi đ c đ  n ký t  ho c g p ký t  ở ế ớ ỏ ế ọ ủ ự ặ ặ ự

xu ng dòng ‘\n’ (ký t  này cũng đố ự ược đ a vào chu i k t qu ) hay g p ký t  ư ỗ ế ả ặ ự

k t thúc EOF (ký t  này không đế ự ược đ a vào chu i k t qu ).ư ỗ ế ả

Trong đó:

­ buffer (vùng đ m): con tr  có ki u char ch  đ n cùng nh  đ  l n ch a các kýệ ỏ ể ỉ ế ớ ủ ớ ứ  

t  nh n đự ậ ược

­ n: giá tr  nguyên ch  đ  dài l n nh t c a chu i ký t  nh n đị ỉ ộ ớ ấ ủ ỗ ự ậ ược

­ f: con tr  liên k t v i m t t p tin nào đó.ỏ ế ớ ộ ậ

­ Ký t  NULL (‘\0’) t  đ ng đự ự ộ ược thêm vào cu i chu i k t qu  l u trong ố ỗ ế ả ưvùng đêm

­ Hàm tr  v  đ a ch  đ u tiên c a vùng đ m khi không g p l i và ch a g p kýả ề ị ỉ ầ ủ ệ ặ ỗ ư ặ  

t  k t thúc EOF. Ngự ế ượ ạc l i, hàm tr  v  giá tr  NULL.ả ề ị

3.2.3. Hàm fscanf()

 ­ Hàm này dùng đ  đ c d  li u t  t p tin văn b n vào danh sách các bi n ể ọ ữ ệ ừ ậ ả ếtheo đ nh d ng.ị ạ

­ Cú pháp:fscanf(FILE *f, const char *format, varlist)

Trong đó: format: chu i đ nh d ng (gi ng hàm scanf()); varlist: danh sách các ỗ ị ạ ố

bi n m i bi n cách nhau d u ph y (,).ế ỗ ế ấ ẩ

­ Ví dụ   :   Vi t ch ng trình chép t p tin D:\Baihat.txt   trên sang t p tin ế ươ ậ ở ậ

D:\Baica.txt

#include<stdio.h>

Trang 39

while (! feof(f1)){

fputc(ch,f2);

ch=fgetc(f1);

}fcloseall();

­  Ghi các ph n t  v a nh p vào t p văn b n v i tên mang.txtầ ử ừ ậ ệ ả ớ

Câu 4.2.M i sinh viên c n qu n lý ít nh t 2 thông tin: mã sinh viên và h  tên. ỗ ầ ả ấ ọ

Vi t chế ương trình cho phép l a ch n các ch c năng: nh p danh sách sinh viên ự ọ ứ ậ

Trang 40

t  bàn phím r i ghi lên t p tin SinhVien.dat, đ c d  li u t  t p tin ừ ồ ậ ọ ữ ệ ừ ậ

SinhVien.dat r i hi n th  danh sách lên màn hình, tìm ki m h  tên c a m t ồ ể ị ế ọ ủ ộsinh viên nào đó d a vào mã sinh viên nh p t  bàn phím.ự ậ ừ

Yêu c u đánh giá

­ Trình bày và th c hi n đự ệ ược các ki u vào ra v i t p tinể ớ ậ

­ Th c hi n đự ệ ược các thao tác trên t p tinậ

­ S  d ng ki u d  li u t p tin đ  đ c và ghi t p văn b nử ụ ể ữ ệ ậ ể ọ ệ ả

­ Vi t đế ược chương trình và ch y, ki m tra đạ ể ược k t quế ả

Ngày đăng: 10/07/2020, 09:58

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm