Buổi 11: Mảng một chiều
🎯 Mục tiêu buổi học
Sau tiết học này, các em sẽ:
- Hiểu được mảng là gì, lý do ta cần sử dụng mảng trong lập trình C
- Nắm được cách khai báo, khởi tạo mảng một chiều trong C
- Biết cách truy cập, cập nhật từng phần tử trong mảng
- Vận dụng mảng để giải các bài toán thực tế như quản lý điểm, lưu danh sách...
📘 Nội dung
1. Khái niệm mảng
Mảng là một tập các biến cùng kiểu, được lưu kế tiếp nhau trong bộ nhớ, giúp lưu trữ nhiều giá trị một lúc mà không cần tạo từng biến lẻ.
Ví dụ thực tế:
- Lưu điểm của cả lớp (30 sinh viên)
- Lưu danh sách sản phẩm trong kho
- Lưu lịch sử mua hàng trong một ứng dụng
2. Khai báo mảng
Khi muốn dùng mảng, ta cần xác định kiểu dữ liệu và kích thước mảng. Cú pháp:
c
int a[10]; // Mảng a gồm 10 phần tử kiểu int
float diem[30]; // Lưu 30 điểm thực (float)Chú ý: Số phần tử là số nguyên dương, chỉ số mảng luôn bắt đầu từ 0.
3. Khởi tạo mảng
Có thể khởi tạo giá trị cho mảng khi khai báo:
c
int b[5] = {1, 2, 3, 4, 5};
int c[] = {10, 20, 30}; // Không ghi kích thước, C tự tính dựa vào số phần tử khởi tạo4. Truy cập phần tử
- Chỉ số đầu tiên là 0 (
mang[0]) - Phần tử cuối cùng là
mang[n-1](n là số phần tử mảng)
💻 Ví dụ
Ví dụ 1: Nhập và xuất mảng số nguyên
c
#include <stdio.h>
int main() {
int n, i;
int a[100];
printf("Nhap so phan tu cua mang: ");
scanf("%d", &n);
// Nhập từng phần tử của mảng
for (i = 0; i < n; i++) {
printf("a[%d] = ", i);
scanf("%d", &a[i]);
}
// Xuất các giá trị vừa nhập
printf("Cac phan tu cua mang: ");
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
return 0;
}Ví dụ 2: Tìm giá trị lớn nhất trong mảng
c
#include <stdio.h>
int main() {
int n, i, max, a[100];
printf("Nhap so phan tu cua mang: ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
max = a[0];
for (i = 1; i < n; i++) {
if (a[i] > max) {
max = a[i];
}
}
printf("So lon nhat trong mang la: %d\n", max);
return 0;
}Ví dụ 3: Tính tổng và trung bình các phần tử
c
#include <stdio.h>
int main() {
int n, i, tong = 0, a[100];
float tbc;
printf("Nhap so phan tu cua mang: ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
tong += a[i];
}
tbc = (float)tong/n;
printf("Tong cac phan tu: %d\n", tong);
printf("Trung binh cong: %.2f\n", tbc);
return 0;
}🧠 Bài tập về nhà
- Viết chương trình nhập mảng n số nguyên, in tổng và trung bình cộng các phần tử.
- Tìm số lớn nhất, nhỏ nhất trong mảng một chiều.
- Đếm số lượng phần tử chẵn và lẻ trong mảng.
- Tìm vị trí của phần tử lớn nhất trong mảng.
- Đảo ngược mảng và in ra kết quả.
Bài tiếp theo: Buổi 12: Mảng hai chiều