Mảng và chuỗi ký tựNGÔN NGỮ LẬP TRÌNH C Khoa Công nghệ Thông tin... – d phải là 1 hằng số nguyên dương– valuelist có thể có hoặc không... Mảng và chuỗi1D – Một số bài toán trên mảng • Tì
Trang 1Mảng và chuỗi ký tự
NGÔN NGỮ LẬP TRÌNH C
Khoa Công nghệ Thông tin
Trang 2
o0o Mảng và chuỗi
Giới thiệu
• Tất cả các biến ta khai báo và sử dụng
cho đến trước bài này đều là biến đơn
• Vậy làm cách nào để lưu N số, hay lưu
Trang 5– d phải là 1 hằng số nguyên dương
– valuelist có thể có hoặc không
Trang 7• Mỗi phần tử trong mảng được xem như 1 biến
đơn có kiểu tương ứng với kiểu dữ liệu của
mảng
4 7
5 3
6 8
A
Trang 8for(i=0; i<N; i++) {
printf(“Input element %d:”,i);
scanf(“%d”, &a[i]);
}
Trang 10Mảng và chuỗi
1D – Một số bài toán trên mảng
• Tìm max, min của cả mảng
• Tìm kiếm 1 giá trị trong mảng
– Tìm tuyến tính– Tìm nhị phân
Trang 11T F
Trang 13F
Output pos pos=i;
Trang 14if (i>=N)
printf(“Searching failed!”);
Trang 16Exchange min & a[i]
i=i+1;
T
Trang 17} t=a[i]; a[i]=a[pos]; a[pos]=t;
}
//Output a
Trang 18//Output a
Trang 25• Mỗi phần tử được xem như 1 biến đơn,
cùng kiểu với kiểu của mảng
Trang 26int M[20][20], row, col, i, j;
scanf(“%d%d”, &row, &col);
for(i=0; i<row; i++) for(j=0; j<col; j++) {
printf(“Input M[%d,%d]:”,i,j);
scanf(“%d”, &M[i][j]);
}
Trang 27Mảng và chuỗi
2D – Kết quả thực hiện
int M[20][20], row, col, i, j;
for(i=0; i<row; i++){
for(j=0; j<col; j++)
printf(“%5d”,M[i][j]);
printf(“\n”);
}
Trang 28Mảng và chuỗi
Chuỗi ký tự
• Là 1 dãy liên tiếp các ký tự (mảng 1 chiều
với kiểu là kiểu char)
Trang 29char name[50] = “Le Van Tam”;
char s[] = “Today is Thursday”;
char a[] = {‘O’,’k’,’\0’};
Trang 30• Phải đảm bảo ký tự NULL ở cuối chuỗi
nhập và xuất chuỗi
Trang 33trích từ chuỗi lớn, từ vị trí đầu tiên tìm
thấy cho đến hết chuỗi.
Ví dụ :
char s[] = “Hello”;
printf(“%s”,strchr(s, ‘l’));
Trang 36Mảng và chuỗi
Chuỗi ký tự – Chuẩn hóa
• Không có khoảng trắng đầu chuỗi
• Không có khoảng trắng đầu chuỗi
• Có đúng 1 khoảng trắng giữa các từ
• Các giải thuật:
– Kiểm tra 1 chuỗi bất kỳ có phải là chuỗi
chuẩn không– Chuẩn hóa chuỗi (cắt bỏ khoảng trắng
thừa)
Trang 37F F
F
Trang 38for(i=0; i<l; i++)
if (s[i]==32 && s[i+1]==32){