Hoán vị hai số nguyên a và b

#include<stdio.h>

int main()
{
    int a, b;

    printf("Nhap so a: "); scanf("%d", &a);
    printf("Nhap so b: "); scanf("%d", &b);
    printf("a = %d, b =  %d", a, b); 
    //Hoán vị
    printf("\na = %d, b = %d", b, a);
}

Em code vậy khi biên dịch và chạy nó cũng ra kết quả Hoán vị. Các bác xem giúp em sai chỗ nào ạ. Em mới nhập môn. :nụ cười:

Thì chạy ra đúng rồi phải không?

Thấy 2 dòng printf có gì “hoán vị” với nhau không?

1 Like

Em thấy có hai tham số a và b ở hai dòng lệnh hoán vị đúng không ạ?

Ừ, nó hoán vị rồi đấy, nhưng chưa hoán trị. Giá trị chúng vẫn như cũ thôi.
Điều thực sự cần là bạn hoán đổi giá trị của chúng.
Để khi gọi:

Thứ tự không thay đổi, nhưng giá trị thì đảo nhau.

Giả sử có 2 ly, 1 ly A chứa rượu và ly B chứa nước.
Bây giờ bạn có nghĩ ra cách nào để đổ nước qua ly A và rượu qua ly B không?
Chắc hẳn thực tế thì bạn sẽ tìm 1 cái ly thứ 3 (ly C) để đổ tạm vào đó rồi mới đổ qua lại giữa ly A và B phải không?

Lấy tạm ly C.
Đổ rượu từ ly A qua ly C. Ly C có rượu, ly A trống.
Đổ nước từ ly B qua ly A. Ly A đã có nước.
Đổ nước từ ly C qua ly B. Ly B đã có rượu.

Bạn có thể áp dụng tương tự với 2 biến ab.

6 Likes

Em hiểu rồi ạ. Cảm ơn bác nhiều nha!

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?