# C Program to Swap two Numbers

Given two numbers, write a C program to swap the given numbers.

```Input : x = 10, y = 20;
Output : x = 20, y = 10

Input : x = 200, y = 100
Output : x = 100, y = 200
``` ## Recommended: Please solve it on “PRACTICE” first, before moving on to the solution.

The idea is simple

1. Assign x to a temp variable : temp = x
2. Assign y to x : x = y
3. Assign temp to y : y = temp

Let us understand with an example.

x = 100, y = 200

After line 1: temp = x
temp = 100

After line 2: x = y
x = 200

After line 3 : y = temp
y = 100

 `// C program to swap two variables ` `#include ` ` `  `int` `main() ` `{ ` `    ``int` `x, y; ` `    ``printf``(``"Enter Value of x "``); ` `    ``scanf``(``"%d"``, &x); ` `    ``printf``(``"\nEnter Value of y "``); ` `    ``scanf``(``"%d"``, &y); ` ` `  `    ``int` `temp = x; ` `    ``x = y; ` `    ``y = temp; ` ` `  `    ``printf``(``"\nAfter Swapping: x = %d, y = %d"``, x, y); ` `    ``return` `0; ` `} `

Output:

```Enter Value of x 12

Enter Value of y 14

After Swapping: x = 14, y = 12 ```

How to write a function to swap?
Since we want the local variables of main to modified by swap function, we must them using pointers in C.

 `// C program to swap two variables using a  ` `// user defined swap() ` `#include ` ` `  `// This function swaps values pointed by xp and yp ` `void` `swap(``int` `*xp, ``int` `*yp) ` `{ ` `    ``int` `temp = *xp; ` `    ``*xp = *yp; ` `    ``*yp = temp; ` `} ` ` `  `int` `main() ` `{ ` `    ``int` `x, y; ` `    ``printf``(``"Enter Value of x "``); ` `    ``scanf``(``"%d"``, &x); ` `    ``printf``(``"\nEnter Value of y "``); ` `    ``scanf``(``"%d"``, &y); ` `    ``swap(&x, &y); ` `    ``printf``(``"\nAfter Swapping: x = %d, y = %d"``, x, y); ` `    ``return` `0; ` `} `

Output:

```Enter Value of x 12

Enter Value of y 14

After Swapping: x = 14, y = 12 ```

How to do in C++?
In C++, we can use references also.

 `// C++ program to swap two variables using a  ` `// user defined swap() ` `#include ` ` `  `// This function swaps values referred by  ` `// x and y, ` `void` `swap(``int` `&x, ``int` `&y) ` `{ ` `    ``int` `temp = x; ` `    ``x = y; ` `    ``y = temp; ` `} ` ` `  `int` `main() ` `{ ` `    ``int` `x, y; ` `    ``printf``(``"Enter Value of x "``); ` `    ``scanf``(``"%d"``, &x); ` `    ``printf``(``"\nEnter Value of y "``); ` `    ``scanf``(``"%d"``, &y); ` `    ``swap(x, y); ` `    ``printf``(``"\nAfter Swapping: x = %d, y = %d"``, x, y); ` `    ``return` `0; ` `} `

Output:

```Enter Value of x 12

Enter Value of y 14

After Swapping: x = 14, y = 12 ```

Is there a library function?
We can use C++ library swap function also.

 `// C++ program to swap two variables using a  ` `// user defined swap() ` `#include ` `using` `namespace` `std; ` ` `  `int` `main() ` `{ ` `    ``int` `x, y; ` `    ``printf``(``"Enter Value of x "``); ` `    ``scanf``(``"%d"``, &x); ` `    ``printf``(``"\nEnter Value of y "``); ` `    ``scanf``(``"%d"``, &y); ` `    ``swap(x, y); ` `    ``printf``(``"\nAfter Swapping: x = %d, y = %d"``, x, y); ` `    ``return` `0; ` `} `

Output:

```Enter Value of x 12

Enter Value of y 14

After Swapping: x = 14, y = 12 ```

How to swap without using a temporary variable?

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

My Personal Notes arrow_drop_up