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 các bạn hiểu rõ hơn về bảng, chúng tôi sẽ chia sẻ đến các bạn những bài tập về bảng rất hay với đá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ắt đầu bài tập, hãy đảm bảo bạn hiểu kiến thức cơ bản về mảng trong C++. Nếu chưa thì hãy tham khảo ngay bài viết All About Arrays in C++ của chúng tôi nhé!
Bài tập mảng 1 chiều trong C++
Dưới đây bạn sẽ tìm thấy 4 bài tập về mảng một chiều trong C++ cùng với đáp án cực kỳ chi tiết sẽ giúp bạn thực hành mảng một chiều dễ dàng hơn.
Tính tổng, tích và giá trị trung bình của một bảng
Đề bài: Nhập số phần tử và giá trị từng phần tử trong mảng. In trên màn hình tổng, tích và giá trị trung bình của bảng này.
Trả lời:
#include<iostream> sử dụng không gian tên std; int main() { int n; cout << "Nhập số thành phần mạng: "; cin >> n; int a[n]; //nhập phần tử mảng for(int i=0; i<n; i++){ cout << "Nhập phần tử của a[" << i << "]: "; cin >> a[i]; } tổng dài=0, tích=1; bệnh lao đôi; for(int i=0; i<n; i++){ Total+=a[i]; đánh dấu*=a[i]; } tb=tong/n; cout << "Tổng số phần tử trường: " << tổng << endl; cout << "Biên dịch các thành phần mạng: " << biên dịch << endl; cout << "Giá trị trung bình của các thành phần của nó: " << tb << endl; trả về 0; }
Kết quả thực hiện:
Nhập số byte mạng: 7 Nhập phân số a[0]: 4 Nhập phân số a[1]: 3 Nhập phân số a[2]: 5 Nhập phân số a[3]: 3 Nhập Nhập phần a [ 4]: 2 Chèn phần a[5]: 4 Chèn phần a[6]: 6 Tổng số phần mạng: 27 Số phần mạng: 8640 Giá trị trung bình của các phần Phần ổ trục: 3
Tìm giá trị lớn nhất và nhỏ nhất của mảng
Đề: Nhập số phần tử và giá trị từng phần tử của mảng, in ra giá trị lớn nhất, nhỏ nhất của mảng vừa nhập.
Trả lời:
#include<iostream> sử dụng không gian tên std; int main() { int n; cout << "Nhập số thành phần mạng: "; cin >> n; int a[n]; //Nhập các phần tử bằng for(int i=0; i<n; i++){ cout << "Nhập các phần tử a[" << i << "]: "; cin >> a[i]; } //khởi tạo 2 biến min max với giá trị ban đầu a[0] int min=a[0], max=a[0]; //Tìm giá trị lớn nhất tối thiểu for(int i=1; i<n; i++){ if(a[i]>max) max=a[i]; if(a[i]<min) min=a[i]; } cout << "Giá trị tối đa của rollover là: " << max << endl; cout << "Giá trị chịu lực tối thiểu là: " << min; }
Kết quả thực hiện :
Nhập số byte mạng: 5 Nhập phân số a[0]: 3 Nhập phân số a[1]: 5 Nhập phân số a[2]: 7 Nhập phân số a[3]: 6 Nhập phân số a [ 4]: 3 Giá trị lớn nhất của ổ trục là: 7 Giá trị nhỏ nhất của ổ trục là: 3
Sắp xếp mảng theo giá trị tăng dần
Đề bài: Nhập số phần tử và giá trị từng phần tử trong mảng. Sắp xếp bảng trên và in kết quả ra màn hình theo thứ tự tăng dần.
Trả lời:
#include<iostream> sử dụng không gian tên std; void Swap(int *x, int *y) { int temp; tạm thời=*x; *x=*y; *y=nhiệt độ; } int main() { int n; cout << "Nhập số thành phần mạng: "; cin >> n; int a[n]; //nhập phần tử mảng for(int i=0; i<n; i++){ cout << "Nhập phần tử của 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í của phần tử nhỏ nhất } Swap(&a[i],&a[min]); // trao đổi a[min] với a[i] } // Xuất mảng for(int i=0; i<n; i++){ cout << a[i] << " "; } }
Kết quả thực hiện:
Nhập số byte mạng: 5 Nhập phân số a[0]: 6 Nhập phân số a[1]: 5 Nhập phân số a[2]: 3 Nhập phân số a[3]: 4 Nhập phân số a [ 4]: 2 2 3 4 5 6
Trong bài viết này chúng tôi sử dụng phương pháp sắp xếp chọn lọc. Còn rất nhiều phương pháp sắp xếp mảng trong C++ rất thú vị khác, vì vậy nếu bạn muốn tìm hiểu thêm, nhớ tham khảo 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é!
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
Chủ đề : Nhập số phần tử và giá trị từng phần tử trong mảng. Tìm phần tử xuất hiện nhiều nhất trong bảng và số lần xuất hiện của nó, sau đó in ra màn hình
Trả lời
#include<iostream> sử dụng không gian tên std; void Swap(int *x, int *y) { int temp; tạm thời=*x; *x=*y; *y=nhiệt độ; } int main() { int n; cout << "Nhập số thành phần mạng: "; cin >> n; int a[n]; //nhập phần tử mảng for(int i=0; i<n; i++){ cout << "Nhập phần tử của 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í của phần tử nhỏ nhất } Swap(&a[i],&a[min]); // hoán đổi a[min] với a[i] } // bắt đầu với 2 chiều để phân tích và định giá trị int mode[n][2]; for(int i=0;i<2;i++) for(int j=0;j<10;j++) mode[j][i]=0; chế độ[0][0]=1; //tìm lời giải cho(int i=0;i<n;i++) for(int j=0;j<n;j++) if(a[i]==a[j+1]) {++mode [i][0];mode[i][1]=a[i];} //tìm số gần đây nhất int max; int k=0; max=mode[0][0]; for(int j=0;j<10;j++) if(max<mode[j][0]){max=mode[j][0];k=j;} //in kết quả cost<<" Giá trị được hiển thị nhiều nhất là: "<<mode[k][1]<<"\n" ; cout<<"Xuất "<<max<<" spread."; }
Kết quả thực hiện:
Nhập số lượng các lĩnh vực trong mạng: 10 Nhập số lượng các lĩnh vực a[0]: 3 Nhập các lĩnh vực a[1]: 2 Nhập các lĩnh vực a[2]: 32 Nhập các lĩnh vực a[3]: 143 Enter Enter phần a[4]: 24 Bấm vào phần a[5]: 32 Bấm vào phần a[6]: 2 Bấm vào phần a[7]: 3 Bấm vào phần a[8]: 2 Bấm Enter phần a[9] : 2 Giá trị hiển thị nhiều nhất là: 2 Hiển thị 4 lần.
Bài tập mảng 2 chiều trong C++
Dưới đây các bạn sẽ tìm thấy 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 cực kỳ chi tiết sẽ giúp bạn thực hành mảng 2 chiều dễ dàng hơn.
Tính tổng 2 ma trận
Chủ đề : Nhập kích thước và giá trị của từng ma trận. Kiểm tra xem 2 ma trận có bằng nhau không và in tổng 2 ma trận trên ra màn hình.
Trả lời:
#include <iostream> #include <iomanip> sử dụng không gian tên std; int main() { int i, j, ma trận1[100] [100], ma trận2 [100] [100], ma trận3 [100] [100]; int row1, col1, row2, col2; cout << "Nhập số hàng của ma trận 1: " ; cin >> hàng1; cout << "Nhập ma trận số 1: " ; cin >> col1; cout << "Nhập số hàng của ma trận2: " ; cin >> row2; cout << "Nhập số ma trận2: " ; cin >> col2; /* * Trước khi nhập phần tử kiểm tra xem hàng và cột * của 2 slice có bằng nhau không */ if (row1 != row2 || col1 != col2) { cout << "\nHai slice Tran không hào hứng "; đầu ra (0); } //Nhập các phần tử của 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ử của ma trận1["<<i<<"]["<< j< < "]: "; cin >> ma trận1[i][j]; } } //Nhập các phần tử của lưới 2 cout<<"\nNhập lưới 2\n"; for (i = 0; i < row2; i++) for (j = 0; j < col2; j++) { cout<<"Nhập phần tử của ma trận2["<<i<<"]["<<j << " ]: " ; cin >> ma trận2[i][j]; } //chuyển đổi hai mat tran for (i = 0; i < row1; i++) for (j = 0; j < col1; j++) { ma trận3[i][j] = ma trận1[i][j] + ma trận2[ tôi[j]; } //Hiển thị kết quả chi phí của hai lát<<"\nKết quả ủy quyền của hai lát là: \n"; for (i = 0; i < row1; i++) { for (j = 0; j < col1; j++) { cout<<"\t"<< ma trận3[i][j]; } cout<<endl; } trả về 0; }
Kết quả thực hiện:
- Kích thước đã nhập không hợp lệ:
Nhập số hàng ma trận 1:4 Nhập số hàng ma trận 1:4 Nhập số hàng ma trận 2:3 Nhập số hàng ma trận 2:3 Hai màn hình không phải là tài sản !
- Nhập kích thước hợp lệ
Nhập số hàng của ma trận 1: 3 Nhập số hàng của ma trận 1: 3 Nhập số hàng của ma trận 2: 3 Nhập số hàng của ma trận 2: 3 Nhập ma trận 1 Nhập ma trận 1[0][0]: 2 Nhập ma trận 1[0] [1]: 1 Nhập phần tử ma trận1[0][2]: 2 Nhập phần tử ma trận1[1][0]: 3 Nhập phần tử ma trận1[1][1]: 4 Nhập phần tử ma trận1[ 1][2]: 5 Nắm chặt mảnh xúc xắc1[2][0]: 4 Nắm chặt mảnh xúc xắc1[2] [1]: 2 Nắm chặt mảnh xúc xắc1[2][2]: 0 Nắm chặt mảnh xúc xắc 2 Nắm chặt mảnh xúc xắc2[0] [0]: 2 Lấy phần tử ma trận2[0] [1]: 4 Nhập phần tử ma trận2[0] [2]: 5 Nhập phần tử ma trận2[1] [0]: 3 Nhập phần tử ma trận2[1] [1]: 4 Nhập phần tử ma trận2[ 1] [2]:5 Nhập phần tử ma trận2[2] [0]:3 Nhập phần tử ma trận2[2] [1]:4 Nhập phần tử ma trận2[2] [2]:5 Kết quả của hai- giấy phép trang là: 4 5 7 6 8 10 7 6 5
Tính định thức của ma trận
Chủ đề: Nhập 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.
Trả lời :
#include <iostream> #include <math.h> sử dụng không gian tên 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 Crystaldt(double a[10][10],int n){ double dt=1; int dem=0 ; int i,j,k; for (int i=1; i<n; i++){ if(a[i][i]==0) { for(int j=i+1; j<=n; j++){ if(a[j ][i]!=0 && j<=n) { doidong(a,n,i,j); dem++ ; phá vỡ; phá vỡ; } else if(a[j][i] == 0 && j==n) { dt=0; đi tới B; } } } for(int j=i+1; j<=n; j++){ double m=-a[j][i]/a[i][i]; for(int k=i; k<=n; k++){ a[j][k]=a[j][k]+a[i][k]*m; } } } for(int i=1; i<=n; i++){ dt*=a[i][i]; } dt*=pow(-1,dem); b: giá <<"Thành phần dinh dưỡng của ma trần là: " << dt; } int main() { double a[10][10]; int n; cout << "Nhập giới hạn màn hình: "; cin >> n; cout<<"\nNhập mã \n"; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { cout<<"Nhập phần tử của a["<<i<<"][ " < <j<<"]: "; cin >> a[i][j]; } } Crystaldt(a,n); trả về 0; }
Kết quả thực hiện:
Chụp một phần màn hình: 2 Chụp một phần màn hình Chụp một phần a[1][1]: 1 Chụp một phần a[1][2]: 2 Chụp một phần a[2] [1 ]: 3 Nhập phần của a [2][2]: 4 Dinh dưỡng của ma tra là: -2
Tôi hy vọng những bài tập này sẽ giúp bạn sử dụng mảng trong C++ thành thạo hơn! Nếu thấy bài viết này của chúng tôi hay và hữu ích, hãy chia sẻ tới bạn bè để ủng hộ chúng tôi và giúp chúng tôi ngày càng phát triển hơn nhé! Chúc may mắn!