C Program to Swap Two Arrays Without Using Temp Variable

In this article, We are going to show you, C Program to Swap two Arrays without using Temp variable. Instead of using the third variable, we are going to use Arithmetic Operators and Bitwise Operators.

C Program to Swap Two Arrays Without Using Temp Variable

In this C program, Instead of using the temp or third variable to swap two arrays We are going to use Arithmetic Operators.

/* C Program to Swap Two Arrays Without Using Temp Variable */
#include<stdio.h>

int main()
{
 int Size, i, a[10], b[10], Temp[10];
  
 printf("\nPlease Enter the Size of the Array\n");
 scanf("%d", &Size);
 
 printf("\nPlease Enter the First Array Elements\n");
 for(i = 0; i < Size; i++)
  {
      scanf("%d", &a[i]);
  }
   
 printf("\nPlease Enter the Second Array Elements\n");
 for(i = 0; i < Size; i ++)
  {
      scanf("%d", &b[i]);
  }

 //Swapping two Arrays 
 for(i = 0; i < Size; i++)
  {
    a[i] = a[i] + b[i];
    b[i] = a[i] - b[i]; 
    a[i] = a[i] - b[i];
  }

 printf("\n a[%d] Array Elements After Swapping \n", Size); 
 for(i = 0; i < Size; i ++)
  {
      printf(" %d \t ",a[i]);
  }

printf("\n\n b[%d] Array Elements After Swapping \n", Size); 
 for(i = 0; i < Size; i ++)
  {
      printf(" %d \t ",b[i]);
  }

  return 0;
} 
C Program to Swap Two Arrays Without Using Temp Variable

In this C Program to Swap Two Arrays Without Using Temp Variable example, We declared three arrays or One-dimensional arrays a, b and Temp

Below printf statement asks the User to enter the arrays a, b size (Number of elements. For instance 4 elements = a[4])

printf("\n Please Enter the Size of the Array\n");

Below C Programming scanf statement will assign the user entered values to Size variable.

scanf("%d", &Size);

Below for loop will help to iterate each cell present in a[3] array. Condition inside the for loops (i < Size)) will ensure the compiler, not to exceed the array size. Otherwise, the Array will overflow

scanf statement inside the for loop will store the user entered values in every individual array element such as a[0], a[1], a[2]

for(i = 0; i < Size; i++)
  {
      scanf("%d", &a[i]);
  }

The below for loop will help to iterate every cell present in the b[2][3] matrix.

for(i = 0; i < Size; i++)
  {
      scanf("%d", &b[i]);
  }

User inserted values for this C Program to Swap Two Arrays Without Using Temp Variable example are
a[3] = {20, 50, 80} and
b[3] = {10, 35, 65}

First Iteration
The value of i will be 0, and the condition (i < 3) is True. So, it will start executing the Arithmetic Operator statements inside the loop until the condition fails.
a[i] = a[i] + b[i];
a[0] = a[0] + b[0] = 20 + 10 = 30

b[i] = a[i] – b[i];
b[0] = a[0] – b[0] = 30 – 10 = 20

a[i] = a[i] – b[i];
a[0] = a[0] – b[0] = 30 – 20 = 10

Second Iteration
The value of i will be 1, and the condition (i < 3) is True.
a[1] = a[1] + b[1] = 50 + 35 = 85
b[1] = a[1] – b[1] = 85 – 35 = 50
a[1] = a[1] – b[1] = 85 – 50 = 35

Third Iteration
i = 2, and the condition (i < 3) is True.
a[2] = a[2] + b[2] = 80 + 65 = 145
b[2] = a[2] – b[2] = 145 – 65 = 80
a[2] = a[2] – b[2] = 145 – 80 = 65

After the increment, the i value will be 3, and the condition (i < 3) will fail. So it will exit from the loop.

Next for loop,

for(i = 0; i < Size; i ++)
  {
      printf(" %d \t ",a[i]);
  }

Will traverse as we explained above, but instead of swapping two array number, it will display the values inside a[i] array using the printf statements array.

The Next for loop will traverse and display the values inside the b[i] array

for(i = 0; i < Size; i ++)
  {
      printf(" %d \t ",b[i]);
  }
The final output of the a[i] Array is:
a[3] = {10, 35, 65}{20, 50, 80}

The final output of the b[i] Array is:
b[3] = {20, 50, 80}

NOTE: Although we can swap two arrays using multiplication and division approach. However, they may produce strange values if we are working with larger integer values, or if any of the integer value is 0

C Program to Swap Two Arrays Using Bitwise Operator

In this C program, Instead of using the temp or third variable to swap two arrays We are going to use Bitwise OR Operator.

/* C Program to Swap Two Arrays Without Using Temp Variable */

#include<stdio.h>

int main()
{
 int Size, i, a[10], b[10], Temp[10];
  
 printf("\nPlease Enter the Size of the Array\n");
 scanf("%d", &Size);
 
 printf("\nPlease Enter the First Array Elements\n");
 for(i = 0; i < Size; i++)
  {
      scanf("%d", &a[i]);
  }
   
 printf("\nPlease Enter the Second Array Elements\n");
 for(i = 0; i < Size; i ++)
  {
      scanf("%d", &b[i]);
  }

 //Swapping two Arrays 
 for(i = 0; i < Size; i++)
  {
    a[i] = a[i] ^ b[i];
    b[i] = a[i] ^ b[i]; 
    a[i] = a[i] ^ b[i];
  }

 printf("\n a[%d] Array Elements After Swapping \n", Size); 
 for(i = 0; i < Size; i ++)
  {
      printf(" %d \t ",a[i]);
  }

printf("\n\n b[%d] Array Elements After Swapping \n", Size); 
 for(i = 0; i < Size; i ++)
  {
      printf(" %d \t ",b[i]);
  }

  return 0;
} 

C Swap Two Arrays using Bitwise Operator output

Please Enter the Size of the Array
4

Please Enter the First Array Elements
8 16 24 32

Please Enter the Second Array Elements
4 6 20 10

 a[4] Array Elements After Swapping 
 4 	  6 	  20 	  10 	 

 b[4] Array Elements After Swapping 
 8 	  16 	  24 	  32 	 

We are just explaining the logic for the first variable only. Please refer to Bitwise Operators in C to understand how the bitwise operator works.

User Entered Values for this C Program to Swap Two Arrays Without Using Temp Variable example are a[0] = 8 and b[0] = 4. The binary values of 8 = 1000 and 4 = 0010.

a[0] = a[0] ^ b[0] => 1000 ^ 0010
a[0] = 1010

b[0] = a[0] ^ b[0]
b[0] = 1010 ^ 0010 = 1000

a[0] = a[0] ^ b[0];
a[0] = 1010 ^ 1000 = 0010

Final Values after swapping two arrays: a[0] = 4 and b[0] = 8.

Do the same for remaining values a[1], a[2], a[3] and b[1], b[2], b[3]