Menu
CoddyTech

Ôn tập: đối số con trỏ hàm

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

challenge icon

Thử thách

Dễ

Viết một chương trình C triển khai hàm tìm cả giá trị nhỏ nhất và lớn nhất trong một mảng bằng cách sử dụng các đối số con trỏ. Chương trình của bạn cần:

  1. Tạo một hàm có tên findMinMax nhận bốn tham số:
    • Một mảng số nguyên
    • Kích thước của mảng
    • Một con trỏ đến số nguyên để lưu giá trị nhỏ nhất
    • Một con trỏ đến số nguyên để lưu giá trị lớn nhất
  2. Bên trong hàm findMinMax, duyệt qua mảng để tìm giá trị nhỏ nhất và lớn nhất
  3. Dùng toán tử giải tham chiếu để lưu giá trị nhỏ nhất tại địa chỉ mà con trỏ min trỏ đến
  4. Dùng toán tử giải tham chiếu để lưu giá trị lớn nhất tại địa chỉ mà con trỏ max trỏ đến
  5. Trong hàm main, đọc một số nguyên n biểu thị số phần tử trong mảng
  6. Đọc n giá trị số nguyên và lưu chúng vào một mảng
  7. Khai báo hai biến số nguyên minValue và maxValue để lưu kết quả
  8. Gọi hàm findMinMax, truyền vào mảng, kích thước của mảng và địa chỉ của minValue và maxValue
  9. In kết quả theo định dạng: Minimum: [value] và Maximum: [value]

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

5
12 7 23 4 18

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

Minimum: 4
Maximum: 23

Thử thách này minh họa kỹ thuật mạnh mẽ sử dụng nhiều đối số con trỏ để trả về nhiều giá trị từ một lần gọi hàm, cho phép hàm thay đổi các biến trong phạm vi của hàm gọi.

Tự làm thử

#include <stdio.h>

// TODO: Viết hàm findMinMax tại đây

int main() {
    int n;
    scanf("%d", &n);
    
    int arr[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    
    int minValue, maxValue;
    
    // TODO: Gọi hàm findMinMax tại đây
    
    printf("Minimum: %d\n", minValue);
    printf("Maximum: %d\n", maxValue);
    
    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