Trong bài trước, ta đã cùng nhau khai báo được một mảng 1 chiều trong C, ngay khi khai báo thành công chúng ta đã gán các giá trị của từng phần tử có sẵn vào trong mảng 1 chiều đó. Ví dụ như int a[5] = {1,2,3,4,5} tuy nhiên, trong một số tác vụ ta lại cần nhập các phần tử có giá trị từ bàn phím vào mảng chứ không phải việc khai báo trước như trên. Thế nên trong bài ngày hôm nay chúng ta cùng nhau tìm hiểu cách nhập xuất các phần tử vào trong mảng 1 chiều trong C.

1. Nhập phần tử vào trong mảng một chiều

Khi một mảng mới được khai báo thì ta cần phải chỉ ra được rõ ràng số lượng phần tử mà mảng đó có thể được lưu trữ. Ví dụ như khai báo mảng int a[5]; thì số lượng phần tử tối đa được lưu trữ trong mảng sẽ là 5. Và nếu như ta truy cập vào phần tử a[0] sẽ là phần tử đầu tiên trong mảng, a[1] sẽ là phần tử thứ 2…. a[4] sẽ là phần tử cuối cùng trong mảng.

Từ việc truy cập phần tử theo chỉ số index từ 0 đến N -1 (giả sử mảng có N phần tử) – khi đó ta hoàn toàn có thể duyệt qua các phần tử a[i] trong mảng dựa vào vòng lặp for. Tuy nhiên, thao tác chúng ta đang cần là nhập vào các giá trị tương ứng cho các phân tử a[i] vì thế mà trong vòng lặp for cần gọi đến hàm scanf(“%d”, &a[i]) để nhập dữ liệu từ bàn phím và gán giá trị vừa nhập đó vào phần tử a[i] trong mảng.

#include <stdio.h>
int main(){
    //Khai bao mang a ban dau gom 5 phan tu
    int a[5];
    //Duyet qua cac phan tu a[0], a[1], a[2]...a[4] bang vong lap for
    for(int i = 0; i< 5; i++){
        printf("Nhap a[%d]: ",i);
        //Nhap gia tri va gan vao phan tu a[i] trong mang
        scanf("%d",&a[i]);
    }
}

Trong trường hợp, bạn cần nhập vào số lượng phần tử n cho mảng a đó thay vì khai báo mặc định là int a[5]. Khi đó bạn chỉ cần tạo thêm một biến int n; và yêu cầu người dùng nhập giá trị vào biến trước. Sau đó, trong vòng lặp for sẽ cần khai báo một vòng lặp với điều kiện duyệt i < n và vẫn thực hiện việc nhập các phần tử vào a[i] như ví dụ trên.

#include <stdio.h>
int main(){
    //Khai bao bien n lam so luong phan tu mang
    int n;
    //Nhap vao so luong phan tu n cua mang
    printf("Nhap N: ");
    scanf("%d",&n);
    //Khai bao mang a ban dau gom n phan tu
    int a[n];
    //Duyet qua cac phan tu a[0], a[1], a[2]...a[n-1] bang vong lap for
    for(int i = 0; i< n; i++){
        printf("Nhap a[%d]: ",i);
        //Nhap gia tri va gan vao phan tu a[i] trong mang
        scanf("%d",&a[i]);
    }
}

2. Xuất các phần tử có trong mảng một chiều

Thao tác nhập xuất phần tử trong mảng luôn đi kèm với nhau. Ở trong phần trên chúng ta đã có thể nhập được các giá trị do người dùng nhập vào từ bàn phím tuy nhiên lại chưa hề lấy ra và kiểm tra được các phần tử a[i] được nhập vào mảng a.

Việc xuất các phần tử có trong mảng ban đầu chỉ đơn giản là việc chúng ta duyệt qua các phần tử a[i] bằng vòng lặp for và In ra giá trị của phần tử đó thông qua hàm printf(). Ví dụ một mảng a ban đầu bao gồm 5 phần tử thì ta sẽ tọ một vòng lặp từ i = 0 với điều kiện lặp i < 5 và mỗi lần lặp i++ và trong vòng lặp sẽ là câu lệnh printf(“%d \t”,a[i]) để in ra giá trị của phần tử a[i] có trong mảng.

#include <stdio.h>
int main(){
    //Khai bao mang a ban dau gom 5 phan tu
    int a[5];
    //Duyet qua cac phan tu a[0], a[1], a[2]...a[4] bang vong lap for
    for(int i = 0; i < 5; i++){
        printf("Nhap a[%d]: ",i);
        //Nhap gia tri va gan vao phan tu a[i] trong mang
        scanf("%d",&a[i]);
    }
    
    //Xuat cac gia tri a[i] trong mang a
    for(int i = 0; i < 5; i++){
        //Xuat gia tri phan tu a[i] trong mang
        printf("%d \t",a[i]);
    }
}

Trường hợp tổng quát, nếu ta cần nhập vào số lượng n phần tử trong mảng sau đó mới thực hiện nhập giá trị của từng phần tử a[0], a[1], …a[n-1] vào trong mảng, cuối cùng mới sử dụng vòng lặp for để xuất ra n giá trị tương ứng với n phần tử có trong mảng vừa nhập. Khi đó ta sẽ có một chương trình nhập xuất phần tử trong mảng một chiều đầy đủ như sau:

#include <stdio.h>
int main(){
    //Khai bao bien n lam so luong phan tu mang
    int n;
    //Nhap vao so luong phan tu n cua mang
    printf("Nhap N: ");
    scanf("%d",&n);
    //Khai bao mang a ban dau gom n phan tu
    int a[n];
    //Duyet qua cac phan tu a[0], a[1], a[2]...a[n-1] bang vong lap for
    for(int i = 0; i< n; i++){
        printf("Nhap a[%d]: ",i);
        //Nhap gia tri va gan vao phan tu a[i] trong mang
        scanf("%d",&a[i]);
    }
    
    //Xuat cac phan tu tu a[0], a[1], a[2]...a[n-1] bang vong lap for
    for(int i = 0; i< n; i++){
        //In tung gia tri cua phan tu a[i]
        printf("%d \t1",a[i]);
    }
}

Như vậy, bài này đã giúp cho các bạn hiểu rõ hơn về việc nhập xuất các phần tử có trong mảng một chiều thông qua vòng lặp for kết hợp với các hàm printf()scanf(). Việc nhập xuất các phần tử sẽ trợ giúp rất nhiều trong việc thao tác với mảng sau nay!