Ví dụ mảng (hay dãy số) ban đầu có các phần tử là: 1,2,3,4,5,6 nếu như đảo ngược lại dãy số trên ta sẽ có: 6,5,4,3,2,1.

Để thực hiện đảo ngược mảng arr[n] có n phần tử, ta cần thực hiện 2 bước sau đây:

  • Bước đầu tiên: Khởi tạo chỉ mục bắt đầu và kết thúc đó là: start = 0, end = n-1
  • Bước thứ hai: Trong vòng lặp, hoán đổi arr[start] với arr[end] và thay đổi start và end như sau: start = start +1, end = end – 1

Chương trình đảo ngược mảng trong C

#include <stdio.h>
int main(){
    //so luong phan tu cua mang
    int n = 6;
    //khai bao start = 0;
    int start = 0;
    //khao bao end = n - 1
    int end = n - 1;
    //khai bao mang
    int arr[6] = {1,2,3,4,5,6};
    
    //hien thi mang ban dau
    printf("MANG BAN DAU\n");
    for(int i = 0; i < n; i++){
        printf("%d \t",arr[i]);
    }
    
    //trong khi start < end thuc hien dao nguoc phan tu
    while (start < end)
    {
        //hoan vi phan tu tai vi tri start cho phan tu tai vi tri end
        int temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;
        //tang start
        start++;
        //giam end
        end--;
    }
    
    //hien thi mang duoc dao nguoc
    printf("\n\nMANG DUOC DAO NGUOC\n");
    for(int i = 0; i < n; i++){
        printf("%d \t",arr[i]);
    }
}

Đảo ngược mảng trong C – viết dạng hàm

Hàm void DaoNguoc(int arr[], int start, int enddưới đây nhận vào int arr[] là mảng cần đảo ngược, int start là biến bắt đầu và int end là biến kết thúc để thực hiện cho việc kiểm tra giá trị phần tử và hoán vị chúng

#include <stdio.h>
void DaoNguoc(int arr[], int start, int end){
    //trong khi start < end thuc hien dao nguoc phan tu
    while (start < end)
    {
        //hoan vi phan tu tai vi tri start cho phan tu tai vi tri end
        int temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;
        //tang start
        start++;
        //giam end
        end--;
    }
}
int main(){
    //so luong phan tu cua mang
    int n = 6;
    //khai bao start = 0;
    int start = 0;
    //khao bao end = n - 1
    int end = n - 1;
    //khai bao mang
    int arr[6] = {1,2,3,4,5,6};
    
    //hien thi mang ban dau
    printf("MANG BAN DAU\n");
    for(int i = 0; i < n; i++){
        printf("%d \t",arr[i]);
    }
    
    //goi ham dao nguoc
    DaoNguoc(arr,start,end);
    
    //hien thi mang duoc dao nguoc
    printf("\n\nMANG DUOC DAO NGUOC\n");
    for(int i = 0; i < n; i++){
        printf("%d \t",arr[i]);
    }
}

By alaza7

Leave a Reply

Your email address will not be published. Required fields are marked *