Một chương trình hoán vị 2 biến không sử dụng tới hàm mà sẽ hoán đổi 2 biến trực tiếp trong main. Tất nhiên khi làm thực tế thì sẽ không ai viết thế này cả, nhược điểm là không viết hàm con thì cứ mỗi lần hoán đổi 2 phần tử ta sẽ viết lai lệnh hoán đổi nên Tiếp nối thành công đó, Trung tâm Sáng tạo và Ươm tạo FTU tiếp tục tổ chức Chương trình Huấn luyện chuyển đổi mô hình kinh tế tuần hoàn 2022 (CE Bootcamp 2022). CE Bootcamp 2022 nhằm trang bị kiến thức và công cụ về kinh tế tuần hoàn, kết nối nguồn lực, hỗ trợ toàn 5hpUhIn. Đề bài Cho 2 biến lưu trữ các số nguyên a và b được nhập từ bàn phím, bạn hãy viết chương trình hoán đổi giá trị của biến a và biến b. Sau đó hiển thị ra màn hình after swap a = {P1}, b = {P2} Với {P1} và {P2} lần lượt là giá trị của a và b sau khi đã hoán đổi. Ví dụ nếu bạn nhập a = 3, b = 4 như bên dưới Thì chương trình sẽ hiển thị ra Nếu bạn chưa giải được bài này thì có thể xem hướng dẫn ở bên dưới. Hướng dẫn Bạn có thể hoán đổi giá trị của 2 biến a, b bằng cách tạo ra biến trung gian c giống như sau Code mẫu a = intinput b = intinput c = a a = b b = c print"After swap a = " + stra + ", b = " + strb Nội dung1. Tư tưởng hoán vị2. Code hoán vị3. Hàm hoán vị trong C4. Hàm hoán vị trong C++ 1. Tư tưởng hoán vị Trong thực tế, chúng ta phải xây dựng các chương trình, các hàm hoán vị để hoán đổi giá trị của các phần tử, ví dụ chương trình sắp xếp dãy là một điển hình. Để hoán vị 2 số, ta có thể hình dung giống như chúng ta có 2 cốc. Cốc A đựng nước chanh, cốc B đựng thuốc trừ sâu. Làm sao để chúng ta chuyển nước chanh sang cốc B và chuyển thuốc trừ sâu sang cốc a? Đơn giản là dùng thêm 1 cốc phụ là cốc c và bắt đầu chuyển B1 Đổ cốc chanh A sang cốc C. => A rỗng, C chứa chanh B2 Đổ cốc thuốc trừ sâu B sang cốc A => B rỗng, A chứa thuốc trừ sâu B3 Đổ cốc chanh C sang cốc B => B chứa chanh. Ok. Giờ A chứa thuốc trừ sâu, B chứa nước chanh. Cách đổi chỗ 2 cốc nước 2. Code hoán vị Làm tương tự trong lập trình ta sẽ hoán đổi được giá trị của 2 biến. // about swap in C - code by nguyenvanquan7826 include int main { int a, b; printf"Nhap 2 so a, b\n"; scanf"%d%d", &a, &b; printf"Ban da nhap\na = %d \nb = %d\n", a, b; int temp = a; a = b; b = temp; printf"Sau khi hoan vi\na = %d\nb = %d\n", a, b; return 0; } Kết quả Nhap 2 so a, b 3 6 Ban da nhap a = 3 b = 6 Sau khi hoan vi a = 6 b = 3 Ok. Bây giờ thử tách ra thành hàm hoán vị xem sao 3. Hàm hoán vị trong C // about swap in C - code by nguyenvanquan7826 include void hoanviint a, int b { int temp = a; a = b; b = temp; } int main { int a, b; printf"Nhap 2 so a, b\n"; scanf"%d%d", &a, &b; printf"Ban da nhap\na = %d \nb = %d\n", a, b; hoanvia, b; printf"Sau khi goi ham hoanvi\na = %d\nb = %d \n", a, b; return 0; } Kết quả Nhap 2 so a, b 3 6 Ban da nhap a = 3 b = 6 Sau khi goi ham hoanvi a = 3 b = 6 Oh, Sao kết quả chúng ta không có sự hoán vị? Với chương trình này chúng ta xây dựng 1 hàm hoán vị để đổi vị trí giữa 2 bến a và b, tuy nhiên chúng ta đã sử dụng tham trị nên các giá trị của a và b không thay đổi hay nói cách khác là chúng không được hoán vị cho nhau. Các bạn hiểu truyền tham trị tức là khi gọi hàm hoanvia, b thì ngay lập tức giá trị của a và b 3 và 6 được đưa vào hàm chứ không phải là các biến a, b nên biến a, b của chúng ta không hề thay đổi khi hàm kết thúc. Code đúng như sau // about swap in C - code by nguyenvanquan7826 include void hoanviint *a, int *b { int temp = *a; *a = *b; *b = temp; } int main { int a, b; printf"Nhap 2 so a, b\n"; scanf"%d%d", &a, &b; printf"Ban da nhap\na = %d \nb = %d\n", a, b; hoanvi&a, &b; printf"Sau khi goi ham hoanvi\na = %d\nb = %d \n", a, b; return 0; } Kết quả Nhap 2 so a, b 3 6 Ban da nhap a = 3 b = 6 Sau khi hoan vi a = 6 b = 3 Ở trên chúng ta xây dựng hàm hoanvi với 2 đối số là *a và *b kiểu int. *a và *b nghĩa là con trỏ a và con trỏ b. Trong thân hàm chúng ta có viết *a, *b VD int temp = *a thì dấu * thể hiện là giá trị của con trỏ a. Do hàm dùng con trỏ nên khi gọi hàm chúng ta phải truyền vào địa chỉ của các biến tức là hoanvi&a, &b , ở đây dấu & để lấy địa chỉ của biến a và biến b. 4. Hàm hoán vị trong C++ Nếu các bạn viết trong C++ file có đuôi là .cpp thì có thể viết hàm hoán vị dễ hơn một chút như sau. // about swap in C - code by nguyenvanquan7826 include void hoanviint &a, int &b // only in C++, file .cpp { int temp = a; a = b; b = temp; } int main { int a, b; printf"Nhap 2 so a, b\n"; scanf"%d%d", &a, &b; printf"Ban da nhap\na = %d \nb = %d\n", a, b; hoanvia, b; printf"Sau khi goi ham hoanvi\na = %d\nb = %d \n", a, b; return 0; } Hoặc có thể dùng hàm swap có sẵn trong thư viện algorithm include include // swap int main { int a, b; printf"Nhap 2 so a, b\n"; scanf"%d%d", &a, &b; printf"Ban da nhap\na = %d \nb = %d\n", a, b; stdswapa, b; printf"Sau khi goi ham hoanvi\na = %d\nb = %d \n", a, b; return 0; } Trong ví dụ này, bạn sẽ học cách hoán đổi hai số trong lập trình C bằng hai kỹ thuật khác nhau. Để hiểu ví dụ này, bạn nên có kiến ​​thức về các chủ đề lập trình C sau C Các kiểu dữ liệu Toán tử lập trình C Đầu ra đầu vào C I / O Hoán đổi số bằng biến tạm thời include int main double first, second, temp; printf"Enter first number "; scanf"%lf", &first; printf"Enter second number "; scanf"%lf", &second; // Value of first is assigned to temp temp = first; // Value of second is assigned to first first = second; // Value of temp initial value of first is assigned to second second = temp; printf"After swapping, firstNumber = %.2lf", first; printf"After swapping, secondNumber = %.2lf", second; return 0; Đầu ra Nhập số đầu tiên Nhập số thứ hai Sau khi hoán đổi, Số đầu tiên = Sau khi hoán đổi, Số thứ hai = Trong chương trình trên, biến tạm thời được gán giá trị của biến đầu tiên. Sau đó, giá trị của biến đầu tiên được gán cho biến thứ hai. Cuối cùng, nhiệt độ giữ giá trị ban đầu của đầu tiên được gán cho thứ hai. Điều này hoàn tất quá trình hoán đổi. Hoán đổi số mà không cần sử dụng biến tạm thời include int main double a, b; printf"Enter a "; scanf"%lf", &a; printf"Enter b "; scanf"%lf", &b; // Swapping // a = initial_a - initial_b a = a - b; // b = initial_a - initial_b + initial_b = initial_a b = a + b; // a = initial_a - initial_a - initial_b = initial_b a = b - a; printf"After swapping, a = %.2lf", a; printf"After swapping, b = %.2lf", b; return 0; Đầu ra Nhập a 10,25 Nhập b -12,5 Sau khi hoán đổi, a = -12,50 Sau khi hoán đổi, b = 10,25 hoán đổi a và b VAr a,b,tgInteger; BEGIN write'nhap a ' ;readlna; write'nhap b ';readlnb; tg=a; a=b; b=tg; write'a la ',a; writeln; write'b la ',b; readln; end. còn 1 cách nữa nhưng hơi ăn gian VAr a,bInteger; BEGIN write'nhap a ' ;readlna; write'nhap b ';readlnb; write'a la ',b; writeln; write'b la ',a; readln; end.

chương trình hoán đổi