1. Bài tập tìm số lớn nhất và nhỏ nhất có trong mảng một chiều bằng ngôn ngữ C

Bài tập này chúng ta sẽ sử dụng các kiến thức từ ngôn ngữ lập trình C như: cách nhập xuất cơ bản, cách sử dụng mảng một chiều và cách sử dụng hàm trong ngôn ngữ lập trình C.

Yêu cầu của bài tập đưa ra cho chúng ta là nhập và hiển thị mảng một chiều số nguyên bằng ngôn ngữ C.

2. Lời giải

Đầu tiên để thực hiện bài toán này chúng ta cần có kiến thức cơ bản về ngôn ngữ lập trình C, các cách nhập xuất cơ bản trong C, mảng một chiều trong C và cách sử dụng hàm trong ngôn ngữ lập trình C.

Các bước thực hiện yêu cầu của bài tập tìm số lớn nhất và nhỏ nhất có trong mảng một chiều bằng ngôn ngữ lập trình C như sau:

Bước 1: Ta khai báo một mảng tĩnh số nguyên có 100 ô nhớ int a[100].

Bước 2: Ta khai báo số nguyên int n là số lượng phần tử có trong mảng với điều kiện n>1 hoặc n<100 nếu không thỏa mãn thì yêu cầu nhập lại n.

Bước 3: Ta khỏi tạo hàm void Nhap(int a[], int n) dùng để nhập dữ liệu từ bàn phím cho mảng. Trong hàm ta sử dụng vòng for bắt đầu từ int i =0 và kết thúc khi i<n và mỗi lần i tăng lên một để nhập dữ liệu cho từng phần tử từ a[0] đến a[n-1], trong vòng for thì nhập vào dữ liệu của a[i].

Bước 4: Ta khởi tạo hàm void Xuat(int a[], int n) dùng để hiển thị dữ liệu từ mảng ra màn hình. Trong hàm ta sử dụng vòng for bắt đầu từ int i =0 và kết thúc khi i<n và mỗi lần i tăng lên một để hiển thị dữ liệu của từng phần tử từ a[0] đến a[n-1] ra màn hình, trong vòng for ta dùng if với điều kiện a[i] chia lấy dư cho 2 dư 1 (điều kiện là số lẻ) nếu thỏa mãn thì in a[i] ra màn hình.

Bước 5: Ta khởi tạo hàm void TimMax(int a[], int n) dùng để tìm giá trị lớn nhất có trong mảng. Trong hàm ta khai báo biến int Max = a[0] dùng để gán giá trị lớn nhất của mảng, ta sử dụng vòng for bắt đầu từ int i =0 và kết thúc khi i<n và mỗi lần i tăng lên một để duyệt từng phần tử có trong mảng. Trong vòng lặp for ta dùng if với điều kiện nếu a[i] lớn hơn Max thì ta gán giá trị của Max = a[i]; kết thúc vòng for ta in Max ra màn hình.

Bước 6: Ta khởi tạo hàm void TimMin(int a[], int n) dùng để tìm giá trị lớn nhất có trong mảng. Trong hàm ta khai báo biến int Min = a[0] dùng để gán giá trị lnhỏ nhất của mảng, ta sử dụng vòng for bắt đầu từ int i =0 và kết thúc khi i<n và mỗi lần i tăng lên một để duyệt từng phần tử có trong mảng. Trong vòng lặp for ta dùng if với điều kiện nếu a[i] nhỏ hơn Min thì ta gán giá trị của Min = a[i]; kết thúc vòng for ta in Min ra màn hình.

Bước 7: Trong hàm main ta gọi hàm Nhap(a,n), Xuat(a,n), TimMax(a,n) và TimMin(a,n) rồi chạy chương trình.

Chương trình giải bài tập tìm giá trị lớn nhất và nhỏ nhất của mảng một chiều số nguyên trong C như sau:

#include<stdio.h>
void Nhap(int a[], int n)//ham nhap mang
{
    for(int i=0; i<n ; i++)//vong lap for duyet phan tu trong mang tu 0 den n-1
    {
        //nhap du lieu vao mang
        printf("Nhap a[%d] = ",i);
        scanf("%d", &a[i]);
    }
}
void Xuat(int a[], int n)//ham xuat mang
{
    for(int i=0; i<n ; i++)//vong lap for duyet phan tu trong mang 0 den n-1
    {
        //hien thi cac phan tu trong mang
        printf("%d \t", a[i]);
    }
}
void TimMax(int a[], int n)//ham tim gia tri lon nhat
{
    int Max = a[0]; //khai bao bien Max gan gia tri bang a[0]
    for(int i=0; i<n ; i++)
    {
        if(a[i]>Max)//neu a[i] > Max thi gan gia tri cua Max = a[i]
        {
            Max = a[i];
        }
    }
    printf("\nGia tri lon nhat cua mang la: %d", Max);
}
void TimMin(int a[], int n)//ham tim gia tri nho nhat
{
    int Min = a[0]; //khai bao bien Min gan gia tri bang a[0]
    for(int i=0; i<n ; i++)
    {
        if(a[i]<Min)//neu a[i] < Min thi gan gia tri cua Min = a[i]
        {
            Min = a[i];
        }
    }
    printf("\nGia tri nho nhat cua mang la: %d", Min);
}
int main()
{
    int a[100];// khai bao mang so nguyen co 100 o nho
    int n;//khai bao so nguyen n la so phan tu cua mang
    //Nhap du lieu cua n
    do{
        printf("Nhap so phan tu cua mang:");
        scanf("%d", &n);
        if(n<1 || n>100)
        {
            printf("Nhap lai:");
        }
    }while(n<1 || n>100);//dieu kien neu n<1 hoac n>100 yeu cau nhap lai
    Nhap(a, n);//goi ham nhap mang
    printf("\nCac phan tu co trong mang la:\n");
    Xuat(a,n);// goi ham xuat mang
    TimMax(a,n);//goi ham tim max
    TimMin(a,n);// goi ham tim min
}

Ví dụ tôi nhập mảng có 5 phần tử: 1, 9, 7, 2, 5.

Kết quả:

Nhap so phan tu cua mang:5
Nhap a[0] = 1
Nhap a[1] = 9
Nhap a[2] = 7
Nhap a[3] = 2
Nhap a[4] = 5Cac phan tu co trong mang la:
1 9 7 2 5
Gia tri lon nhat cua mang la: 9
Gia tri nho nhat cua mang la: 1

3. Tổng kết

Sau khi làm bài tập này các bạn cần phải hiểu và nắm được những kiến thức sau:

  • Cách nhập xuất cơ bản trong ngôn ngữ lập trình C.
  • Cách sử dụng hàm trong ngôn ngữ lập trình C.
  • Cách sử dụng mảng một chiều trong ngôn ngữ lập trình C.
  • Cách sử dụng vòng lặp for để duyệt các phần tử trong mảng.