Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Hoán đổi 2 mảng không dùng biến tạm trong C


Hoán đổi 2 mảng không dùng biến tạm (Temp). Sử dụng phép toán số học và bitwise thay vì biến thứ 3.

Logic đọc mảng đầu tiên

printf("Nhập mảng thứ nhất:\n");
for(i = 0; i < size; i++) {
    scanf("%d", &first[i]);
}

Logic đọc mảng thứ hai

printf("Nhập mảng thứ hai:\n");
for(i = 0; i < size; i++) {
    scanf("%d", &sec[i]);
}

Logic hoán đổi không dùng biến tạm

for(i = 0; i < size; i++) {
    first[i] = first[i] + sec[i];
    sec[i] = first[i] - sec[i];
    first[i] = first[i] - sec[i];
}

Chương trình hoàn chỉnh

#include <stdio.h>

int main() {
    int size, i, first[20], sec[20];
    
    printf("Nhập kích thước mảng: ");
    scanf("%d", &size);
    
    printf("Nhập mảng thứ nhất:\n");
    for(i = 0; i < size; i++) {
        scanf("%d", &first[i]);
    }
    
    printf("Nhập mảng thứ hai:\n");
    for(i = 0; i < size; i++) {
        scanf("%d", &sec[i]);
    }
    
    // Hoán đổi 2 mảng
    for(i = 0; i < size; i++) {
        first[i] = first[i] + sec[i];
        sec[i] = first[i] - sec[i];
        first[i] = first[i] - sec[i];
    }
    
    printf("\nMảng đầu tiên sau hoán đổi %d phần tử:\n", size);
    for(i = 0; i < size; i++) {
        printf("%d\t", first[i]);
    }
    
    printf("\nMảng thứ hai sau hoán đổi %d phần tử:\n", size);
    for(i = 0; i < size; i++) {
        printf("%d\t", sec[i]);
    }
    return 0;
}

Kết quả chạy

Nhập kích thước mảng: 5
Nhập mảng thứ nhất: 11 12 13 14 15
Nhập mảng thứ hai: 90 80 70 60 50
Mảng đầu tiên sau hoán đổi 5 phần tử: 90 80 70 60 50
Mảng thứ hai sau hoán đổi 5 phần tử: 11 12 13 14 15