Mảng có thể hiểu là một tập hợp nhiều phần tử có cùng một kiểu giá trị và có chung một tên. Mỗi phần tử mảng có vai trò như một biến và chứa được một giá trị. ❖Mảng cần được khai báo để xác định ⚫ Kiểu mảng ⚫ Tên mảng ⚫ Số chiều và kích thước mỗi chiều ❖Mảng cần được khai báo để xác định ⚫ 1 chiều: một vectơ các phần tử ⚫ Mảng nhiều chiều: một bảng các phần tử
Trang 1MẢNG
Trang 2Mảng
một kiểu giá trị và có chung một tên Mỗi phần tử mảng
cần được khai báo để xác định
⚫ Kiểu mảng
⚫ Tên mảng
⚫ Số chiều và kích thước mỗi chiều
⚫ 1 chiều: một vec-tơ các phần tử
⚫ Mảng nhiều chiều: một bảng các phần tử
2
Trang 3ai[10]; float af[100];
⚫ Ví dụ: ai[2], af[10], …
Trang 5❖ Nhập mảng Mảng
#include<stdio.h>
#include<conio.h>
int main() {
int n, x[100];
printf("Nhap vao so phan tu cua mang:");
scanf("%d",&n);
printf("Nhap vao cac phan tu cua mang:");
for (int i=0;i<n;i++) {
printf("\na[%d]=",i);
scanf("%d",&x[i]);
} getch();
Trang 6for (int i=0;i<n-1;i++) {
printf("\na[%d]=",i);
scanf("%d",&a[i]);
} }
6
Trang 7❖ In mảng Mảng
#include<stdio.h>
#include<conio.h>
void main() {
int n, x[100];
//Đã nhập xong mảng
printf("Mang sau khi nhap la:");
for (int i=0;i<n;i++) printf("%3d",a[i]);
getch();
}
Trang 8int n, x[100];
//Đã nhập mảng printf("Mang sau khi nhap la:");
inmang(x,n);
getch();
} void inmang(int a[],int n) {
for (int i=0;i<n-1;i++) printf("%3d",a[i]);
}
8
Trang 9Mảng
mảng, sau đó tìm phần tử có giá trị nhỏ nhất trong mảng
Trang 10⚫ Khi khai báo mảng có khởi tạo giá trị thì có thể không cần chỉ ra số phần
tử mảng
⚫ Ví dụ
int ai[3] = {2, 4, 5};
▪ Hoặc int ai[] = {2, 4, 5}; /*không khai báo số phần tử mảng*/
10
Mảng
Trang 11❖ Định nghĩa kiểu mới – từ khóa typedef
⚫ Có thể sử dụng từ khóa typedef để định nghĩa các kiểu dữ liệu mới
⚫ Kiểu dữ liệu mới sẽ được sử dụng để khai báo dữ liệu ⚫ Ví dụ
▪ typedef int kieunguyen;
▪ typedef float mangthuc10[10];
Trang 12⚫ Các phần tử trong mảng được bố trí các ô nhớ liên tiếp nhautrên bộ nhớ
▪ Nếu biết được địa chỉ phần tử thứ i sẽ xác định được địa chỉ phần tử thứ i+1
▪ Địa chỉ phần tử đầu tiên là địa chỉ của mảng
⚫ Tên mảng mang địa chỉ của mảng đó
Trang 14⚫ Tiếp tục lượt hai, lấy phần tử thứ hai so sánh với các phần tử tiếp theo, nếu nó lớn hơn thì đổi chỗ giá trị của phần tử thứ hai với phần
tử đang so sánh
⚫ Việc này được tiến hành cho đến khi ta gặp phần tử cuối cùng 15
Trang 15Mảng
hình Sắp xếp dãy số tăng đần và in ra màn hình dãy vừa sắp xếp
Trang 16Mảng
▪ Tìm kiếm tuần tự
▪ Tìm kiếm nhị phân
17
Trang 17clrscr();
int n, x[100],m,k;
printf("Nhap vao so phan tu cua mang:");scanf("%d",&n);
printf("Nhap vao cac phan tu cua mang:");nhapmang(x,n);
printf(" \n Nhap so k = "); scanf(" %d ",&k);
timkiem(x,n,k);
getch();
} void timkiem(int a[], int n,int k) {
int i;
i = 0;
while ((i<n) && (a[i]!=k)) i++;
Trang 20} }
Trang 2121