Tài liệu Bài 11: Mảng – Lý thuyết pdf

14 292 0
Tài liệu Bài 11: Mảng – Lý thuyết pdf

Đ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

Bài 11: Mảng Mục tiêu: Kết thúc học này, bạn có thể:  Hiểu phần tử mảng số mảng       Khai báo mảng Hiểu cách quản lý mảng C Hiểu mảng khởi tạo Hiểu mảng chuỗi/ ký tự Hiểu mảng hai chiều Hiểu cách khởi tạo mảng nhiều chiều Giới thiệu: Có thể bạn gặp khó khăn lưu trữ tập hợp phần tử liệu giống biến khác Ví dụ, điểm cho tất 11 cầu thủ đội bóng đá phải ghi nhận trận đấu Sự lưu trữ điểm cầu thủ biến có tên khác chắn phiền hà dùng biến chung cho chúng Với mảng việc thực đơn giản Một mảng tập hợp phần tử liệu có kiểu Mỗi phần tử lưu trữ vị trí nhớ Những phần tử gọi phần tử mảng 11.1 Các phần tử mảng mục: Mỗi phần tử mảng định danh mục số gán cho Chiều mảng xác định số số cần thiết để định danh phần tử Một số số nguyên dương bao dấu ngoặc vuông [ ] đặt sau tên mảng, khơng có khoảng trắng Một số chứa giá trị nguyên bắt đầu Vì vậy, mảng player với 11 phần tử biểu diễn sau: player[0], player[1], player[2], , player[10] Như thấy, phần tử mảng bắt đầu với player[0], phần tử cuối player[10] player[11] Điều C, số mảng 0; mảng N phần tử, phần tử cuối có số N-1 Phạm vi cho phép giá trị số gọi miền giới hạn số mảng, giới hạn giới hạn Một số mảng hợp lệ phải có giá trị nguyên nằm niềm giới hạn Thuật ngữ hợp lệ sử dụng cho nguyên nhân đặc trưng Trong C, người dùng cố gắng truy xuất phần tử nằm dãy số hợp lệ (như player[11] ví dụ mảng), trình biên dịch C khơng phát sinh lỗi Tuy nhiên, truy xuất giá trị dẫn đến kết khơng đốn Cũng có nguy viết chồng lên liệu mã lệnh chương trình Vì vậy, người lập trình phải đảm bảo tất số nằm miền giới hạn hợp lệ  Khai báo mảng: Một mảng có vài đặc tính riêng biệt phải khai báo sử dụng chúng Những đặc tính bao gồm:  Lớp lưu trữ  Kiểu liệu phần tử mảng  Tên mảng – xác định vị trí phần tử mảng  Kích thước mảng - số có giá trị nguyên dương Mảng Một mảng khai báo giống cách khai báo biến, ngoại trừ tên mảng theo sau nhiều biểu thức, đặt dấu ngoặc vuông [] xác định chiều dài mảng Cú pháp tổng quát khai báo mảng sau: lớp_lưu_trữ kiểu_dữ_liệu tên_mảng[biểu_thức_kích_thước] Ở đây, biểu_thức_kích_thước biểu thức xác định số phần tử mảng phải định trị nguyên dương Lớp_lưu_trữ tùy chọn Mặc định lớp automatic dùng cho mảng khai báo bên hàm khối lệnh, lớp external dùng cho mảng khai báo bên ngồi hàm Vì mảng player khai báo sau: int player[11]; Nên nhớ rằng, khai báo mảng, kích thước mảng 11, nhiên số phần tử bên mảng từ đến 10 Các qui tắc đặt tên mảng giống với qui tắc đặt tên biến Một tên mảng tên biến khơng giống nhau, dẫn đến nhập nhằng Nếu khai báo xuất chương trình, trình biên dịch hiển thị thơng báo lỗi  Một vài qui tắc với mảng: • Tất phần tử mảng có kiểu Điều có nghĩa là, mảng khai báo kiểu int, khơng thể chứa phần tử có kiểu khác • Mỗi phần tử mảng sử dụng nơi mà biến cho phép hay yêu cầu • Một phần tử mảng tham chiếu đến cách sử dụng biến biểu thức nguyên Sau tham chiếu hợp lệ: player[i]; /*Ở i biến, nhiên cần phải ý i nằm miền giới hạn số khai báo cho mảng player*/ player[3] = player[2] + 5; player[0] += 2; player[i / + 1]; • Kiểu liệu mảng int, char, float, double 11.2 Việc quản lý mảng C: Một mảng “đối xử” khác với biến C Thậm chí hai mảng có kiểu kích thước khơng thể tương đương Hơn nữa, gán mảng trực tiếp cho mảng khác Thay thế, phần tử mảng phải gán riêng lẻ tương ứng với phần tử mảng khác Các giá trị gán cho toàn mảng, ngoại trừ thời điểm khởi tạo Tuy nhiên, phần tử không gán trị mà cịn so sánh int player1[11], player2[11]; for (i = 0; i < 11; i++) player1[i] = player2[i]; Tương tự, có kết việc sử dụng lệnh gán riêng lẻ sau: player1[0] = player2[0]; player1[1] = player2[1]; Lập trình C player1[10] = player2[10]; Cấu trúc for cách lý tưởng để thao tác mảng Ví dụ 11.1: /* Program demonstrates a single dimensional array */ #include void main() { int num[5]; int i; num[0] = 10; num[1] = 70; num[2] = 60; num[3] = 40; num[4] = 50; for (i = 0; i < 5; i++) pirntf(“\n Number at [%d] is %d”, i, num[i]); } Kết chương trình trình bày bên dưới: Number Number Number Number Number at at at at at [0] [1] [2] [3] [4] is is is is is 10 70 60 40 50 Ví dụ bên nhập giá trị vào mảng có kích thước 10 phần tử, hiển thị giá trị lớn giá trị trung bình Ví dụ 11.2: /*Input values are accepted from the user into the array ary[10]*/ #include void main() { int ary[10]; int i, total, high; for (i = 0; i < 10; i++) { printf(“\nEnter value: %d: “, i + 1); scanf(“%d”, &ary[i]); } /* Displays highest of the entered values */ high = ary[0]; for (i = 1; i < 10; i++) { if (ary[i] > high) high = ary[i]; } printf(“\n Highest value entered was %d”, high); /* Prints average of value entered for ary[10] */ Mảng for (i = 0, total = 0; i < 10; i++) total = total + ary[i]; printf(“\nThe average of the element of ary is %d”, total/i); } Một ví dụ kết trình bày đây: Enter value: 1: 10 Enter value: 2: 20 Enter value: 3: 30 Enter value: 4: 40 Enter value: 5: 50 Enter value: 6: 60 Enter value: 7: 70 Enter value: 8: 80 Enter value: 9: 90 Enter value: 10: 10 Highest value entered was 90 The average of the element of ary is 46  Việc khởi tạo mảng: Các mảng không khởi tạo tự động, trừ phần tử mảng gán giá trị riêng lẻ Không nên dùng mảng trước có khởi tạo thích hợp Điều khơng gian lưu trữ mảng khơng khởi tạo tự động, dễ gây kết không lường trước Mỗi phần tử mảng chưa khởi tạo sử dụng biểu thức toán học, giá trị tồn sẵn ô nhớ sử dụng, giá trị không đảm bảo có kiểu khai báo mảng, trừ phần tử mảng khởi tạo cách rõ ràng Điều không cho mảng mà cịn cho biến thơng thường Trong đoạn mã lệnh sau, phần tử mảng gán giá trị dùng vòng lặp for int ary[20], i; for(i=0; i 0) { /*Interchange two strings*/ strcpy(temp, x[item]); strcpy(x[item], x[i]); strcpy(x[i], temp); } } /* Display the arranged list of strings */ printf(“Recorded list of strings: \n”); } for(i = 0; i < n; ++i) { printf("\nString %d is %s", i + 1, x[i]); } Chương trình nhập vào chuỗi đến người dùng nhập vào từ “END” Khi END nhập vào, chương trình xếp danh sách chuỗi in theo thứ tự xếp Chương trình kiểm tra hai phần tử Nếu thứ tự chúng không thích hợp, hai phần tử đổi chỗ Sự so sánh hai chuỗi thực với trợ giúp hàm strcmp() đổi chỗ thực với hàmg strcpy() Một ví dụ kết thực thi chương trình sau: Enter each string on a separate line Type ‘END’ when over String 1: has String 2: seen 10 Lập trình C String String String Record String String String String Mảng 3: 4: 5: list is is is is alice wonderland END of strings: alice has seen wonderland 11 Tóm tắt học  Một mảng tập hợp phần tử liệu có kiểu tham chiếu tên  Mỗi phần tử mảng có kiểu liệu, lớp lưu trữ có đặc tính  Mỗi phần tử lưu trữ vị trí nhớ Các phần tử liệu biết phần tử mảng  Chiều mảng xác định số số cần thiết để định danh phần tử  Các mảng có kiểu liệu int, char, float, double  Phần tử mảng tham chiếu cách sử dụng biến biểu thức số nguyên  Một mảng khởi tạo, trừ phần tử gán giá trị riêng lẻ  Các mảng extern static khởi tạo khai báo  Mảng hai chiều xem mảng mảng chiều 12 Lập trình C Kiểm tra tiến độ học tập Một tập hợp phần tử liệu kiểu tham chiếu tên A Vòng lặp C Cấu trúc B Mảng D Tất sai Mỗi phần tử mảng định danh gán tới A Chỉ mục, Chỉ số C Tất sai B Miền giá trị, Chỉ số Một tên mảng tên biến giống (Đúng/Sai) Một phần tử mảng sử dụng vị trí mà biến cho phép yêu cầu (Đúng/Sai) Hai mảng, chúng có kiểu kích thước, khơng thể xem _ A Điều kiện C Bằng B Sự phủ định D Tất sai Một chuỗi khai báo mảng kiểu ký tự, kết thúc ký tự _ A chấm phẩy C NULL B phẩy D Tất sai Các mảng có nhiều chiều (Đúng/Sai) Sự so sánh hai chuỗi thực với giúp đỡ đổi vị trí thực _ A strcmp, strcpy C strlen, strcat Mảng B strcat, strcpy D Tất sai 13 Bài tập tự làm Viết chương trình để xếp tên sau theo thứ tự abc George Albert Tina Xavier Roger Tim William Viết chương trình đếm số ký tự nguyên âm dòng văn Viết chương trình nhập số sau vào mảng đảo ngược mảng 34 45 56 67 89 14 Lập trình C ... cho mảng player*/ player[3] = player[2] + 5; player[0] += 2; player[i / + 1]; • Kiểu liệu mảng int, char, float, double 11.2 Việc quản lý mảng C: Một mảng “đối xử” khác với biến C Thậm chí hai mảng. .. dùng cho mảng khai báo bên ngồi hàm Vì mảng player khai báo sau: int player[11]; Nên nhớ rằng, khai báo mảng, kích thước mảng 11, nhiên số phần tử bên mảng từ đến 10 Các qui tắc đặt tên mảng giống... trữ vị trí nhớ Các phần tử liệu biết phần tử mảng  Chiều mảng xác định số số cần thiết để định danh phần tử  Các mảng có kiểu liệu int, char, float, double  Phần tử mảng tham chiếu cách sử dụng

Ngày đăng: 22/12/2013, 03:15

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

Tài liệu liên quan