Có lẽ với tất cả các bạn độc giả bài toán hoán vị 2 số nguyên đã cực kỳ quen thuộc. Bởi lẽ đây là một bài toán kinh điển mà chúng ta được học ngay từ lúc mới tiếp cận với lập trình. Nhưng hôm nay, Lập trình không khó sẽ trình bày cho các bạn rằng có nhiều hơn 1 cách để giải bài toán này. Bạn hãy đọc xem bạn thường làm cách nào và bạn đã biết những cách nào? Hãy cùng đọc và cho tôi câu trả lời ở phần bình luận nhé.
1. Hoán vị 2 số sử dụng biến tạm
Dưới đây là video hướng dẫn cách hoán vị 2 số đơn giản nhất.
Source code minh họa:
#include <stdio.h> int main(){ int a, b; printf("nNhap a = "); scanf("%d", &a); printf("nNhap b = "); scanf("%d", &b); printf("a = %d, b = %d", a, b); // Hoán vị // Giả sử a = 3, b = 5 int temp = a; // temp lưu giá trị a // temp = a = 3, b = 5 a = b; // a lấy giá trị của b // 1 b = temp; // b lấy giá trị của a qua temp // temp = 3, a = 5, b = 3 // Cách hiểu sai // // a = 3, b = 5 // a = b; // // a = 5, b = 5 // b = a; // // b = 5, a = 5 // In ra printf("na = %d, b = %d", a, b); }
Kết quả chạy chương trình:
PS G:c_courcesday_12> .SwapTwoNum.exe Nhap a = 7 Nhap b = 5 a = 7, b = 5 a = 5, b = 7
Tiếp theo các cách dưới đây sử dụng “hoán vị không dùng biến tạm”, mời bạn tiếp tục đọc bài viết.
2. Hoán vị 2 số sử dụng toán tử + và –
// Code from https://nguyenvanhieu.vn #include <stdio.h> int main() { int a = 10, b = 5; printf("Before swapping: a = %d, b = %d", a, b); // Code to swap a and b: a = a + b; b = a - b; a = a - b; printf("nAfter swapping: a = %d, b = %d", a, b); return 0; }
3. Hoán vị 2 số nguyên dùng toán tử * và /
// Code from https://nguyenvanhieu.vn #include <stdio.h> int main() { int a = 10, b = 5; printf("Before swapping: a = %d, b = %d", a, b); // Code to swap a and b: a = a * b; b = a / b; a = a / b; printf("nAfter swapping: a = %d, b = %d", a, b); return 0; }
4. Sử dụng toán tử XOR
// Code from https://nguyenvanhieu.vn #include <stdio.h> int main() { int a = 10, b = 5; printf("Before swapping: a = %d, b = %d", a, b); // Code to swap a and b: a = a ^ b; b = a ^ b; a = a ^ b; printf("nAfter swapping: a = %d, b = %d", a, b); return 0; }
Lưu ý: Toán tử XOR trong ngôn ngữ C được biểu diễn bởi ký tự ^
Kết luận
Trên đây là một số cách hoán vị 2 số nguyên có đi kèm code mình họa sử dụng ngôn ngữ lập trình C. Nếu các bạn biết một cách khác bất kỳ hãy bình luận để giúp tôi và các bạn khác cùng biết nhé! Như vậy, bài viết đã giúp bạn có câu trả lời cho việc “hoán vị không dùng biến tạm“.
Để lại một bình luận