Bài giảng Lập trình cơ bản C - Chương 7: Mảng

Các phần tử của mảng và các chỉ số

Khai báo mảng

Cách quản lý mảng trong C

Cách khởi tạo mảng

Tìm hiểu chuỗi / mảng ký tự

Tìm hiểu mảng hai chiều

Cách khởi tạo mảng hai chiều

 

ppt 22 trang yennguyen 4440
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình cơ bản C - Chương 7: Mảng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình cơ bản C - Chương 7: Mảng

Bài giảng Lập trình cơ bản C - Chương 7: Mảng
Mảng 
Chương 7 
Elementary Programming with C/Session 7/ Slide 2 of 21 
Mục tiêu của bài học 
Các phần tử của mảng và các chỉ số 
Khai báo mảng 
Cách quản lý mảng trong C 
Cách khởi tạo mảng 
Tìm hiểu chuỗi / mảng ký tự 
Tìm hiểu mảng hai chiều 
Cách khởi tạo mảng hai chiều 
Elementary Programming with C/Session 7/ Slide 3 of 21 
Các phần tử và chỉ số của mảng 
Mỗi phần tử được xác định bằng một số thứ tự (còn gọi là chỉ số) duy nhất trong mảng 
Số chiều của mảng được xác định bằng số các chỉ số cần thiết để định danh duy nhất từng phần tử 
Chỉ số là một số nguyên dương trong [ ] đặt ngay sau tên mảng 
Chỉ số của mảng (trong C) được bắt đầu là 0 
Mảng player với 11 phần tử : 
player[0], player[1], player[2],. player[10] 
Elementary Programming with C/Session 7/ Slide 4 of 21 
Khai báo mảng 
Các đặc tính riêng của mảng cần được định nghĩa. 
 Lớp lưu trữ 	 
	Kiểu dữ liệu của các phần tử 
	 Tên mảng 	đại diện cho vị trí phần tử đầu tiên 
	 Kích thước mảng 	một hằng số 
Elementary Programming with C/Session 7/ Slide 5 of 21 
 Khai báo mảng giống như cách khai báo biến. Chỉ khác là tên mảng được theo sau bởi một hoặc nhiều biểu thức đặt trong cặp dấu ngoặc vuông [], để xác định kích thước của mảng. 
	 int player[11]; 
Khai báo mảng (tt.) 
Elementary Programming with C/Session 7/ Slide 6 of 21 
Các qui tắc 
Các phần tử của mảng có cùng kiểu dữ liệu 
Mỗi phần tử của mảng có thể được sử dụng như một biến riêng lẻ 
Kiểu dữ liệu của mảng có thể là int, char, float hoặc double 
Elementary Programming with C/Session 7/ Slide 7 of 21 
Quản lý mảng trong C 
Trong ngôn ngữ C, mảng được “đối xử” không giống hoàn toàn với biến 
Hai mảng có cùng kiểu và cùng kích thước cũng không được xem là tương đương nhau 
Không thể gán trực tiếp một mảng cho một mảng khác. 
Không thể gán trị cho toàn bộ mảng, mà phải gán trị cho từng phần tử của mảng 
Elementary Programming with C/Session 7/ Slide 8 of 21 
/*Input values are accepted from the user into the array ary[10]*/ 
#include 
void main(){ 
 int ary[10]; 
 int i, total, high,n; 
	 printf(“Nhap so ptu cua mang <10\n”); 
	 Scanf(“%d”,&n); 
 for(i=0; i<n; i++) { 
	printf(“\n Enter value: %d : ”, i+1); 
	scanf(“%d”,&ary[i]); 
 } 
Quản lý mảng trong C (tt) 
Elementary Programming with C/Session 7/ Slide 9 of 21 
/* Displays highest of the entered values */ 
 high = ary[0]; 
 for(i=1; i<10; i++){ 
	if(ary[i] > high) high = ary[i]; 
 } 
 printf(“\nHighest value entered was %d”, high); 
/*	prints average of values entered for ary[10] */ 
 for(i=0,total=0; i<10; i++) total = total + ary[i]; 
 printf(“\nThe average of the elements of ary is%d”,total/i); 
} 
Quản lý mảng trong C (tt) 
Elementary Programming with C/Session 7/ Slide 10 of 21 
Khởi tạo mảng 
Mỗi phần tử của một mảng auto cần được khởi tạo riêng rẽ. 
Trong ví dụ sau các phần tử của mảng được gán giá trị bằng cách sử dụng vòng lặp for 
#include 
void main() { 
 char alpha[26]; 
 int i, j; 
 for(i=65,j=0; i<91; i++,j++) { 
 	alpha[j] = i; 
	printf(“The character now assigned is%c\n”,alpha[j]); 
 } 
 getchar(); 
} 
Elementary Programming with C/Session 7/ Slide 11 of 21 
Khởi tạo mảng (tt) 
Trong trường hợp mảng extern và static, các phần tử được tự động khởi tạo với giá trị 0 
Elementary Programming with C/Session 7/ Slide 12 of 21 
Chuỗi/Mảng ký tự 
Chuỗi có thể được định nghĩa như là một mảng kiểu ký tự, được kết thúc bằng ký tự null 
Mỗi ký tự trong chuỗi chiếm một byte và ký tự cuối cùng của chuỗi là “\0” (null) 
Ví dụ: 
Elementary Programming with C/Session 7/ Slide 13 of 21 
Chuỗi/Mảng ký tự (ví dụ) 
#include 
void main(){ 
 char ary[5]; 
 int i; 
 printf(“\n Enter string : “); 
 scanf(“%s”,ary); 
 printf(“\n The string is %s \n\n”,ary); 
 for (i=0; i<5; i++) 
	printf(“\t%d”, ary[i]); 
 } 
Elementary Programming with C/Session 7/ Slide 14 of 21 
Chạy chương trình: 
	Enter string: 
	Nếu dữ liệu nhập là “appl”, output của chương trình là: 
	 The string is appl 
	 97	112	112	108	0 
Chuỗi/Mảng ký tự (tt) 
Elementary Programming with C/Session 7/ Slide 15 of 21 
Các hàm xử lý chuỗi 
Các hàm xử lý chuỗi được tìm thấy trong thư viện chuẩn 
Elementary Programming with C/Session 7/ Slide 16 of 21 
Mảng hai chiều 
Mảng đa chiều đơn giản nhất và thường được dùng nhất là mảng hai chiều 
Mảng hai chiều có thể xem như là một mảng với mỗi phần tử là mảng một chiều 
Về logic, một mảng hai chiều trông giống như một bảng lịch trình xe lửa, gồm các dòng và các cột 
Khai báo mảng hai chiều: 
 int temp[4][3]; 
Elementary Programming with C/Session 7/ Slide 17 of 21 
Khởi tạo mảng đa chiều 
int ary[3][4] ={1,2,3,4,5,6,7,8,9,10,11,12}; 
Kết quả của phép gán trên như sau: 
Elementary Programming with C/Session 7/ Slide 18 of 21 
 int ary[3][4] ={{1,2,3},{4,5,6},{7,8,3}}; 
Kết quả của phép gán trên như sau: 
Khởi tạo mảng đa chiều (tt) 
Elementary Programming with C/Session 7/ Slide 19 of 21 
Một mảng chuỗi hai chiều được khai báo theo cách sau: 
char str_ary[25][80]; 
Khởi tạo mảng đa chiều (tt) 
/* Chương trình nhập các số vào một mảng hai chiều. */ 
#include 
void main() 
{ 
	int arr[2][3]; 
	int row, col; 
	for(row = 0; row < 2; row++) 
	{ 
	 for(col = 0; col < 3; col++) 
	 { 
	 printf(“\nEnter a Number at [%d][%d]: ”, row, col); 
	 scanf(“%d”, &arr[row][col]); 
	 } 
 } 
Elementary Programming with C/Session 7/ Slide 20 of 21 
for(row = 0; row < 2; row++) 
{ 
 for(col = 0; col < 3; col++) 
{ 
printf(“\nThe Number at [%d][%d] is %d”, row, col, arr[row][col]); 
} 
} 
} 
Elementary Programming with C/Session 7/ Slide 21 of 21 
Mảng hai chiều - Ví dụ 
	#include 
	#include 
	void main (){ 
	int i, n = 0; 
	int item; 
	char x[10][12]; 
	char temp[12];	 
	clrscr(); 
	printf(“Enter each string on a separate line\n\n”); 
	printf(“Type ‘END’ when over \n\n”); 
	/* read in the list of strings */ 
	do	{ 
	printf(“String %d : ”, n+1); 
	scanf(“%s”, x[n]); 
	} while (strcmp(x[n++], “END”)); 
	/*reorder the list of strings */ 
	 còn tiếp. 
Elementary Programming with C/Session 7/ Slide 22 of 21 
n = n – 1; 
 for(item=0; item<n-1; ++item) { 
 /* find lowest of remaining strings */ 
	for(i=item+1; i<n; ++i)	{ 
	if(strcmp (x[item], x[i]) > 0){ 
	/*interchange two stings */ 
	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]); 
 } 
} 
Mảng hai chiều - Ví dụ (tt.) 

File đính kèm:

  • pptbai_giang_lap_trinh_co_ban_c_chuong_7_mang.ppt