Nhập xuất mảng 2 chiều là bài toán đầu tiên mà các bạn cần giải quyết khi học tới phần kiến thức về mảng nhiều chiều. Với nhiều bạn mới học, việc nhập xuất mảng 2 chiều đôi khi gặp nhiều khó khăn. Đó cũng là lý do mình viết bài hướng dẫn và giải thích cho các bạn về nhập xuất mảng 2 chiều trong C/C++.
1. Giải thích về mảng 2 chiều
Bài này yêu cầu tối thiểu với bạn đọc là phải biết về mảng 1 chiều rồi. Mình sẽ giải thích thông qua kiến thức mảng một chiều nhé.
Nếu bạn chưa biết nhập xuất mảng một chiều, hãy quay lại đọc bài cách nhập xuất mảng 1 chiều nhé.
Các bạn có thể hình dung, mảng hai chiều giống như một bảng trong word/excel. Như này nè:
(0, 0) | (0, 1) | (0, 2) |
(1, 0) | (1, 1) | (1, 2) |
(2, 0) | (2, 1) | (2, 1) |
Như bạn thấy, về góc nhìn trực quan thì nó có 2 chiều từ trên xuống, và từ trái sang. Mỗi một hàng sẽ là một mảng 1 chiều. Và mảng hai chiều được cấu tạo từ nhiều mảng 1 chiều. Như vậy, thực chất việc nhập xuất mảng 2 chiều chỉ là việc lặp lại nhiều lần việc nhập xuất mảng 1 chiều.
Tại sao lại là góc nhìn trực quan? Vì trên bộ nhớ, cách tổ chức lưu trữ mảng 2 chiều vẫn giống hệt mảng 1 chiều, là một dãy ô nhớ liên tiếp mà thôi.
Như vậy, mô hình chung của chúng ta sẽ là:
for(int i = 0; i < số_hàng; i++){ // Các công việc nhập mảng một chiều }
Giả sử mảng hai chiều chúng ta khai báo như sau:
int a[100][100]
Vậy làm sao để chúng ta lấy mảng 1 chiều đầu tiên? Mảng 1 chiều đầu tiên có chỉ số hàng là 0; Do đó đáp án là a[0].
Vậy lấy phần tử đầu tiên của mảng một chiều đầu tiên thì sao? Đơn giản, thì gọi bằng cách tên_mảng[chỉ_số] thôi; Khi đó đáp án sẽ là a[0][0]. Tương tự, phần tử thứ 2 của mảng 1 chiều thứ 3 là a[2][1].
2. Bài tập nhập xuất mảng 2 chiều trong C/C++
Nhập xuất mảng 2 chiều không dùng hàm
BT1. Nhập vào ma trận có kích thước m x n. Hiển thị ma trận vừa nhập ra màn hình dưới dạng bảng.
Lời giải:
#include<stdio.h> #include<conio.h> main() { int a[50][50]; int i,j,m,n; printf("nhap so hang n="); scanf("%d",&n); printf("nhap so cot m="); scanf("%d",&m); printf("nhap vao ma tran:n"); for(i=0;i<n;i++) { for(j=0;j<m;j++) { scanf("%d",&a[i][j]); } } printf("ma tran vua nhap la:n"); for(i=0;i<n;i++) { for(j=0;j<m;j++) { printf("%d ",a[i][j]); } printf("n"); } }
Nhập xuất mảng 2 chiều dùng hàm con
BT2. Nhập xuất ma trận sử dụng hàm con. Yêu cầu có hàm nhập ma trận và hàm xuất ma trận.
Lời giải:
#include <stdio.h> void NhapMaTran(int a[][100], int m, int n) { for(int i = 0; i < m; i++) for(int j = 0; j < n; j++) { printf("A[%d][%d] = ", i, j); scanf("%d", &a[i][j]); } } void XuatMaTran(int a[][100], int m, int n) { for(int i = 0; i < m; i++) { for(int j = 0; j < n; j++) printf("%dt", a[i][j]); printf("n"); } } int main(){ int a[100][100]; int m,n; printf("nhap so hang n = "); scanf("%d",&n); printf("nhap so cot m = "); scanf("%d",&m); printf("nhap vao ma tran:n"); NhapMaTran(a, m , n); XuatMaTran(a, m, n); }
Hi vọng bài chia sẻ này cung cấp cho các bạn nhiều kiến thức bổ ích. Chúc các bạn có những giây phút học tập thú vị tại nguyenvanhieu.vn!
Để lại một bình luận