📜  交换没有临时变量的四个变量

📅  最后修改于: 2021-04-30 03:16:27             🧑  作者: Mango

假设我们有四个变量a,b,c,d,并且我们想要以以下方式执行这些变量的交换
a = b,b = c,c = d,d = a
不使用任何其他第五或临时变量

解决方案 :
步骤1.交换ab,而不使用任何其他变量
a = a + b
b = a – b
a = a – b

步骤2.交换bc,而不使用任何其他变量
b = b + c
c = b – c
b = b – c

步骤3.交换cd,而不使用任何其他变量
c = c + d
d = c – d
c = c – d

例子:

Input : a = 1, b = 2, c = 3, d = 4
Output :After swapping 
        a = 2, b = 3, c = 4, d = 1

Input :a = 6, b = 9, c = 10, d = 50
Output : After swapping : a = 9, b = 10, c = 50, d = 6

先决条件:交换两个没有临时变量的变量,交换三个没有临时变量的变量

CPP
// CPP program to swap 4 variables without
// using temporary variable.
#include 
using namespace std;
 
void swap(int a, int b, int c, int d)
{
    // swapping a and b variables
    a = a + b;
    b = a - b;
    a = a - b;
 
    // swapping b and c variables
    b = b + c;
    c = b - c;
    b = b - c;
 
    // swapping c and d variables
    c = c + d;
    d = c - d;
    c = c - d;
 
    cout << "values after swapping are : " << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    cout << "c = " << c << endl;
    cout << "d = " << d << endl;
}
 
// Driver code
int main()
{
    // initialising variables
    int a = 1;
    int b = 2;
    int c = 3;
    int d = 4;
 
    cout << "Values before swapping are :" << endl;
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    cout << "c = " << c << endl;
    cout << "d = " << d << endl << endl;
 
    // Function call
    swap(a, b, c, d);
 
    return 0;
}


Java
// Java program to swap 4 variables
// without using temporary variable.
class GFG {
 
    static void swap(int a, int b, int c, int d)
    {
 
        // swapping a and b variables
        a = a + b;
        b = a - b;
        a = a - b;
 
        // swapping b and c variables
        b = b + c;
        c = b - c;
        b = b - c;
 
        // swapping c and d variables
        c = c + d;
        d = c - d;
        c = c - d;
 
        System.out.println("values after "
                           + "swapping are : ");
        System.out.println("a = " + a);
        System.out.println("b = " + b);
        System.out.println("c = " + c);
        System.out.println("d = " + d);
    }
 
    // Driver code
    public static void main(String[] args)
    {
 
        // initialising variables
        int a = 1;
        int b = 2;
        int c = 3;
        int d = 4;
 
        System.out.println("values before "
                           + "swapping are : ");
        System.out.println("a = " + a);
        System.out.println("b = " + b);
        System.out.println("c = " + c);
        System.out.println("d = " + d);
        System.out.println("");
       
        // Function call
        swap(a, b, c, d);
    }
}
 
// This code is contributed by Smitha.


Python3
# Python 3 program to swap 4 variables
# without using temporary variable.
 
 
def swap(a, b, c, d):
 
    # swapping a and b variables
    a = a + b
    b = a - b
    a = a - b
 
    # swapping b and c variables
    b = b + c
    c = b - c
    b = b - c
 
    # swapping c and d variables
    c = c + d
    d = c - d
    c = c - d
 
    print("values after swapping are : ")
    print("a = ", a)
    print("b = ", b)
    print("c = ", c)
    print("d = ", d)
 
 
# Driver code
 
# initialising variables
a = 1
b = 2
c = 3
d = 4
 
print("values before swapping are : ")
print("a = ", a)
print("b = ", b)
print("c = ", c)
print("d = ", d)
print("")
 
# Function call
swap(a, b, c, d)
 
# This code is contributed by Smitha.


C#
// C# program to swap 4 variables
// without using temporary variable.
using System;
 
class GFG {
 
    static void swap(int a, int b, int c, int d)
    {
        // swapping a and b variables
        a = a + b;
        b = a - b;
        a = a - b;
 
        // swapping b and c variables
        b = b + c;
        c = b - c;
        b = b - c;
 
        // swapping c and d variables
        c = c + d;
        d = c - d;
        c = c - d;
 
        Console.WriteLine("values after "
                          + "swapping are : ");
        Console.WriteLine("a = " + a);
        Console.WriteLine("b = " + b);
        Console.WriteLine("c = " + c);
        Console.WriteLine("d = " + d);
    }
 
    // Driver Code
    public static void Main()
    {
 
        // initialising variables
        int a = 1;
        int b = 2;
        int c = 3;
        int d = 4;
 
        Console.WriteLine("values before "
                          + "swapping are : ");
        Console.WriteLine("a = " + a);
        Console.WriteLine("b = " + b);
        Console.WriteLine("c = " + c);
        Console.WriteLine("d = " + d);
        Console.WriteLine("");
       
        // Function call
        swap(a, b, c, d);
    }
}
 
// This code is contributed by Smitha.


PHP


输出
Values before swapping are :
a = 1
b = 2
c = 3
d = 4

values after swapping are : 
a = 2
b = 3
c = 4
d = 1