Bài 17
Chu iỗ
M c tiêu: ụ
K t thúc bài h c này, b n có th : ể ế ạ ọ
Gi ả i thích các bi n và h ng ki u chu i ỗ ế ể ằ
Gi ả i thích con tr tr đ n chu i ỗ ỏ ỏ ế
Th c hi n các thao tác nh p/xu t chu i ỗ ự ệ ậ ấ
Gi i thích các hàm thao tác chu i ả ỗ
Mô t
Gi i thích cách th c truy n m ng vào hàm nh tham s ả ư ứ ề ả ố
cách th c s d ng chu i nh các ả ứ ử ụ ư ỗ tham số c a hàm. ủ
Gi i thi u ớ ệ
c cài đ t nh là các m ng ký t k t thúc b i ký t NULL (‘\0’). Bài này s ư ặ ự ế ở ự ẽ Các chu i trong C đ ả th o lu n v công d ng và thao tác trên chu i. ượ ụ ỗ ậ ề ả ỗ
17.1 Các bi n và h ng ki u chu i ỗ ế ể ằ
. Nh các bi n khác, các bi n này ể ư ỗ ế ế c khi s d ng. Ví d khai báo m t bi n chu i: ữ ộ ụ ử ụ ộ ư ỗ ự ế c s d ng đ l u tr m t chu i các ký t ỗ đ Các bi n chu i ượ ử ụ ế c khai báo tr ph i đ ướ ả ượ char str[10];
có th l u t i đa 10 ký t . Gi s str đ str là m t m ng các ký t ả ộ ự ể ư ố ự ả ử ượ c gán m t h ng chu i, ỗ ộ ằ
“WELL DONE”
n m trong d u nháy kép. M i ký t ự ằ ỗ trong m t chu i đ ộ ỗ ượ c c a m ng. Trong b nh , chu i đ c l u tr nh sau: ấ ớ M t ộ h ng chu i ằ l u tr nh là m t ph n t ộ ữ ư ư ỗ là m t dãy các ký t ộ ầ ử ủ ỗ ượ ư ả ộ ự ữ ư
‘D’ ‘W’ ‘E’ ‘L’ ‘L’ ‘ ’ ‘O’ ‘N’ ‘E’ ‘\0’
ự ỗ ể ể ế đ ng thêm vào trong cách bi u di n bên trong c a chu i đ đánh d u ấ c t ượ ự ộ ễ ỗ Vì v y, khi khai báo m t chu i, ph i tăng kích th ộ ậ ủ ầ c c a nó thêm m t ph n ướ ủ ả ỗ ộ
Ký t ‘\0’ (null) đ đi m k t thúc chu i. ể đ ch a kí hi u k t thúc null. t ế ệ ử ể ứ 17.1.1 Con tr tr đ n chu i ỗ ỏ ỏ ế
c l u và truy c p b ng cách s d ng con tr ki u ký t . M t con tr ki u ký t ằ ỏ ể ử ụ ự ỏ ể ộ ự ậ c khai báo nh sau: Chu i có th đ tr đ n m t chu i đ ộ ể ượ ư ỗ ượ ỗ ỏ ế ư
char *pstr = “WELCOME”;
c kh i t o đ tr đ n m t h ng chu i. Con tr ở ạ ộ ằ ổ ể ỏ ể ấ ộ ỏ pstr tr đ n m t chu i khác thì ta không th ỏ pstr có th thay đ i đ tr ể ỗ ỏ ế ộ ỗ pstr là m t con tr đ ỏ ượ ộ đ n b t kì m t chu i nào khác ỗ ế truy xu t đ n chu i ấ ế ể ỏ ế . M c dù khi con tr ặ ượ ữ . c n a ỗ “WELCOME”đ
Chu iỗ
237
17.1.2 Các thao tác nh p xu t chu i ỗ ậ ấ
Nguyen Dinh Phuong
ậ ự ệ ỗ ấ ủ ẩ ậ Các thao tác nh p/xu t (I/O) chu i trong C đ ấ ượ m t ph n c a th vi n nh p/xu t chu n tên ư ệ nh p/xu t chu i ph i có câu l nh khai báo sau ả ầ ấ ộ ậ c th c hi n b ng cách g i các hàm. Các hàm này là ọ ằ stdio.h. M t ch ng trình mu n s d ng các hàm ố ử ụ đ u ch ở ầ ộ ươ ng trình: ươ ệ ỗ
#include
stdio.h s tr thành ệ ượ c biên d ch, thì n i dung c a t p tin ộ ủ ậ ị ẽ ở ng trình có ch a câu l nh này đ ứ ng trình. Khi ch ươ m t ph n c a ch ầ ủ ộ ươ
Các thao tác nh p/xu t chu i đ n gi n ỗ ơ ậ ấ ả
ậ ơ ộ ỗ c nh p vào cho đ n khi nh n phím Enter. Hàm gets() thay th ký t àm gets() là cách đ n gi n nh t đ nh p m t chu i thông qua thi ấ ể s đ ấ ự ẽ ượ ả ế ẩ t b nh p chu n. ậ ế ị k t thúc ự ế ế S d ng h ử ụ Các ký t tr v đ u dòng ‘\n’ b ng ký t ‘\0’. Cú pháp hàm này nh sau: ở ề ầ ậ ằ ự ư
gets(str);
Trong đó str là m t m ng ký t đã đ c khai báo. ả ộ ự ượ
ng t c s d ng đ hi n th m t chu i ra thi , hàm t b xu t chu n. Ký t ươ ể ể ỗ ế ị ấ ẩ ự ố xu ng T ượ ử ụ dòng s k t thúc vi c xu t chu i. Cú pháp hàm nh sau: ấ puts() đ ệ ự ẽ ế ị ộ ư ỗ
puts(str);
đã đ c khai báo và kh i t o. Ch ng trình sau đây nh n vào ượ ở ạ ươ ậ ự Trong đó str là m t m ng ký t ả m t tên và hi n th m t ộ ị ộ thông báo. ể ộ
Ví d 1:ụ
#include
void main() {
char name[20]; /* name is declared as a single dimensional character array */
clrscr(); puts("Enter your name:"); /* Clears the screen */ /* Displays a message */
gets(name); /* Accepts the input */
puts("Hi there: "); puts(name); /* Displays the input */
getch(); }
N u tên Lisa đ c nh p vào, ch ế ượ ậ ươ ng trình trên cho ra k t qu : ả ế
L p trình c b n C
ơ ả
ậ
238
Enter your name: Lisa Hi there: Lisa
Các thao tác N
h pậ chu i có đ nh d ng /X u tấ ỗ ạ ị
ỗ ị ị ể ể ữ ệ ệ ấ ộ ợ ị scanf() và printf() đ nh p và hi n th các giá tr chu i. Các hàm này Có th s đ ng các hàm ậ ể ử ụ ể c dùng đ nh p và hi n th các ki u d li u h n h p trong m t câu l nh duy nh t. Cú pháp đ ỗ ể ể ượ đ nh p m t chu i nh sau: ể ậ ỗ ư ậ ộ
scanf(“%s”, str);
c nh p vào. ộ ậ str là m tộ Trong đó ký hi u đ nh d ng ệ đã đ m ng ký t ị c khai báo. T ạ %s cho bi ng t ươ ượ t r ng m t giá tr chu i s đ ị ế ằ ỗ ẽ ượ , đ hi n th chu i, cú pháp s là: ẽ ỗ ự ể ể ự ả ị
printf(“%s”, str);
t r ng m t giá tr chu i s đ ạ %s cho bi ế ằ ỗ ẽ ượ ể ộ ị ị ả str là m tộ ở ạ Hàm printf() có th dùng đ hi n th ra các thông báo c hi n th và ị ể ể ể ị c khai báo và kh i t o. đ nh d ng. tTrong đó ký hi u đ nh d ng ệ đã đ m ng ký t ự mà không c n kí t ầ ượ ự ị ạ
ươ ng trình bên trên đ nh p vào và hi n th m t tên, s d ng hàm scanf() và ể ử ụ ị ộ ể ậ Có th s a đ i ch ể ử ổ printf().
Ví d 2:ụ
#include
void main() {
char name[20]; /* name is declared as a single dimensional character array */
clrscr(); printf("Enter your name: "); /* Clears the screen */ /* Displays a message */
scanf(“%s”, name); /* Accepts the input */
printf("Hi there: %s", name); /* Displays the input */
getch(); }
N u nh p vào tên Brendan , ch ế ậ ươ ng trình trên cho ra k t qu : ả ế
Enter your name: Brendan Hi there: Brendan
17.2 Các hàm v chu i ỗ ề
ỗ ợ ấ ộ ố ể ậ ấ C h tr r t nhi u hàm v chu i. Các hàm này có th tìm th y trong t p tin string.h. M t s thao ỗ ề tác mà các hàm này th c hi n là: ề ệ ự
Chu iỗ
239
ị ộ ị N i chu i ỗ ố So sánh chu iỗ Đ nh v m t ký t trong chu i ỗ ự Sao chép m t chu i sang chu i khác ỗ ỗ ộ
Nguyen Dinh Phuong
Xác đ nhị
chi u dài ề c a ủ chu i.ỗ
17.2.1 Hàm strcat()
Hàm strcat() đ c s d ng đ n i hai chu i vào nhau. Cú pháp hàm là: ượ ử ụ ể ố ỗ
strcat(str1, str2);
c khai báo và kh i t o. ượ ở ạ Hàm này s th c hi n n i c ẽ ự ố hu iỗ ệ trong đó str1 và str2 là hai chu iỗ đã đ str2 vào sau chu i ỗ str1
Ch ng trình sau đây nh n vào h và tên ươ ậ ọ ,n i chúng v i nhau và hi n th ra h tên đ y đ . ầ ủ ể ố ọ ớ ị
Ví d 3:ụ
#include
void main() {
char firstname[15]; char lastname[15];
clrscr();
printf("Enter your first name: "); scanf("%s", firstname);
printf("Enter your last name:"); scanf("%s", lastname);
strcat(firstname, lastname); /* Attaches the contents of lastname at the end of firstname */
printf("%s", firstname); getch(); }
K t qu c a ch ế ươ ượ ư
c minh h a nh sau: ng trình trên đ ả ủ ọ Enter your first name: Carla Enter your last name: Johnson CarlaJohnson
17.2.2 Hàm strcmp()
ằ số (b ng nhau hay không b ng nhau) có th th c hi n b ng cách s d ng các toán ệ ằ ằ ử ụ strcmp() so sánh hai ệ ả ỗ strcmp() ệ quan h . Tuy nhiên, đ so sánh hai chu i kí t ể ả ề ộ ố ể ự , ph i dùng m t hàm. Hàm ộ ự ả ộ ụ ủ ế Vi c so sánh hai t ử chu i v i nhau và tr v m t s nguyên ph thu c vào k t qu so sánh. Cú pháp c a hàm ỗ ớ nh sau: ư strcmp(str1, str2);
trong đó str1 và str2 là hai chu iỗ đã đ ượ c khai báo và kh i t o.Hàm tr v giá tr : ị ở ạ ả ề
L p trình c b n C
ơ ả
ậ
240
Nh h n 0 n u str1 ế 0 n u str1 = str2
L n h n 0 n u str1>str2
ơ ế ớ ng trình sau đây so sánh bi n name1 v i các bi n name2, name3, name4 và hi n th k t qu ị ế ế ế ể ớ ả ươ Ch
c a phép so sánh:
ủ
Ví d 4:ụ #include void main()
{ char name1[15] = "Geena";
char name2[15] = "Dorothy";
char name3[15] = "Shania";
char name4[15] = "Geena";
int i; clrscr(); i = strcmp(name1,name2);
printf("%s compared with %s returned %d\n", name1, name2, i); i=strcmp(name1, name3);
printf("%s compared with %s returned %d\n", name1, name3, i); i=strcmp(name1,name4);
printf("%s compared with %s returned %d\n", name1, name4, i); getch(); } K t qu c a ch ng trình trên đ ế ươ c minh h a nh sau:
ọ ư ượ
ả ủ
Geena compared with Dorothy returned 3
Geena compared with Shania returned -12
Geena compared with Geena returned 0 ụ ự ủ ề ị ả ề
ầ ỗ
ấ ví d trên. Đó là s khác nhau v mã ASCII c a hai kí
ở
ỗ L u ý giá tr tr v trong m i phép so sánh
ư
t
khác nhau đ u tiên tìm th y trong hai chu i.
ự
17.2.3 Hàm strchr() trong m t chu i. Cú pháp hàm là: Hàm strchr() xác đ nh v trí xu t hi n c a m t ký t
ị ệ ủ ấ ộ ị ự ộ ỗ strchr(str, chr); hay chu i. chr là m t bi n ký t ch a giá tr c n tìm. Hàm tr v ả ộ ộ ả ề trong đó str là m t m ng ký t
con tr tr đ n giá tr tìm đ ỗ
ị ầ
trong chu i, ho c NULL n u không tìm ự
c ỏ ỏ ế ự ứ
ế ế
ặ ượ đ u tiên
ầ ỗ ị th yấ . Chu iỗ 241 Ch ng trình sau đây xác đ nh li u ký t ‘a’ có xu t hi n trong tên hai thành ph hay không . ươ ệ ị ự ệ ấ ố Ví d 5:ụ #include void main()
{ char str1[15] = "New York";
char str2[15] = "Washington";
char chr = 'a', *loc; clrscr(); loc = strchr(str1, chr);
/* Checks for the occurrence of the character value held by chr
in the first city name */ if(loc != NULL) printf("%c occurs in %s\n", chr, str1); else printf("%c does not occur in %s\n", chr, str1); loc = strchr(str2, chr);
/* Checks for the occurrence of the character in the second city
name */ if(loc != NULL) printf("%c occurs in %s\n", chr, str2); else printf("%c does not occur in %s\n", chr, str2); getch(); } K t qu c a ch ế ươ ượ ư c minh h a nh sau:
ng trình trên đ
ả ủ
ọ
a does not occur in New York
a occurs in Washington 17.2.4 Hàm strcpy() ộ
nào x lý m t chu i nh là m t đ n v duy nh t. Vì v y, phép gán m t ộ ơ ử ử ấ ậ ộ ỗ ị Trong C không có toán t
giá tr chu i này cho m t chu i khác đòi h i ph i s d ng hàm strcpy(). Cú pháp hàm là:
ộ ư
ả ử ụ ỏ ỗ ỗ ị strcpy(str1, str2); đã đ c khai báo và kh i t o. Hàm sao chép giá tr ự ượ ở ạ ị str2 vào ả trong đó str1 và str2 là hai m ng ký t
str1 và tr v ả ề chu i ỗ str1. ng trình sau đây minh h a vi c s d ng hàm strcpy(). Nó thay đ i tên c a m t khách s n và ệ ử ụ ủ ạ ọ ổ ộ Ch
ươ
hi n th tên m i.
ị
ể ớ Ví d 6:ụ L p trình c b n C ơ ả ậ 242 #include void main()
{ char hotelname1[15] = "Sea View";
char hotelname2[15] = "Sea Breeze"; clrscr(); printf("The old name is %s\n", hotelname1); strcpy(hotelname1, hotelname2);
/*Changes the hotel name*/ printf("The new name is %s\n", hotelname1);
/*Displays the new name*/ getch(); } K t qu c a ch ng trình trên đ ế ươ ượ c minh h a nh sau:
ọ ư ả ủ
The old name is Sea View
The new name is Sea Breeze 17.2.5 Hàm strlen() c s d ng trong các vòng ỗ ấ ả ề ỗ ượ ử ụ Hàm strlen() tr v chi u dài c a chu i. Chi u dài c a chu i r t hay đ
l p truy câp t ng kí t
ặ ủ
ủ
ỗ Cú pháp c a hàm là: ề
c a chu i.
ự ủ ề
ủ ừ strlen(str); trong đó str là m ng ký t đã đ ả ự ượ c khai báo và kh i t o. Hàm tr v
ở ạ ả ề chi u dài ề c a ủ chu i ỗ str. c phân cách nhau b i ký t ‘*’. ể ị ở ự ươ ư ộ
strlen(). Nó tìm chi u dài c a tên m t
ề ủ ng trình sau đây đ a ra ví d đ n gi n s d ng hàm
ụ ơ
ớ ả ử ụ
đ
ự ượ Ch
công ty và hi n th tên công ty đó v i các ký t
Ví d 7:ụ #include void main()
{ char compname[20] = "Microsoft";
int len, ctr; clrscr(); len = strlen(compname);
/* Determines the length of the string */ for(ctr = 0; ctr < len; ctr++)
/* Accesses and displays each character of the string*/ printf("%c * ", compname[ctr]); Chu iỗ 243 getch(); } M * i * c * r * o * s * o * f * t * 17.3 Truy n m ng vào hàm ề ả c truy n vào hàm nh m t ộ ượ ề ả ả ị ỉ ủ
i đây mô t c
ượ
cách ư ộ tham s , thì ch có đ a ch c a m ng đ
ỉ
Đo n mã d
ạ
ị ố
ả ỉ ủ ỉ ố ướ ả ả Trong C, khi m t m ng đ
truy n vào. Tên m ng không kèm theo ch s là đ a ch c a m ng.
truy n đ a ch c a m ng ary cho hàm fn_ary(): ề
ề ị ỉ ủ
ả
void main()
{ int ary[10];
.
.
fn_ary(ary);
.
. } c khai báo theo m t trong ố ủ ả ộ ộ ề thì tham s ố đó có th đ ể ượ ộ N u ế tham s c a hàm là m t m ng m t chi u
các cách sau: fn_ary (int ary [10]) /* sized array */
{ : } ho cặ fn_arry (int ary []) /*unsized array */
{ : } ề ế ả ả ở
ướ ủ trên đ u cho cùng k t qu . Ki u th nh t s d ng cách khai báo m ng chu n,
ẩ
ể int có kích
c c a m ng. Ki u th hai, ch ra r ng tham s là m t m ng ki u ấ ử ụ
ố ứ
ằ ể
ỉ ứ ể ả ả ộ ả
ỉ
ướ ấ
ươ c truy n vào
ề ẽ ượ ả ả ậ ố ố C hai khai báo
ch rõ ra kích th
c b t kì.
th
Ch
ng trình sau đây nh n các s vào m t m ng s nguyên. Sau đó m ng này s đ
hàm sum_arr(). Hàm s tính toán và tr v t ng c a các s nguyên trong m ng. ộ
ả ề ổ ủ ẽ ả ố Ví d 8:ụ #include int num[5], ctr, sum = 0;
int sum_arr(int num_arr[]); /* Function declaration */ clrscr(); for(ctr = 0; ctr < 5; ctr++) /*Accepts numbers into the array*/
{ L p trình c b n C ơ ả ậ 244 printf("\nEnter number %d: ", ctr+1);
scanf("%d", &num[ctr]); } sum = sum_arr(num); /* Invokes the function */ printf("\nThe sum of the array is %d", sum); getch(); } int sum_arr(int num_arr[]) /* Function definition */
{ int i, total; for(i = 0, total = 0; i < 5; i++) /* Calculates the sum */ total += num_arr[i]; return total; /* Returns the sum to main() */ } K t qu c a ch ng trình trên đ ế ượ c minh h a nh sau:
ọ ư ả ủ
ươ
Enter number 1: 5 Enter number 2: 10 Enter number 3: 13 Enter number 4: 26 Enter number 5: 21 The sum of the array is 75 17.4 Truy n chu i vào hàm ỗ ề ươ ụ ậ ể ượ
ự ả ng trình sau đây s nh n vào các
ẽ
c truy n vào trong m t hàm
ẽ ượ ề ộ Chu i, hay m ng ký t
ả
ự
ỗ
chu i và
l u trong
ộ
ư
ỗ
dùng đ ể tìm chu i dài nh t trong m ng , có th đ
m t m ng ký t
ả
ấ c truy n vào hàm. Ví d , ch
ề
hai chi u. Sau đó, m ng này s đ
ề
ả đó. ỗ Ví d 9:ụ #include void main()
{ char lines[5][20];
int ctr, longctr = 0; int longest(char lines_arr[][20]);
/* Function declaration */ clrscr(); for(ctr = 0; ctr < 5; ctr++)
/* Accepts string values into the array */
{ Chu iỗ 245 printf("\nEnter string %d: ", ctr + 1);
scanf("%s", lines[ctr]); } longctr = longest(lines);
/* Passes the array to the function */ printf("\nThe longest string is %s", lines[longctr]); getch(); } int longest(char lines_arr[][20]) /* Function definition */
{ int i = 0, l_ctr = 0, prev_len, new_len; prev_len = strlen(lines_arr[i]);
/* Determines the length of the first element */ for(i++; i < 5; i++)
{ new_len = strlen(lines_arr[i]);
/* Determines the length of the next element */ if(new_len > prev_len)
l_ctr = i; /* Stores the subscript of the longer string */ prev_len = new_len; } return l_ctr;
/* Returns the subscript of the longest string */ } K t qu c a ch ế ươ ượ c minh h a nh sau:
ọ ư ng trình trên đ
ả ủ
Enter string 1: The Enter string 2: Sigma Enter string 3: Protocol Enter string 4: Robert Enter string 5: Ludlum L p trình c b n C ơ ả ậ 246 The longest string is Protocol Tóm t ắ t bài h c
ọ Chu i ỗ trong C đ k t thúc b ng ký t NULL (‘\0’). ượ c cài đ t nh m ng các ký t
ư ả ặ ự ế ằ ự c s d ng đ l u m t dãy các ký t Các bi n chu i đ
ế ỗ ượ ử ụ ể ư ộ .
ự bao b i d u nháy kép. M t h ng chu i là m t dãy các ký t
ỗ ộ ằ ộ ự ở ấ Các thao thác nh p/xu t chu i trong C đ
ậ c l u tr và truy c p b ng cách s d ng các con tr ký t Các chu i có th đ
ỗ ể ượ ư ử ụ ữ ằ ậ ỏ .
ự Hàm gets() và puts() là cách đ n gi n nh t đ nh p vào và hi n th chu i.
ả ấ ỗ ượ ấ
c th c hi n b ng các hàm thu c th vi n nh p/xu t ư ệ ự ệ ằ ậ ộ chu n ẩ stdio.h. Hàm scanf() và printf() có th đ ấ ể ể ậ ơ ỗ ị ể ượ ử ụ ể
c s d ng đ nh p vào và hi n th chu i cùng v i các ki u
ể ể ậ ớ ỗ ị d li u khác.
ữ ệ C h tr r t nhi u hàm v chu i, mà chúng ta có th tìm th y trong
ỗ Hàm strcat() đ th vi n chu n ỗ ợ ấ ề ể ề ấ ư ệ ẩ string.h. Hàm strcmp() so sánh hai chu i và tr v m t s nguyên d a vào k t qu c a phép so sánh.
ả ề ộ ố c s d ng đ n i hai chu i vào m t. ượ ử ụ ể ố ộ ỗ Hàm strchr() xác đ nh v trí xu t hi n c a m t ký t
ị ả ủ ự ế ỗ Hàm strcpy() sao chép n i dung c a m t chu i vào m t chu i khác. ệ ủ ấ ộ ị ự trong m t chu i.
ộ ỗ Hàm strlen() tr v đ dài c a chu i. ủ ộ ộ ỗ ỗ ộ Trong C, khi m t m ng đ ả ề ộ ủ ỗ c truy n vào hàm nh m t ả ộ ượ ư ộ tham s , ch có đ a ch c a m ng đ ỉ ủ ề ả ố ỉ ị ượ
c truy n vào.
ề Chu iỗ 247 Tên m ng không đi kèm v i ch s là đ a ch c a m ng.
ớ ỉ ủ ỉ ố ả ả ị 1. Các chu i đ Ki m tra ti n đ h c t p ế ộ ọ ậ ể 2. S l c k t thúc b i ký t __null________. ỗ ượ ế ở ự 3. S thay đ i ng ký t có th nh p vào char_arr[15] là _14________. ố ượ ự ể ậ 4. Ký t (Đúng / Sai) ổ giá tr c a ị ủ con tr ki u chu i có th d n đ n m t d li u. ấ ữ ệ ỏ ể ể ẫ ự ế ỗ _\n_ đ c s d ng đ sang dòng m i trong printf(). ự ượ ử ụ ể ớ c bao g m trong ch ng trình. 5. Đ s d ng hàm strcat(), t p tin header ________ ph i đ
ậ ể ử ụ ả ượ ồ ươ 6. Hai con tr có th so sánh đ ể ỏ ượ c ch khi c hai bi n đang tr đ n các bi n có ki u khác nhau.
ỏ ế ế ể ế ả ỉ (Đúng / Sai) 7. strcmp() tr v _______ n u hai chu i hoàn toàn gi ng nhau. ả ề ế ỗ ố 8. Khi m t m ng đ
ộ L p trình c b n C ơ ả ậ 248 c truy n. ả ượ c truy n vào m t hàm, ch có __dia chi_____ c a nó đ
ỉ ủ ề ộ ượ ề Bài t p t làm ậ ự 1. Vi ng trình đ nh p vào hai chu i. Ch ậ ỗ ươ ng trình s xác đ nh li u chu i th nh t có
ệ ứ ấ ẽ ỗ ị xu t hi n t m t ch
ể
ộ
ươ
cu i chu i th hai không.
ứ
ệ ở ố ế
ấ ỗ Chu iỗ 249 ng trình nh p vào m t m ng các s và hi n th giá tr trung bình. S d ng hàm t m t ch
ộ ử ụ ể ả ậ ố ộ ị ị 2. Vi
ươ
ế
đ tính giá tr trung bình.
ị
ểNguyen Dinh Phuong
Nguyen Dinh Phuong
K t qu c a ch
ng trình trên đ
ả ủ
ế
ươ
ượ
c minh h a nh sau:
ọ
ư
Nguyen Dinh Phuong
Nguyen Dinh Phuong