Thuật toán trên mảng
Thuộc phần Nền tảng cơ bản trong hành trình C của Coddy. Bài học 59 trên 63.
Các thuật toán mảng là kỹ thuật thiết yếu để thao tác với dữ liệu mảng. Hãy cùng tìm hiểu một số thao tác mảng phổ biến.
Tìm giá trị lớn nhất trong mảng:
// Khởi tạo một mảng
int numbers[] = {4, 9, 2, 7, 5};
// Gán max ban đầu bằng phần tử đầu tiên
int max = numbers[0];// So sánh với các phần tử (elements) khác
for (int i = 1; i < 5; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
}
// Giờ max chứa giá trị lớn nhất (9)Tìm giá trị nhỏ nhất cũng tương tự:
// Gán min ban đầu bằng phần tử đầu tiên
int min = numbers[0];
// So sánh với các phần tử khác
for (int i = 1; i < 5; i++) {
if (numbers[i] < min) {
min = numbers[i];
}
}
// Bây giờ min chứa giá trị nhỏ nhất (2)Tính tổng tất cả phần tử trong mảng:
int sum = 0;
// Cộng từng phần tử (element) vào sum
for (int i = 0; i < 5; i++) {
sum += numbers[i];
}
// Bây giờ sum chứa tổng (27)Thử thách
DễViết một hàm (function) có tên findAverage để tính giá trị trung bình của tất cả phần tử trong một mảng số nguyên.
Hàm cần:
- Nhận một mảng số nguyên và kích thước của mảng làm tham số
- Tính tổng tất cả phần tử
- Chia tổng cho số phần tử để tìm giá trị trung bình
- Trả về giá trị trung bình dưới dạng số thực
Sau khi tính giá trị trung bình, hãy in kết quả với đúng 2 chữ số thập phân bằng cách dùng: printf("Average: %.2f\n", average);
Tự làm thử
#include <stdio.h>
// Viết hàm (function) findAverage tại đây
int main() {
int size;
scanf("%d", &size);
int numbers[size];
// Đọc các phần tử của mảng
for (int i = 0; i < size; i++) {
scanf("%d", &numbers[i]);
}
// Gọi hàm và in kết quả
float average = findAverage(numbers, size);
printf("Average: %.2f\n", average);
return 0;
}
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Nền tảng cơ bản
2Biến
Kiểu dữ liệuSố nguyênSố thực - DoubleKý tựGiá trị BooleanHằng sốCơ bản về printfQuy tắc đặt tên biếnChuyển đổi kiểu phần 1Chuyển đổi kiểu phần 2Thử thách ôn tậpTự luyện tập: Trình biên dịch C online