Hàm hoán đổi giá trị 2 số nguyên C++

#include #include int hoanvi[int a , int b] { int a1,a2,b1; a1=a+b; b1=a1-b; a2=a1-b1; return a2; return b1; } int main[] { int a,b; printf["nhap a,b: "];scanf["%d %d",&a,&b]; printf["a,b sau: %d %d \n",hoanvi[a,b]]; return 0; }

hàm hoán vị của bạn sai rồi, bạn có thể khai báo

int temp = a; a = b; b = temp;

2 Likes

Một số cái sai:

  1. Biến truyền vào theo kiểu tham trị thì sẽ không thay đổi được [do đó không hoán đổi được]. [Cần truyền theo tham chiếu]
  2. Hàm chỉ có thể trả về nhiều nhất 1 giá trị mà thôi.
  3. Nếu đã dùng 3 biến thì làm như bạn comment đầu tiên là tốt nhất, còn không vẫn có thể dùng 2 biến để hoán đổi được.

1 Like

có thể gợi ý cho mình chuyển giá trị 2 biến mà không dùng biến trung gian không

masterq1997:

có thể gợi ý cho mình chuyển giá trị 2 biến mà không dùng biến trung gian không

C1 a = a + b; b = a - b; a = a - b; C2 ngoài ra bạn nên dùng phép ^ [XOR] a = a ^ b; b = a ^ b; a = a ^ b;

2 cách này mình thử thì thấy thời gian nó gần gần nhau thôi.

2 Likes

tks hai bạn

20char

#include #include void hoanvi[int &a , int &b] { //truyền tham chiếu thì nó sẽ nhận địa chỉ của a và b // nên khi kết thúc hàm giá trị a và b thay đổi. //bạn thử truyền vào [int a , int b] để thấy sự khác biệt nhé. int temp = a; a = b; b = temp; } int main[] { int a,b; printf["nhap a,b: "];scanf["%d %d",&a,&b]; printf["a,b sau: %d %d \n",a, b]; return 0; }

1 Like

Bạn có thể giải thích giùm mình ý nghĩa của phép ^[XOR] với không >

vi.wikipedia.org

Trong ngôn ngữ máy tính, các phép toán trên thao tác bit [tiếng Anh: bitwise operation] được thực hiện trên một hoặc nhiều chuỗi bit hoặc số nhị phân tại cấp độ của từng bit riêng biệt. Các phép toán này được thực hiện nhanh, ưu tiên, được hỗ trợ trực tiếp bởi vi xử lý, và được dùng để điều khiển các giá trị dùng cho so sánh và tính toán. Đối với các loại vi xử lý rẻ tiền, thường thì các phép toán trên thao tác bit nhanh hơn phép chia đáng kể, đôi khi nhanh hơn phép nhân, và đôi khi nhanh hơn ph...


Vì nó thao tác trực tiếp trên bit nên sẽ nhanh hơn.

C làm gì có References mà bạn sử dụng. C chỉ có con trỏ thôi ạ.

Mình thích cách thứ 2 của bạn. Cách 1 mình sợ miền giá trị lắm

1 Like

Cách 2 là thông dụng nhất

cách 1 [hai biến] chỉ có hỏi đố mới dùng, mà nên dùng xor.

Cách tính tổng rồi trừ có 2 nhược điểm:

  1. Overflow
  2. Lý do này có phần hơi nhảm nhí: Thực hiện phép cộng lâu hơn phép gán

1 Like

Home Categories FAQ/Guidelines Terms of Service Privacy Policy

Yêu cầu:

–  Khai báo 2 biến được gán giá trị ban đầu.

– Viết hàm đổi chỗ giá trị của 2 biến cho nhau

Giải thuật:

– Ta viết hàm với tham số truyền vào là 2 biến được khai báo. Như các bạn đã biết, nếu truyền tham trị, sẽ không thể thay đổi giá trị của chúng được. Muốn thay đổi được giá trị của 2 biến truyền vào, chúng ta cần truyền tham biến [con trỏ + tham chiếu].

Code:

/************************************************************ * Author: VNCODING * History * 2014/10/05 first create VNCODING *************************************************************/ #include "stdio.h" #include "conio.h" void swap[int *a, int *b]; void main[] { int a = 6, b = 10; printf["\nTruoc khi doi cho: a = %d, b = %d", a, b]; swap[&a, &b]; printf["\nSau khi doi cho: a = %d, b = %d", a, b]; getch[]; } void swap[int *a, int *b] { int temp; temp = *a; *a = *b; *b = temp; }

Kết quả:

Truoc khi doi cho: a = 6, b = 10 Sau khi doi cho: a = 10, b = 6

©2015-2022 by V1Study. All rights reserved.

Mọi hình thức sao chép nội dung trên website này mà chưa được sự đồng ý đều là trái phép.

Trong bài tập này chúng ta sẽ thực hiện chương trình hoán đổi hai số sử dụng con trỏ C++. Đây là một bài tập đơn giản giúp các bạn làm quen với con trỏ trong C++.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Để làm được bài tập này các bạn cần có kiến thức căn bản về C++ như cách tạo hàm và sử dụng hàm và hiểu được cách hoạt động của con trỏ p.

Chương trình hoán đổi hai số sử dụng con trỏ trong C++

Trong ví dụ này chúng ta sẽ tạo một hàm swap[] để thực hiện công việc hoán đổi. Sau khi viết được hàm swap[] chúng ta sẽ viết tiếp hàm main[]. Trong hàm main[] chúng ta sẽ yêu cầu người dùng nhập vào hai số cần hoán đổi. Tiếp đến sẽ gọi hàm swap[] để thực hiện hoán đổi hai số mà người dùng vừa mới nhập vào.

#include using namespace std; void swap[int *x,int *y] { int t; t = *x; *x = *y; *y = t; } int main[] { int num1,num2; coutnum1; coutnum2; cout

Bài Viết Liên Quan

Chủ Đề