Menu
CoddyTech

Ôn tập: duyệt mảng bằng con trỏ

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 11 trên 63.

challenge icon

Thử thách

Dễ

Viết một chương trình C có hàm tính tổng tất cả phần tử trong một mảng số nguyên bằng phép toán con trỏ và tính tương đương giữa mảng với con trỏ. Chương trình cần:

  1. Tạo hàm tên là calculateSum nhận hai tham số:
    • Một con trỏ đến số nguyên (int *arr) đại diện cho mảng
    • Một số nguyên (size) đại diện cho số phần tử trong mảng
  2. Bên trong hàm calculateSum:
    • Khởi tạo biến sum bằng 0
    • Tạo biến con trỏ ptr và đặt nó trỏ đến đầu mảng
    • Dùng vòng lặp để duyệt mảng bằng phép toán con trỏ
    • Ở mỗi lần lặp, cộng giá trị mà ptr trỏ đến vào sum
    • Tăng con trỏ để chuyển đến phần tử tiếp theo
    • Trả về tổng đã tính
  3. Trong hàm main:
    • Đọc một số nguyên n đại diện cho kích thước của mảng
    • Khai báo một mảng số nguyên có kích thước n
    • Đọc n số nguyên từ đầu vào để điền vào mảng
    • Gọi hàm calculateSum với mảng và kích thước của mảng
    • In kết quả theo định dạng: "Sum: [value]"

Hàm phải dùng phép toán con trỏ để duyệt mảng, không dùng cú pháp chỉ số mảng như arr[i]. Thay vào đó, hãy dùng phép giải tham chiếu con trỏ và các thao tác tăng con trỏ để truy cập phần tử mảng.

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

5
10 20 30 40 50

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

Sum: 150

Thử thách này kiểm tra mức độ hiểu của bạn về cách hàm nhận mảng làm tham số con trỏ, cách dùng phép toán con trỏ để duyệt mảng hiệu quả và cách tên mảng tự động chuyển thành con trỏ khi được truyền vào hàm.

Tự làm thử

#include <stdio.h>

// TODO: Viết hàm (function) calculateSum tại đây

int main() {
    int n;
    scanf("%d", &n);
    
    int arr[n];
    
    // Đọc các phần tử của mảng (array)
    for(int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    
    // TODO: Gọi hàm calculateSum và lưu kết quả
    
    // TODO: In kết quả theo định dạng "Sum: [value]"
    
    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