Bài tập

6 bài tập về mảng cực hay trong C++ có đáp án

Huy Erick

Mảng là một cấu trúc dữ liệu rất quan trọng và được sử dụng rộng rãi trong ngôn ngữ C++. Để giúp bạn hiểu rõ hơn về mảng, chúng tôi sẽ chia sẻ đến các...

Mảng là một cấu trúc dữ liệu rất quan trọng và được sử dụng rộng rãi trong ngôn ngữ C++. Để giúp bạn hiểu rõ hơn về mảng, chúng tôi sẽ chia sẻ đến các bạn những bài tập về mảng cực hay kèm đáp án chi tiết mà chúng tôi đã tổng hợp và chọn lọc từ nhiều nguồn khác nhau. Trước khi bước vào làm bài tập, hãy chắc rằng bạn đã hiểu được các kiến thức cơ bản về mảng trong C++, nếu chưa thì tham khảo bài viết "Tất tần tật về mảng trong C++" ngay nhé!

Bài tập mảng 1 chiều trong C++

Dưới đây là 4 bài tập về mảng 1 chiều trong C++ cùng với đáp án vô cùng chi tiết sẽ giúp bạn luyện tập về mảng 1 chiều dễ dàng hơn.

1. Tính tổng, tích và giá trị trung bình của một mảng

Đề bài: Nhập vào số lượng phần tử và giá trị từng phần tử của mảng. In ra màn hình tổng, tích và giá trị trung bình của mảng đó.

Đáp án:

#include
using namespace std;

int main() {
    int n;
    cout  "Nhập số lượng phần tử của mảng: ";
    cin >> n;
    int a[n];

    // Nhập các phần tử mảng
    for(int i=0; i "Nhập vào phần tử a["  i  "]: ";
        cin >> a[i];
    }

    long sum=0, product=1;
    double avg;

    // Tính tổng, tích và giá trị trung bình của mảng
    for(int i=0; i "Tổng các phần tử của mảng: "  sum  endl;
    cout  "Tích các phần tử của mảng: "  product  endl;
    cout  "Giá trị trung bình các phần tử của mảng: "  avg  endl;

    return 0;
}

Kết quả thực thi: Nhập số lượng phần tử của mảng: 7 Nhập vào phần tử a[0]: 4 Nhập vào phần tử a[1]: 3 Nhập vào phần tử a[2]: 5 Nhập vào phần tử a[3]: 3 Nhập vào phần tử a[4]: 2 Nhập vào phần tử a[5]: 4 Nhập vào phần tử a[6]: 6 Tổng các phần tử của mảng: 27 Tích các phần tử của mảng: 8640 Giá trị trung bình các phần tử của mảng: 3

2. Tìm giá trị lớn nhất và nhỏ nhất của mảng

Đề bài: Nhập vào số lượng phần tử và giá trị từng phần tử của mảng, in ra màn hình giá trị lớn nhất, nhỏ nhất của mảng vừa nhập.

Đáp án:

#include
using namespace std;

int main() {
    int n;
    cout  "Nhập số lượng phần tử của mảng: ";
    cin >> n;
    int a[n];

    // Nhập các phần tử mảng
    for(int i=0; i "Nhập vào phần tử a["  i  "]: ";
        cin >> a[i];
    }

    int min=a[0], max=a[0];

    // Tìm giá trị lớn nhất và nhỏ nhất của mảng
    for(int i=1; imax) max=a[i];
        if(a[i] "Giá trị lớn nhất của mảng là: "  max  endl;
    cout  "Giá trị nhỏ nhất của mảng là: "  min;

    return 0;
}

Kết quả thực thi: Nhập số lượng phần tử của mảng: 5 Nhập vào phần tử a[0]: 3 Nhập vào phần tử a[1]: 5 Nhập vào phần tử a[2]: 7 Nhập vào phần tử a[3]: 6 Nhập vào phần tử a[4]: 3 Giá trị lớn nhất của mảng là: 7 Giá trị nhỏ nhất của mảng là: 3

3. Sắp xếp mảng theo giá trị tăng dần

Đề bài: Nhập vào số phần tử và giá trị từng phần tử của mảng. Sắp xếp mảng trên và in ra màn hình kết quả theo chiều tăng dần.

Đáp án:

#include
using namespace std;

void Swap(int *x, int *y) {
    int temp;
    temp=*x;
    *x=*y;
    *y=temp;
}

int main() {
    int n;
    cout  "Nhập số lượng phần tử của mảng: ";
    cin >> n;
    int a[n];

    // Nhập các phần tử mảng
    for(int i=0; i "Nhập vào phần tử a["  i  "]: ";
        cin >> a[i];
    }

    // Sắp xếp mảng
    for(int i = 0; i  n; i++){
        int min=i,j;
        for(int j = i+1; j = n; j++){
            if(a[j] "Mảng sau khi sắp xếp: ";
    for(int i=0; i a[i]  " ";
    }

    return 0;
}

Kết quả thực thi: Nhập số lượng phần tử của mảng: 5 Nhập vào phần tử a[0]: 6 Nhập vào phần tử a[1]: 5 Nhập vào phần tử a[2]: 3 Nhập vào phần tử a[3]: 4 Nhập vào phần tử a[4]: 2 Mảng sau khi sắp xếp: 2 3 4 5 6

Trong bài này, chúng tôi sử dụng phương pháp sắp xếp chọn. Còn rất nhiều phương pháp sắp xếp mảng khác nữa rất thú vị trong C++ nên nếu các bạn muốn tìm hiểu thêm thì hãy tham khảo ngay bài viết "Tổng hợp các thuật toán sắp xếp trong C/C++" của chúng tôi nhé!

4. Tìm phần tử có tần suất xuất hiện nhiều nhất trong mảng và xuất hiện bao nhiêu lần

Đề bài: Nhập vào số phần tử và giá trị từng phần tử của mảng. Tìm phần tử có tần suất xuất hiện nhiều nhất trong mảng và xuất hiện bao nhiêu lần, sau đó in ra màn hình.

Đáp án

#include
using namespace std;

void Swap(int *x, int *y) {
    int temp;
    temp=*x;
    *x=*y;
    *y=temp;
}

int main() {
    int n;
    cout  "Nhập số lượng phần tử của mảng: ";
    cin >> n;
    int a[n];

    // Nhập các phần tử mảng
    for(int i=0; i "Nhập vào phần tử a["  i  "]: ";
        cin >> a[i];
    }

    // Sắp xếp mảng
    for(int i = 0; i  n; i++){
        int min=i,j;
        for(int j = i+1; j = n; j++){
            if(a[j]

Kết quả thực thi: Nhập số lượng phần tử của mảng: 10 Nhập vào phần tử a[0]: 3 Nhập vào phần tử a[1]: 2 Nhập vào phần tử a[2]: 32 Nhập vào phần tử a[3]: 143 Nhập vào phần tử a[4]: 24 Nhập vào phần tử a[5]: 32 Nhập vào phần tử a[6]: 2 Nhập vào phần tử a[7]: 3 Nhập vào phần tử a[8]: 2 Nhập vào phần tử a[9]: 2 Giá trị xuất hiện nhiều nhất là: 2 Xuất hiện 4 lần.

Bài tập mảng 2 chiều trong C++

Dưới đây là 1 bài tập về mảng 2 chiều trong C++ (1 bài cơ bản và 1 bài nâng cao) cùng với đáp án vô cùng chi tiết sẽ giúp bạn luyện tập về mảng 2 chiều dễ dàng hơn.

5. Tính tổng 2 ma trận

Đề bài: Nhập vào kích thước và giá trị của từng ma trận. Kiểm tra xem 2 ma trận có cùng kích thước không và in ra màn hình ma trận tổng của 2 ma trận trên.

Đáp án:

#include 
#include 
using namespace std;

int main() {
    int i, j, matrix1[100][100], matrix2[100][100], matrix3[100][100];
    int row1, col1, row2, col2;

    cout  "Nhập số hàng của matrix1: ";
    cin >> row1;
    cout  "Nhập số cột của matrix1: ";
    cin >> col1;
    cout  "Nhập số hàng của matrix2: ";
    cin >> row2;
    cout  "Nhập số cột của matrix2: ";
    cin >> col2;

    /* Trước khi nhập các phần tử, kiểm tra xem số hàng và số cột
    của hai ma trận có bằng nhau không */
    if (row1 != row2 || col1 != col2) {
        cout  "\nHai ma trận không cùng kích cỡ!";
        exit(0);
    }

    // Nhập các phần tử ma trận 1
    cout  "\nNhập ma trận 1\n";
    for (i = 0; i  row1; i++) {
        for (j = 0; j  col1; j++) {
            cout  "Nhập phần tử matrix1["  i  "]["  j  "]: ";
            cin >> matrix1[i][j];
        }
    }

    // Nhập các phần tử ma trận 2
    cout  "\nNhập ma trận 2\n";
    for (i = 0; i  row2; i++)
        for (j = 0; j  col2; j++) {
            cout  "Nhập phần tử matrix2["  i  "]["  j  "]: ";
            cin >> matrix2[i][j];
        }

    // Cộng hai ma trận
    for (i = 0; i  row1; i++)
        for (j = 0; j  col1; j++) {
            matrix3[i][j] = matrix1[i][j] + matrix2[i][j];
        }

    // Hiển thị ma trận kết quả
    cout  "\nKết quả của phép cộng hai ma trận là: \n";
    for (i = 0; i  row1; i++) {
        for (j = 0; j  col1; j++) {
            cout  setw(4)  matrix3[i][j];
        }
        cout  endl;
    }

    return 0;
}

Kết quả thực thi: Nhập số hàng của matrix1: 3 Nhập số cột của matrix1: 3 Nhập số hàng của matrix2: 3 Nhập số cột của matrix2: 3

Nhập ma trận 1 Nhập phần tử matrix1[0][0]: 2 Nhập phần tử matrix1[0][1]: 1 Nhập phần tử matrix1[0][2]: 2 Nhập phần tử matrix1[1][0]: 3 Nhập phần tử matrix1[1][1]: 4 Nhập phần tử matrix1[1][2]: 5 Nhập phần tử matrix1[2][0]: 4 Nhập phần tử matrix1[2][1]: 2 Nhập phần tử matrix1[2][2]: 0

Nhập ma trận 2 Nhập phần tử matrix2[0][0]: 2 Nhập phần tử matrix2[0][1]: 4 Nhập phần tử matrix2[0][2]: 5 Nhập phần tử matrix2[1][0]: 3 Nhập phần tử matrix2[1][1]: 4 Nhập phần tử matrix2[1][2]: 5 Nhập phần tử matrix2[2][0]: 3 Nhập phần tử matrix2[2][1]: 4 Nhập phần tử matrix2[2][2]: 5

Kết quả của phép cộng hai ma trận là: 4 5 7 6 8 10 7 6 5

6. Tính định thức của ma trận

Đề bài: Nhập vào kích thước và giá trị các phần tử của ma trận. In ra màn hình định thức của ma trận vừa nhập.

Đáp án:

#include 
#include 
using namespace std;

void doidong (double a[10][10], int n, int x ,int y){
    int i;
    for(int i=1 ; i=n ; i++){
        double t=a[x][i];
        a[x][i]=a[y][i];
        a[y][i]=t;
    }
}

void tinhdt(double a[10][10],int n){
    double dt=1;
    int dem=0;
    int i,j,k;
    for (int i=1; i"Định thức của ma trận là: "  dt;
}

int main() {
    double a[10][10];
    int n;
    cout  "Nhập cấp của ma trận: ";
    cin >> n;

    cout"\nNhập ma trận\n";
    for (int i = 1; i = n; i++) {
        for (int j = 1; j = n; j++) {
            cout"Nhập phần tử a[""][""]: ";
            cin >> a[i][j];
        }
    }

    tinhdt(a,n);
    return 0;
}

Kết quả thực thi: Nhập cấp của ma trận: 2

Nhập ma trận Nhập phần tử a[1][1]: 1 Nhập phần tử a[1][2]: 2 Nhập phần tử a[2][1]: 3 Nhập phần tử a[2][2]: 4

Định thức của ma trận là: -2

Hy vọng những bài tập này sẽ giúp bạn thành thạo hơn về sử dụng mảng trong C++! Nếu thấy bài viết này của chúng tôi hay và bổ ích thì hãy chia sẻ nó đến với bạn bè của mình để ủng hộ cho chúng tôi và giúp chúng tôi ngày càng phát triển hơn nhé! Chúc các bạn thành công!

1