Với phép cộng và trừ, ta có thể hoán đổi hai số từ vị trí bộ nhớ này sang vị trí khác.
Thuật toán
Thuật toán như sau:
BAT DAU
Bước 1: Khai báo 2 biến x và y.
Bước 2: Đọc hai số từ bàn phím.
Bước 3: Hoán đổi số. // Áp dụng phép cộng/trừ để hoán đổi.
i. x = x + y
ii. y = x - y
iii. x = x - y
Bước 4: In giá trị x và y.
KET THUC
Chương trình
Chương trình C sau giải thích hoán đổi hai số không dùng biến thứ ba:
#include <stdio.h>
int main() {
int x, y;
printf("nhap x va y:");
scanf("%d%d", &x, &y); // giả sử x=20, y=30
x = x + y; // x = 20+30 = 50
y = x - y; // y = 50-30 = 20
x = x - y; // x = 50-20 = 30
printf("Sau hoan doi x=%d va y=%d", x, y);
return 0;
}
Kết quả
Kết quả như sau:
nhap x va y: 20 30 Sau hoan doi x=30 va y=20
Lưu ý - Có thể hoán đổi dùng phép nhân/chia và XOR bitwise mà không cần biến tạm.
Xét ví dụ khác dùng phép nhân/chia:
Chương trình
#include <stdio.h>
int main() {
int x, y;
printf("nhap x va y:");
scanf("%d%d", &x, &y);
x = x * y;
y = x / y;
x = x / y;
printf("Sau hoan doi x=%d va y=%d", x, y);
return 0;
}
Kết quả
Kết quả như sau:
nhap x va y: 120 250 Sau hoan doi x=250 va y=120