Đảo ngược mảng không sử dụng mảng phụ trong C
Trong bài tập này, mình sẽ viết một chương trình trong ngôn ngữ lập trình C để đảo ngược một mảng mà không sử dụng mảng phụ.
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.
- Nhập vào một mảng số nguyên từ người dùng.
- Đảo ngược mảng đó mà không sử dụng mảng phụ.
- Hiển thị mảng sau khi đã đảo ngược.
Chương trình đảo ngược mảng không sử dụng mảng phụ trong C
Cách giải quyết bài lập trình
- Sử dụng hai biến chỉ số, một biến trỏ tới phần tử đầu mảng (bắt đầu) và một biến trỏ tới phần tử cuối mảng (kết thúc).
- Hoán đổi giá trị của hai phần tử tại hai chỉ số này.
- Di chuyển biến bắt đầu sang phải và biến kết thúc sang trái.
- Lặp lại quá trình cho đến khi hai biến gặp nhau.
Hãy xem cách giải như sau:
#include <stdio.h> void reverseArray(int arr[], int n) { int start = 0; // Chỉ số bắt đầu mảng int end = n - 1; // Chỉ số kết thúc mảng while (start < end) { // Hoán đổi giá trị của hai phần tử int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; // Di chuyển biến bắt đầu sang phải và biến kết thúc sang trái start++; end--; } } int main() { int arr[100], n, i; printf("Nhập số phần tử của mảng: "); scanf("%d", &n); printf("Nhập các phần tử của mảng:\n"); for (i = 0; i < n; i++) { printf("arr[%d] = ", i); scanf("%d", &arr[i]); } // Đảo ngược mảng reverseArray(arr, n); printf("Mảng sau khi đảo ngược:\n");// In ra màn hình Freetuts.net for (i = 0; i < n; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; }
Kết quả chạy ra màn hình:
Bài viết này được đăng tại [free tuts .net]
Trên này là cách viết một chương trình trong ngôn ngữ lập trình C để đảo ngược một mảng mà không sử dụng mảng phụ. Chúc bạn thực hiện thành công!