M ngảM ngả

ươ

Ch

ng 7

ụ ụ

ọ ủ M c tiêu c a bài h c ọ ủ M c tiêu c a bài h c

ả ỉ ố  c a m ng và các ch  s

ả ả

ự ỗ

ể ể

Elementary Programming with C/Session 7/ Slide 2 of 21

ả ầ ử ủ  Các ph n t  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

ầ ử ầ ử

ỉ ố ủ ỉ ố ủ

và ch  s  c a   và ch  s  c a

Các ph n t Các ph n t m ngảm ngả

 M i ph n t

c xác đ nh b ng m t s  th  t

ộ ố ứ ự

 S   chi u  c a  m ng  đ

ố ấ ừ

ế

ị ầ ử ượ  đ ấ ỉ ố (còn g i là ch  s ) duy nh t trong m ng ằ ị ượ ả c  xác  đ nh  b ng  s   các  ể ị t  đ   đ nh  danh  duy  nh t  t ng

ộ ố

ươ

ọ ề ố ỉ ố ầ ch   s   c n  thi ph n tầ ử ỉ ố

 Ch  s  là m t s  nguyên d

ng trong [ ] đ t ngay

sau tên m ngả ỉ ố ủ

ượ ắ ầ

c b t đ u là 0

ả  Ch  s  c a m ng (trong C) đ ầ ử : ớ  M ng ả

player v i 11 ph n t

player[0], player[1], player[2],…. player[10]

Elementary Programming with C/Session 7/ Slide 3 of 21

Khai báo m ngả 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   ể ữ ệ ủ

ầ ử ị

ầ ử ầ

đ u tiên

ộ ằ

ướ

ệ ả      m t h ng s

Ki u d  li u c a các ph n t Tên m ngả       Kích th

ạ đ i di n cho v  trí ph n t c m ng

Elementary Programming with C/Session 7/ Slide 4 of 21

ả ả

Khai báo m ng (tt.) Khai báo m ng (tt.)

ư

ả ỉ

ế

ượ ể

ặ ấ ướ ủ

ề ặ c c a m ng.

Khai  báo  m ng  gi ng  nh   cách  khai  c  báo  bi n.  Ch   khác  là  tên  m ng  đ ộ 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 int player[11];

Elementary Programming with C/Session 7/ Slide 5 of 21

Các qui t cắ Các qui t cắ

ầ ử ủ

 Các ph n t

ữ  c a m ng có cùng ki u d

 M i ph n t

c a m ng có th  đ

ể ượ ử c s

d ng nh  m t bi n riêng l

li uệ ỗ ụ ể

ế ủ  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 6 of 21

ả ả

ả Qu n lý m ng trong C  ả Qu n lý m ng trong C

c

ố ượ “đ i  x ”   Trong  ngôn  ng   C,  m ng  đ ế

ả ớ

ữ 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 đ

ươ ng đ ả

ươ ộ

ướ ng nhau ộ

c xem là t ế ự  Không th  gán tr c ti p m t m ng cho m t

 Không  th   gán  tr   cho  toàn  b   m ng,  mà

ể m ng khác. ể ị

ộ ầ ử ủ

ả ả

ph i gán tr  cho t ng ph n t

c a m ng

Elementary Programming with C/Session 7/ Slide 7 of 21

ả ả

ả ả

Qu n lý m ng trong C (tt) Qu n lý m ng trong C (tt)

/*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

printf(“\n Enter value: %d : ”, i+1); scanf(“%d”,&ary[i]);

}

Elementary Programming with C/Session 7/ Slide 8 of 21

ả ả

ả ả

Qu n lý m ng trong C (tt) Qu n lý m ng trong C (tt)

/* 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); }

Elementary Programming with C/Session 7/ Slide 9 of 21

ở ạ ở ạ

ả ả

Kh i t o m ng Kh i t o m ng

ầ ử ủ

ầ ượ

ả  c a m t m ng auto c n đ

ở ạ c kh i t o

 M i ph n t riêng r .ẽ

ượ

c gán giá

ụ  Trong ví d  sau các ph n t

c a m ng đ ặ for

ầ ử ủ ử ụ ị ằ tr  b ng cách s  d ng vòng l p  #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 10 of 21

ở ạ ở ạ

ả ả

Kh i t o m ng (tt) Kh i t o m ng (tt)

ườ

 Trong tr

ng h p m ng extern và

c t

đ

đ ng kh i

ả ầ ử ượ ự ộ ị

ợ static, các ph n t ạ t o v i giá tr  0

Elementary Programming with C/Session 7/ Slide 11 of 21

ỗ ỗ

ả Chu i/M ng ký t ả Chu i/M ng ký t

ự   ự

ể ượ ư ộ ỗ

ế ằ ể ị c đ nh nghĩa nh  là m t  ự ượ , đ c k t thúc b ng ký

ộ ế  trong chu i chi m m t byte và

 Chu i có th  đ ả m ng ki u ký t ự  null t ự ỗ  M i ký t ự ố ký t  Ví d :ụ

Elementary Programming with C/Session 7/ Slide 12 of 21

ủ ỗ ỗ  cu i cùng c a chu i là “\0” (null)

ỗ ỗ

ự ự

ả Chu i/M ng ký t ả Chu i/M ng ký t

ụ  (ví d ) ụ  (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 13 of 21

ỗ ỗ

ự ự

ả Chu i/M ng ký t ả Chu i/M ng ký t

(tt)   (tt)

ng trình:

ươ ạ Ch y ch Enter string:

ế ữ ệ ươ N u d  li u nh p là “appl”, output c a  ch ậ ng trình là:

The string is appl

Elementary Programming with C/Session 7/ Slide 14 of 21

97 112 112 108 0

ỗ ử Các hàm x  lý chu i ỗ ử Các hàm x  lý chu i

c tìm th y

ử  Các hàm x  lý chu i đ ư ệ

ỗ ượ ẩ

trong th  vi n chu n 

Elementary Programming with C/Session 7/ Slide 15 of 21

ả ả

ề M ng hai chi u ề M ng hai chi u

ả ườ ấ ề ng

đ

ơ  M ng đa chi u đ n gi n nh t và th ề 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  ả

ố ề  là m ng m t chi u ả ấ ề ầ ử ỗ v i m i ph n t ộ

 V  logic, m t m ng hai chi u trông gi ng  ị l ch trình

ồ ộ ề ử xe l a, g m các dòng

ả ượ ả ớ ề ư ộ ả nh  m t b ng  và các c tộ

Elementary Programming with C/Session 7/ Slide 16 of 21

ề ả  Khai báo m ng hai chi u:                    int temp[4][3];

ở ạ ở ạ

ề ề

ả Kh i t o m ng đa chi u  ả 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};

Elementary Programming with C/Session 7/ Slide 17 of 21

ả ủ ư ế K t qu  c a phép gán trên nh  sau:

ở ạ ở ạ

ề ề

ả ả

Kh i t o m ng đa chi u (tt) Kh i t o m ng đa chi u (tt)

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:

Elementary Programming with C/Session 7/ Slide 18 of 21

ở ạ ở ạ

ề ề

ả ả

Kh i t o m ng đa chi u (tt) Kh i t o m ng đa chi u (tt)

ề ượ

c khai

M t m ng chu i hai chi u đ báo theo cách sau:

char str_ary[25][80];

Elementary Programming with C/Session 7/ Slide 19 of 21

ươ

/* Ch #include  void main() {

int arr[2][3]; int row, col;

ng trình nh p các s  vào m t m ng hai chi u. */ 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]); } } }

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

ả ả

M ng hai chi u ­  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 21 of 21

ả ả

ề Ví d  (tt.) ề

M ng hai chi u ­  M ng hai chi u ­  n = n – 1; for(item=0; item

for(i=item+1; 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]);

} }

Elementary Programming with C/Session 7/ Slide 22 of 21