Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Viết chương trình C tìm số lớn nhất và nhỏ nhất trong một dãy số

Mô tả bài toán

Chương trình yêu cầu người dùng nhập 4 số nguyên từ bàn phím, sau đó tìm ra số nhỏ nhất và số lớn nhất trong 4 số đó.

Giải pháp

Để tìm số lớn nhất và nhỏ nhất, ta sử dụng các câu lệnh điều kiện if-else. Logic cơ bản là so sánh lần lượt từng số với giá trị hiện tại của min và max:

  • Khởi tạo min và max bằng số đầu tiên
  • So sánh từng số tiếp theo: nếu nhỏ hơn min thì cập nhật min; nếu lớn hơn max thì cập nhật max

Chương trình 1: Tìm min/max của 4 số cố định

#include <stdio.h>

int main() {
    int min, max, p, q, r, s;
    
    printf("Nhap 4 so nguyen: ");
    scanf("%d %d %d %d", &p, &q, &r, &s);
    
    min = max = p;  // Khởi tạo min và max bằng số đầu tiên
    
    // So sánh với số thứ 2
    if (min > q) min = q;
    else if (max < q) max = q;
    
    // So sánh với số thứ 3
    if (min > r) min = r;
    else if (max < r) max = r;
    
    // So sánh với số thứ 4
    if (min > s) min = s;
    else if (max < s) max = s;
    
    printf("So lon nhat: %d\n", max);
    printf("So nho nhat: %d\n", min);
    
    return 0;
}

Kết quả chạy chương trình

Nhap 4 so nguyen: 34 78 23 12
So lon nhat: 78
So nho nhat: 12

Chương trình 2: Tìm min/max trong mảng (linh hoạt hơn)

Chương trình này cho phép nhập số lượng phần tử tùy ý và tìm min/max trong mảng:

#include <stdio.h>

int main() {
    int a[50], i, n, lon, nho;
    
    printf("Nhap so phan tu: ");
    scanf("%d", &n);
    
    printf("Nhap cac phan tu cua mang:\n");
    for (i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    
    lon = nho = a[0];  // Khởi tạo bằng phần tử đầu tiên
    
    for (i = 1; i < n; i++) {
        if (a[i] > lon) lon = a[i];
        if (a[i] < nho) nho = a[i];
    }
    
    printf("Gia tri nho nhat: %d\n", nho);
    printf("Gia tri lon nhat: %d\n", lon);
    
    return 0;
}

Kết quả chạy chương trình 2

Nhap so phan tu: 8
Nhap cac phan tu cua mang:
1 2 6 4 8 9 3 9
Gia tri nho nhat: 1
Gia tri lon nhat: 9

Giải thích

Cách tiếp cận dùng mảng (Chương trình 2) linh hoạt hơn vì không giới hạn số lượng phần tử. Cả hai chương trình đều sử dụng thuật toán duyệt một lần (O(n)) - hiệu quả và dễ hiểu.