1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Ip 08 array of array and struct in c

21 0 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 21
Dung lượng 423,33 KB

Nội dung

Microsoft PowerPoint IP 08 Array of Array and Struct in C MảngMảng nhiềunhiều chiềuchiều KiểuKiểu cấucấu trúctrúc GV GV NguyễnNguyễn Minh Minh HuyHuy KiểuKiểu cấucấu trúctrúc 1Nhập môn lập trình GV Ng[.]

Mảng nhiều chiều Kiểu cấu trúc GV Nguyễn Minh Huy Nhập mơn lập trình - GV.Nguyễn Minh Huy Nội dung   Mảng nhiều chiều chiều Kiểu cấu trúc trúc Nhập mơn lập trình - GV.Nguyễn Minh Huy Nội dung   Mảng nhiều chiều chiều Kiểu cấu trúc trúc Nhập mơn lập trình - GV.Nguyễn Minh Huy Mảng nhiều chiều  Xét chương trình sau: sau:  Nhập xuất ma trận x 10   Khai báo mảng mảng:: int a1[10], a2[10], a3[10], a4[10], a5[10] Nhập xuất ma trận 50 x 10  Khai báo 50 mảng mảng!! !!  Làm biểu diễn ma trận M x N? Nhập môn lập trình - GV.Nguyễn Minh Huy Mảng nhiều chiều  Giải pháp 1: Dùng mảng chiều!! chiều!!  Biểu diễn ma trận M x N:    Khai báo mảng chiều M x N phần tử tử Để truy xuất dòng i cột j  Truy xuất phần tử [ i * N + j ] Nhập mơn lập trình - GV.Nguyễn Minh Huy Mảng nhiều chiều  Giải pháp 2: Dùng mảng mảng mảng  Từ khóa typedef typedef::    Đặt tên khác cho kiểu liệu liệu Cú pháp pháp:: typedef > >; typedef int SoNguyen SoNguyen;; typedef float MangThuc MangThuc[[ 10 ]; SoNguyen a, b, c; MangThuc m; printf(“%d %d %d”, a, b, c); printf(“%d m[ ] = 123; Nhập môn lập trình - GV.Nguyễn Minh Huy Mảng nhiều chiều  Giải pháp 2:  Biểu diễn ma trận M x N:    Đặt tên cho mảng chiều N phần tử tử Khai báo mảng chiều M phần tử kiểu đặt tên tên Để truy xuất dòng i cột j  Truy xuất phần tử [ i ] [ j ] Nhập mơn lập trình - GV.Nguyễn Minh Huy Mảng nhiều chiều  Giải pháp 3: Dùng mảng nhiều chiều chiều  Khai báo báo::  > [ mảng>[< >] [[< > ]; , >, < cột> phải số số int int  m1[ m1[ ][ 10 ]; ]; // Ma trận x 10 số nguyên nguyên m2[ m2[ M ][ N ]];; // Sai Sai Truy xuất phần tử: tử: > [ dòng> ] [ cột> ] : >: số nguyên từ đến dòng> - : >: số nguyên từ đến cột> - m1[ m1[ ][ ] = 5; m1[ m1[ ][ ] = 6; m1[ m1[ -1 ][ 10 ] = 7; Nhập mơn lập trình - GV.Nguyễn Minh Huy // Sai Sai Mảng nhiều chiều  Giải pháp 3: Dùng mảng nhiều chiều chiều  Khởi tạo: tạo:  > [ mảng>[< >] [[< >] = { , , f }; // Khởi tạo tất phần tử tử int m1[ m1[ ][ ] = { { 1, 1, 1, 1, }, { 1, 2, 3, 4, }, { 5, 4, 3, 2, } }; Nhập mơn lập trình - GV.Nguyễn Minh Huy // Khởi tạo vài phần tử tử int m1[ m1[ 3][ ] = { { 1, }, { 1, 2, }, {0} }; // Tự động biết số dòng dòng int m1[ ][ ] = { { 1, }, { 1, 2, }, {0} }; Khái niệm mảng  Giải pháp 3: Dùng mảng nhiều chiều chiều  Truyền tham số mảng mảng::     Khai báo tham số mảng giống biến mảng mảng void foo( foo( int a[5][10] ); Khai báo tham số mảng bỏ số dòng dòng void foo( foo( int a[ ][10] ); Phần tử mảng bị thay đổi sau khỏi hàm hàm void foo( foo( int a[ ][10] ) { a[2][2] = 9; a[2][5] = 8; } void main() { int a[5][10] = { { } }; foo foo(a); (a); // a[2][2], a[2][5] bị thay đổi đổi } Nhập mơn lập trình - GV.Nguyễn Minh Huy 10 Nội dung   Mảng nhiều chiều chiều Kiểu cấu trúc trúc Nhập mơn lập trình - GV.Nguyễn Minh Huy 11 Kiểu cấu trúc  Xét chương trình sau: sau:  Thông tin học sinh gồm gồm::      Họ tên tên Ngày sinh sinh Giới tính tính Điểm văn văn,, tốn tốn,, ngoại ngữ ngữ Viết chương trình trình::   Nhập vào học sinh sinh Xuất thông tin học sinh vừa nhập nhập Nhập mơn lập trình - GV.Nguyễn Minh Huy 12 Kiểu cấu trúc  Kiểu cấu trúc C: Kiểu liệu phức hợp hợp  Gom nhóm liệu với nhau  Khai báo kiểu cấu trúc trúc::  struct > { ; ; f };  Khai báo biến cấu trúc trúc:: > ; >; Nhập mơn lập trình - GV.Nguyễn Minh Huy struct HocSinh { char hoten hoten[50]; [50]; char ngaysinh[11]; ngaysinh[11]; bool gioitinh gioitinh;; float diemvan; diemvan; float diemtoan; diemtoan; }; void main() { HocSinh hs1, hs2; } 13 Kiểu cấu trúc  Kiểu cấu trúc C:  Khởi tạo biến cấu trúc trúc:: > >= { , , f };  Truy xuất thành phần phần:: > phần> void main() { HocSinh hs = { “Nguyen Van A”, “01/01/1997”, 1, 7, 8, }; hs.diemvan hs.diemvan = 5; hs.diemToan hs.diemToan = 9; } Nhập mơn lập trình - GV.Nguyễn Minh Huy 14 Kiểu cấu trúc  Kiểu cấu trúc C:  Truyền tham số: số:    Giống kiểu bình thường thường Truyền tham trị  Giá trị thành phần không đổi đổi Truyền tham chiếu  Giá trị thành phần thay đổi đổi void cong1( cong1(HocSinh hs hs)) { hs.diemvan++; hs.diemvan ++; hs.diemtoan++; hs.diemtoan ++; } void cong2( cong2(HocSinh &hs hs)) { hs.diemvan++; hs.diemvan ++; hs.diemtoan++; hs.diemtoan ++; } void main main() () { HocSinh hs1 hs1;; cong1(hs1); cong2(hs1); } Nhập mơn lập trình - GV.Nguyễn Minh Huy 15 Tóm tắt  Mảng nhiều chiều chiều:: Giải pháp 1: mảng chiều chiều  Giải pháp 2: mảng mảng mảng  Giải pháp 3: mảng nhiều chiều thật sự   Kiểu cấu trúc trúc:: Kiểu liệu phức hợp hợp  Gom nhóm liệu với nhau  Khai báo báo:: từ khóa “struct” struct”  Truy xuất phần tử: tử: dấu “.” “.”  Nhập mơn lập trình - GV.Nguyễn Minh Huy 16 Bài tập  Bài tập 8.1: Viết chương trình C thao tác ma trận sau sau:: - Nhập vào ma trận vuông N x N chứa số nguyên nguyên - Hãy cho biết biết:: a) Tổng phần tử nằm đường chéo chính//phụ phụ b) Dịng có tổng lớn nhất,, nhỏ nhất c) Ma trận có ma phương hay khơng khơng Nhập mơn lập trình - GV.Nguyễn Minh Huy 17 Bài tập  Bài tập 8.2: Viết chương trình C thao tác ma trận sau sau:: - Nhập vào ma trận M x N N x K chứa số nguyên nguyên - Hãy Hãy:: a) Tính tích ma trận vừa nhập nhập b) Trích danh sách số xuất ma trận trận Nhập mơn lập trình - GV.Nguyễn Minh Huy 18 Bài tập  Bài tập 8.3: Viết chương trình C thao tác phân số sau sau:: - Khai báo kiểu cấu trúc phân số số - Nhập vào phân số số - Tính xuất kết tổng tổng,, hiệu, hiệu, tích, tích, thương, thương, nghịch đảo đảo,, rút gọn phân số vừa nhập nhập Nhập mơn lập trình - GV.Nguyễn Minh Huy 19 Bài tập  Bài tập 8.4: Viết chương trình C thao tác đơn thức sau sau:: - Khai báo kiểu cấu trúc đơn thức thức - Nhập vào đơn thức (có dạng axN) - Tính xuất kết tích tích,, thương, thương, đạo hàm hàm,, nguyên hàm hai đơn thức vừa nhập nhập Nhập mơn lập trình - GV.Nguyễn Minh Huy 20

Ngày đăng: 11/04/2023, 18:48