Tìm hiểu về hàm max trong C từ A – Z

Hàm max trong C được dùng để tìm giá trị lớn nhất giữa các số có sẵn, cho phép chúng ta dùng với các số nguyên, số thực hoặc các kiểu dữ liệu đều được. Dưới đây, cùng IoTZone tìm hiểu về cách dùng hàm max nhé!

Cách hoạt động của hàm max trong C

Cách hoạt động của hàm max khá đơn giản. Giả sử trong một dạy số, max (giá trị lớn nhất) là số đầu tiên, thì chúng ta sẽ lần lượt so sánh những số còn lại với con số max. Có 2 trường hợp xảy ra:

  • Số còn lại lớn hơn max: Đổi max thành số đó
  • Số còn lại nhỏ hơn max: Giữ nguyên giá trị max

Hàm max trong C sẽ liên tục kiểm tra như vậy, cho đến khi kiểm tra hết tất cả các con số trong một mảng được chọn.

Cách hoạt động của hàm max trong C
Cách hoạt động của hàm max trong C

Ví dụ: Mình cần tìm giá trị lớn nhất trong một mảng các số nguyên như sau:

int array[] = {4, 0, 6, 3, 9};

Khi đó, hàm max sẽ hoạt động như sau:

  1. Lưu giá trị max là 4 (số đầu tiên trong mảng).
  2. Lần lượt so sánh từng con số đằng sau với giá trị max (giá trị 4) đã lưu:
  • Số 0 nhỏ hơn 4 => Giữ nguyên max = 4
  • Số 6 lớn hơn 4 => Cho max là 6
  • Số 3 nhỏ hơn 6 => Giữ nguyên max = 6
  • Số 9 lớn hơn 6 => Cho max là 9

Phần tử số 9 là phần tử cuối cùng, nên hàm max trong c sẽ kết thúc tại đây. Chúng ta thu được kết quả giá trị lớn nhất trong dãy số trên là số 9.

Cách dùng hàm max trong C

Dưới đây là đoạn code mẫu để bạn tìm giá trị lớn nhất trong C:

#include <assert.h>
int maxElement(const int* array, size_t size){
    assert(array != NULL);
    assert(size >= 1);

    //Chọn max là giá trị đầu tiên trong mảng.
    int max = array[0];

    /*So sánh giá trị max ban đầu với từng phần tử đằng sau trong mảng để tìm giá trị lớn nhất*/
    for (size_t i = 1; i < size; ++i) {
        if (max < array[i]) { //Thay đổi giá trị max nếu phần tử đằng sau lớn hơn giá trị max
            max = array[i];
        }
    }
    return max;
}

Tương tự như trên, chúng ta có thể ứng dụng viết hàm min trong C (tìm giá trị nhỏ nhất) như sau:

#include <assert.h>
int minElement(const int* array, size_t size){
    assert(array != NULL);
    assert(size >= 1);

    //Giả sử số đầu tiên trong mảng là số nhỏ nhất
    int min = array[0];

    /*So sánh giá trị min ban đầu với từng phần tử đằng sau trong mảng để tìm giá trị lớn nhất*/
    for (size_t i = 1; i < size; ++i) {
        if (min > array[i]) { //Thay đổi giá trị min nếu phần tử đằng sau nhỏ hơn giá trị min
            min = array[i];
        }
    }
    return min;
}

Một số câu hỏi về hàm max

1. Cú pháp viết hàm max trong C là gì?

  • Cú pháp: max(a, b), trong đó a và b là hai giá trị được so sánh để tìm ra giá trị lớn nhất

2. Có thể dùng hàm max với các kiểu dữ liệu nào?

  • Các kiểu dữ liệu có thể so sánh với nhau bằng toán tử lớn hơn (>) hoặc bé hơn (<) đều có thể dùng với hàm max

3. Kết quả trả về của hàm max là gì?

  • Hàm max trả về giá trị của kiểu dữ liệu mà bạn đang so sánh. Ví dụ, nếu bạn dùng kiểu dữ liệu số nguyên (int), thì kết quả của hàm max cũng sẽ là int

4. Có cú pháp nào để so sánh và tìm giá trị của 3 phân tử không?

  • Có, bạn có thể sử dụng 2 hàm max lồng với nhau, cụ thể: max(a, max(b, c))

5. Có thể dùng hàm max với các mảng khác trong C không?

  • Câu trả lời là không.

>> Xem thêm: Cách dùng hàm lũy thừa trong C để tính toán

Cách tìm giá trị lớn nhất trong dãy bằng thuật toán sắp xếp

Ngoài hàm max trong C, bạn cũng có thể sử dụng thuật toán sắp xếp tăng dần hoặc là giảm dần để tìm ra các giá trị lớn nhất, nhỏ nhất mà mình muốn.

Dưới đây là đoạn code minh hoạ:

#include <stdio.h>
#include <stdlib.h>
#define SIZE_OF_ARRAY(array) (sizeof(array)/sizeof(array[0]))

/*Tạo hàm so sánh*/
int compareIntDesc(const void* a, const void* b){
    int aNum = *(int*)a;
    int bNum = *(int*)b;

    return bNum - aNum;
}

int main(void){
    int array[] = {5, 4, 7, 2, 8, 7, 3};
    int length= SIZE_OF_ARRAY(array);

    /*Sắp xếp giá trị trong mảng theo thứ tự giảm dần*/
    qsort(array, length, sizeof(int), compareIntDesc);


    /*Gán max là phần tử ở vị trí đầu tiên, min là phần tử ở vị trí cuối cùng*/
    printf("max= %d\n", array[0]);
    printf("min= %d\n", array[length-1]);

    return 0;
}

Một số lỗi khi dùng hàm max trong C và cách giải quyết

  • Lỗi cú pháp: Nếu không dùng đúng cú pháp max(a, b) thì hàm max sẽ trả về lỗi. Ví dụ: max(4) sẽ trả về lỗi, vì thiếu một đối số so sánh
  • Lỗi dữ liệu: Hàm max chỉ hoạt động với các giá trị số có thể so sánh bằng dấu lớn hơn (>) hoặc bé hơn (<). Nếu bạn cung cấp cho hàm max một giá trị không phải là số, hàm sẽ trả về lỗi “invalid argument”. Ví dụ, nếu bạn cung cấp cho hàm max một chuỗi ký tự, hàm sẽ trả về lỗi này.
  • Lỗi tham số: Hàm max sẽ bỏ qua các đối số không phải là giá trị số, không thể so sánh được. Nếu bạn cung cấp cho hàm max một mảng chứa các giá trị là số và không phải là số, hàm sẽ bỏ qua các giá trị không phải số và so sánh các số còn lại như thường.

Lời kết

Trên đây là các kiến thức chi tiết về hàm max trong C. Đây là hàm cơ bản, thường dùng để giải quyết các vấn đề liên quan đến toán học. Chúc các bạn thành công và ứng dụng được hàm này vào các ứng dụng của mình dễ dàng.

IoTZone – Chuyên cung cấp thiết bị điện tử & tài liệu cho Makers

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *