LATEST

Bài tập mảng trong C / C++

Trong bài viết này, codehow sẽ hướng dẫn các bạn giải một số bài tập mảng trong C / C++. Ở các bài trước chúng ta đã tìm hiểu về cách khai báo, khởi tạo và truy xuất các phần tử trong mảng, các bạn có thể xem lại nhé.

Để có thể vận dụng được mảng trong C / C++, chúng ta cần luyện tập thật nhiều với các bài tập cụ thể. Hãy bắt đầu cùng mình ngay bây giờ thôi nào !!!

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

Dưới đây là 3 bài tập về mảng một chiều trong C / C++, mình đã giải nó rất chi tiết bằng hai ngôn ngữ là C và C++, các bạn có thể tham khảo nhé.

Bài tập mảng một chiều trong C / C++ thứ nhất

Đề bài: Tính tổng và tích giá trị của các phần tử trong mảng một chiều. Số phần tử do người dùng nhập (điều kiện lớn hơn 0), nếu bé hơn hoặc bằng 0 thì yêu cầu nhập lại. Người dùng sẽ nhập giá trị cho các phần tử sau đó hiển thị ra màn hinh.

Gợi ý:

  • Khai báo biến n là độ dài của mảng, yêu cầu người dùng vào số n này. Sử dụng vòng lặp do...while để tạo điều kiện n > 0.
  • Sử dụng vòng lặp for lặp từ 0 đến n - 1, trong vòng lặp ta sẽ nhập giá trị cho từng phần tử trong mảng.
  • Sử dụng vòng lặp for lặp từng phần tử trong mảng để tính tổng và tích.
  • Hiển thị kết quả ra màn hình.

Chương trình C:

#include <stdio.h>

int main(void) {
  int n;
    do{
      printf("Nhập vào số lượng phần tử của mảng: ");
      scanf("%d", &n);
      if(n <= 0) printf("Vui lòng nhập số lượng phần tử lớn hơn 0!!!\n");
    }while(n <= 0);
    
    int a[n];
    //nhập các phần tử mảng
    for(int i=0; i<n; i++){
         printf("Nhập vào phần tử a[%d]: ",i);
         scanf("%d",&a[i]);
    }
   
    int tong=0, tich=1;
    double tb;

    for(int i=0; i<n; i++){
        tong+=a[i];
        tich*=a[i];
    }
    tb = (double)tong/n;

    printf("Tổng các phần tử trong mảng: %d\n",tong);
    printf("Tổng các phần tử trong mảng: %d\n",tich);
    printf("Giá trị trung bình cac phần tử trong mảng: %0.2f",tb);

    printf("\n----------------------------\n");
    printf("Chương trình này được đăng tại codehow.net");
    return 0;
}

Kết quả:

bai26 02 png

Chương trình C++:

#include<iostream>
using namespace std;

int main()
{
    int n;
    do{
      cout << "Nhập vào số lượng phần tử của mảng: ";
      cin >> n;
      if(n <= 0) cout<<"Vui lòng nhập số lượng phần tử lớn hơn 0!!!\n";
    }while(n <= 0);
    
    int a[n];
    //nhập các phần tử mảng
    for(int i=0; i<n; i++){
         cout << "Nhập vào phần tử a[" << i << "]: ";
         cin >> a[i];
    }
   
    long tong=0, tich=1;
    double tb;

    for(int i=0; i<n; i++){
        tong+=a[i];
        tich*=a[i];
    }
    tb = (double)tong/n;

    cout << "Tổng các phần tử trong mảng: " << tong << endl;
    cout << "Tích các phần tử trong mảng: " << tich << endl;
    cout << "Giá trị trung bình cac phần tử trong mảng: " << tb << endl;

    cout<<"\n----------------------------\n";
    cout<<"Chương trình này được đăng tại codehow.net";
    return 0;
}

Kết quả:

bai26 01 png

Bài tập mảng một chiều trong C / C++ thứ hai

Đề bài: Tìm và hiển thị giá trị lớn nhất, nhỏ nhất trong mảng. Số phần từ và giá trị của các phần tử do người dùng nhập.

Gợi ý:

  • Sử dụng vòng lặp do...while để yêu cầu người dùng nhập vào số phần tử n lớn hơn 0. Nếu nhập bé hơn hoặc bằng 0 thì yêu cầu nhập lại.
  • Sử dụng vòng lặp for để nhập giá trị cho từng phần tử trong mảng.
  • Sử dụng vòng lặp for lặp từng phần tử trong mảng để tìm ra giá trị lớn nhất và nhỏ nhất trong mảng.
  • Hiển thị phần tử lớn nhất và nhỏ nhất ra màn hình.

Chương trình C:

#include <stdio.h>

int main(void) {
  int n;
    do{
      printf("Nhập vào số lượng phần tử của mảng: ");
      scanf("%d", &n);
      if(n <= 0) printf("Vui lòng nhập số lượng phần tử lớn hơn 0!!!\n");
    }while(n <= 0);
    
    int a[n];
    //nhập các phần tử mảng
    for(int i=0; i<n; i++){
         printf("Nhập vào phần tử a[%d]: ",i);
         scanf("%d",&a[i]);
    }
   
    //khởi tạo 2 biến min max có giá trị ban đầu là a[0]
    int min=a[0], max=a[0];
   
    //Tìm min max
    for(int i=1; i<n; i++){
        if(a[i]>max) max=a[i];
        if(a[i]<min) min=a[i];
    }

    printf("Giá trị lớn nhất trong mảng là: %d\n",max);
    printf("Giá trị nhỏ nhất trong mảng là: %d\n",min);

    printf("\n----------------------------\n");
    printf("Chương trình này được đăng tại codehow.net");
    return 0;
}

Kết quả:

bai26 04 png

Chương trình C++:

#include<iostream>
using namespace std;

int main()
{
    int n;
    do{
      cout << "Nhập vào số lượng phần tử của mảng: ";
      cin >> n;
      if(n <= 0) cout<<"Vui lòng nhập số lượng phần tử lớn hơn 0!!!\n";
    }while(n <= 0);
    
    int a[n];
    //nhap cac phan tu mang
    for(int i=0; i<n; i++){
         cout << "Nhập phần tử a[" << i << "]: ";
         cin >> a[i];
    }
   
    //khởi tạo 2 biến min max có giá trị ban đầu là a[0]
    int min=a[0], max=a[0];
   
    //Tìm min max
    for(int i=1; i<n; i++){
        if(a[i]>max) max=a[i];
        if(a[i]<min) min=a[i];
    }

    cout << "Giá trị lớn nhất trong mảng là: " << max << endl;
    cout << "Giá trị nhỏ nhất trong mảng là: " << min;

    cout<<"\n----------------------------\n";
    cout<<"Chương trình này được đăng tại codehow.net";
    return 0;
}

Kết quả:

bai26 03 png

Bài tập mảng một chiều trong C / C++ thứ ba

Đề bài: Viết chương trình yêu cầu người dùng nhập vào số phần tử và giá trị cho các phần tử trong mảng. Sau đó sắp xếp các phần tử trong mảng theo thứ tự tăng dần và hiển thị kết quả ra màn hình.

Gợi ý:

  • Sử dụng vòng lặp do...while để yêu cầu người dùng nhập vào số lượng phần tử lớn hơn 0, nếu nhỏ hơn hoặc bằng 0 thì yêu cầu nhập lại.
  • Sử dụng vòng lặp for để nhập giá trị cho các các phần tử trong mảng.
  • Sử dụng hai vòng lặp for lông nhau để sắp xếp các giá trị trong mảng theo thứ tự tăng dần.
  • Hiển thị các phần tử trong mảng sau khi đã sắp xếp.

Chương trình C:

#include <stdio.h>

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

int main(void) {
  int n;
    do{
      printf("Nhập vào số lượng phần tử của mảng: ");
      scanf("%d", &n);
      if(n <= 0) printf("Vui lòng nhập số lượng phần tử lớn hơn 0!!!\n");
    }while(n <= 0);
    
    int a[n];
    //nhập các phần tử mảng
    for(int i=0; i<n; i++){
         printf("Nhập vào phần tử a[%d]: ",i);
         scanf("%d",&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]<a[min]) min=j; //tìm vị trí phần tử nhỏ nhất
        }
        Swap(&a[i],&a[min]); // hoán đổi a[min] với a[i]
    }

    //Xuất mảng
    printf("Mảng sau khi sắp xếp là: ");
    for(int i=0; i<n; i++){
         printf("%d ", a[i]);
    }

    printf("\n----------------------------\n");
    printf("Chương trình này được đăng tại codehow.net");
    return 0;
}

Kết quả:

bai26 06 png

Chương trình C++:

#include<iostream>
using namespace std;

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

int main()
{
    int n;
    do{
      cout << "Nhập vào số lượng phần tử của mảng: ";
      cin >> n;
      if(n <= 0) cout<<"Vui lòng nhập số lượng phần tử lớn hơn 0!!!\n";
    }while(n <= 0);
    
    int a[n];
    //nhap cac phan tu mang
    for(int i=0; i<n; i++){
         cout << "Nhập 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]<a[min]) min=j; //tìm vị trí phần tử nhỏ nhất
        }
        Swap(&a[i],&a[min]); // hoán đổi a[min] với a[i]
    }

    //Xuất mảng
    cout<<"Mảng sau khi sắp xếp là: ";
    for(int i=0; i<n; i++){
         cout << a[i] << " ";
    }

    cout<<"\n----------------------------\n";
    cout<<"Chương trình này được đăng tại codehow.net";
    return 0;
}

Kết quả:

bai26 05 png

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

Trong phần này mình sẽ thực hiện một chương trình cộng hai ma trận. Hai ma trận này sẽ do người dùng nhập, nếu số hàng và số cột của hai ma trận không bằng nhau thì yêu cầu nhập lại.

Gợi ý:

  • Yêu cầu người dùng nhập vào số hàng và số cột cho hai ma trận. Sử dụng vòng lặp do...while để kiểm tra xem số hàng và số cột có bằng nhau hay không, nếu không thì yêu cầu nhập lại.
  • Sử dụng vòng lặp for để nhập vào giá trị cho các phần tử trong mảng.
  • Thực hiện cộng hai ma trận và hiển thị kết quả ma trận mới ra màn hình.

Chương trình C:

#include <stdio.h>

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

   do{
     printf("Nhập số hàng của ma trận 1: ");
     scanf("%d", &row1);
     printf("Nhập số cột của ma trận 1: ");
     scanf("%d", &col1);
 
     printf("Nhập số hàng của ma trận 2: ");
     scanf("%d", &row2);
     printf("Nhập số cột của ma trận 2: ");
     scanf("%d", &col2);
     if(row1 != row2 || col1 != col2) printf("vui lòng nhập số hàng và số cột của hai ma trận bằng nhau!!!\n");
   }while(row1 != row2 || col1 != col2);
 
   
 
   //Nhap cac phan tu cua ma tran 1
   printf("----nhập ma trận 1-----\n");
   for (i = 0; i < row1; i++) {
      for (j = 0; j < col1; j++) {
         printf("Nhập phần tử [%d][%d]: ",i,j);
         scanf("%d", &matrix1[i][j]);
      }
   }
 
   //Nhap cac phan tu cua ma tran 2
   printf("----nhập ma trận 1-----\n");
   for (i = 0; i < row2; i++)
      for (j = 0; j < col2; j++) {
         printf("Nhập phần tử [%d][%d]: ",i,j);
         scanf("%d", &matrix2[i][j]);
      }
 
   //cong hai ma tran
   for (i = 0; i < row1; i++)
      for (j = 0; j < col1; j++) {
         matrix3[i][j] = matrix1[i][j] + matrix2[i][j];
      }
 
   //Hien thi ma tran ket qua
   printf("\nMa trận mới sau khi cộng hai ma trận: \n");
   for (i = 0; i < row1; i++) {
      for (j = 0; j < col1; j++) {
         printf("%d\t",matrix3[i][j]);
      }
     printf("\n");
   }

    printf("\n----------------------------\n");
    printf("Chương trình này được đăng tại codehow.net");
    return 0;
}

Kết quả:

bai26 08 png

Chương trình C++:

#include<iostream>
using namespace std;

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

   do{
     cout << "Nhập số hàng của ma trận 1: ";
     cin >> row1;
     cout << "Nhập số cột của ma trận 1: ";
     cin >> col1;
 
     cout << "Nhập số hàng của ma trận 2: ";
     cin >> row2;
     cout << "Nhập số cột của ma trận 2: ";
     cin >> col2;
     if(row1 != row2 || col1 != col2) cout<<"vui lòng nhập số hàng và số cột của hai ma trận bằng nhau!!!\n";
   }while(row1 != row2 || col1 != col2);
 
   
 
   //Nhap cac phan tu cua ma tran 1
   cout<<"----nhập ma trận 1-----\n";
   for (i = 0; i < row1; i++) {
      for (j = 0; j < col1; j++) {
         cout<<"Nhập phần tử ["<<i<<"]["<<j<<"]: ";
         cin >> matrix1[i][j];
      }
   }
 
   //Nhap cac phan tu cua ma tran 2
   cout<<"----nhập ma trận 2-----\n";
   for (i = 0; i < row2; i++)
      for (j = 0; j < col2; j++) {
         cout<<"Nhập phần tử ["<<i<<"]["<<j<<"]: ";
         cin >> matrix2[i][j];
      }
 
   //cong hai ma tran
   for (i = 0; i < row1; i++)
      for (j = 0; j < col1; j++) {
         matrix3[i][j] = matrix1[i][j] + matrix2[i][j];
      }
 
   //Hien thi ma tran ket qua
   cout<<"\nMa trận mới sau khi cộng hai ma trận: \n";
   for (i = 0; i < row1; i++) {
      for (j = 0; j < col1; j++) {
         cout<<"\t"<< matrix3[i][j];
      }
     cout<<endl;
   }

    cout<<"\n----------------------------\n";
    cout<<"Chương trình này được đăng tại codehow.net";
    return 0;
}

Kết quả:

bai26 07 png

Cùng chuyên mục:

Danh sách liên kết (Linked List) là gì? Các loại danh sách liên kết

Danh sách liên kết (Linked List) là gì? Các loại danh sách liên kết

Sử dụng đệ quy để giải bài toán tháp Hà Nội

Sử dụng đệ quy để giải bài toán tháp Hà Nội

Đệ quy tương hỗ (Mutual Recursion) trong C / C++

Đệ quy tương hỗ (Mutual Recursion) trong C / C++

Đệ quy lồng (Nested Recursion) trong C / C++

Đệ quy lồng (Nested Recursion) trong C / C++

Đệ quy đa tuyến (Exponential Recursion) trong C / C++

Đệ quy đa tuyến (Exponential Recursion) trong C / C++

Đệ quy nhị phân (Binary Recursion) trong C / C++

Đệ quy nhị phân (Binary Recursion) trong C / C++

Đệ quy đuôi (Tail Recursion) trong C / C++

Đệ quy đuôi (Tail Recursion) trong C / C++

Đệ quy tuyến tính (Linear Recursion) trong C / C++

Đệ quy tuyến tính (Linear Recursion) trong C / C++

Hàm đệ quy là gì? Các loại hàm đệ quy trong C / C++

Hàm đệ quy là gì? Các loại hàm đệ quy trong C / C++

Thuật toán sắp xếp Quick Sort trong C / C++

Thuật toán sắp xếp Quick Sort trong C / C++

Thuật toán sắp xếp trộn (Merge Sort) trong C / C++

Thuật toán sắp xếp trộn (Merge Sort) trong C / C++

Thuật toán sắp xếp chọn (Selection Sort) trong C / C++

Thuật toán sắp xếp chọn (Selection Sort) trong C / C++

Thuật toán sắp xếp chèn (Insertion Sort) trong C / C++

Thuật toán sắp xếp chèn (Insertion Sort) trong C / C++

Thuật toán sắp xếp nổi bọt (Bubble Sort) trong C / C++

Thuật toán sắp xếp nổi bọt (Bubble Sort) trong C / C++

Thuật toán tìm kiếm nội suy (Interpolation Search) trong C / C++

Thuật toán tìm kiếm nội suy (Interpolation Search) trong C / C++

Thuật toán tìm kiếm nhị phần (Binary Search) trong C / C++

Thuật toán tìm kiếm nhị phần (Binary Search) trong C / C++

Thuật toán tìm kiếm tuyến tính (Linear Search) trong C / C++

Thuật toán tìm kiếm tuyến tính (Linear Search) trong C / C++

Thuật toán kiểm tra năm nhuận trong C / C++

Thuật toán kiểm tra năm nhuận trong C / C++

Thuật toán kiểm tra số chẵn lẻ trong C / C++

Thuật toán kiểm tra số chẵn lẻ trong C / C++

Thuật toán tính lũy thừa trong C / C++

Thuật toán tính lũy thừa trong C / C++

Top