Menu
CoddyTech

Ôn tập: Mảng động

Thuộc phần Logic và luồng điều khiển trong hành trình C của Coddy. Bài học 37 trên 63.

challenge icon

Thử thách

Dễ

Viết chương trình C tạo một mảng động dựa trên đầu vào của người dùng, xử lý dữ liệu và thể hiện cách quản lý bộ nhớ đúng cách. Chương trình của bạn cần:

  1. Đọc số nguyên n từ người dùng, đại diện cho số phần tử cần lưu trữ
  2. Dùng malloc() cùng với sizeof() để cấp phát động bộ nhớ cho một mảng gồm n số nguyên
  3. Kiểm tra xem việc cấp phát bộ nhớ có thành công không. Nếu thất bại, in ra Memory allocation failed! và kết thúc chương trình
  4. Nếu cấp phát thành công, in ra Array of size [n] created successfully!
  5. Đọc n giá trị số nguyên từ người dùng và lưu vào mảng đã cấp phát
  6. Tính và in tổng của tất cả phần tử theo định dạng: Sum: [value]
  7. Tìm và in giá trị nhỏ nhất theo định dạng: Minimum: [value]
  8. Đếm số phần tử lớn hơn giá trị trung bình và in theo định dạng: Elements above average: [count]
  9. In tổng bộ nhớ đã sử dụng, tính bằng byte, theo định dạng: Memory used: [bytes] bytes
  10. Dùng free() để giải phóng bộ nhớ
  11. In Memory successfully freed! để xác nhận đã dọn dẹp đúng cách

Nhớ thêm tiêu đề <stdlib.h> để dùng malloc() và free(). Thử thách này kiểm tra toàn diện hiểu biết của bạn về quản lý bộ nhớ động, từ cấp phát, sử dụng cho đến dọn dẹp đúng cách.

Ví dụ, nếu đầu vào là:

5
12 8 15 3 20

Đầu ra của bạn sẽ là:

Array of size 5 created successfully!
Sum: 58
Minimum: 3
Elements above average: 3
Memory used: 20 bytes
Memory successfully freed!

Thử thách toàn diện này minh họa vòng đời đầy đủ của việc quản lý bộ nhớ động, đồng thời thực hiện các thao tác xử lý dữ liệu hữu ích trên mảng đã cấp phát.

Tự làm thử

#include <stdio.h>
#include <stdlib.h>

int main() {
    // Đọc số lượng phần tử
    int n;
    scanf("%d", &n);
    
    // TODO: Viết code của bạn bên dưới
    // 1. Dùng malloc() để cấp phát bộ nhớ cho n số nguyên
    // 2. Kiểm tra việc cấp phát có thành công không
    // 3. Đọc n số nguyên vào mảng
    // 4. Tính tổng, tìm giá trị nhỏ nhất, đếm số phần tử lớn hơn giá trị trung bình
    // 5. In ra kết quả và giải phóng bộ nhớ
    
    return 0;
}

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch C online