C 语言交换两个数字的程序

如何编写一个 C 程序使用临时变量和不使用临时变量或第三个变量来交换两个数字?

为了实现此交换两个数字的程序,我们将使用指针、函数、算术、按位运算符和引用传递概念。

使用临时变量交换两个数字的 C 程序

此程序允许用户输入两个整数值。通过使用第三个临时变量,此程序将交换两个数字。

#include <stdio.h>

int main()
{
  int a, b, Temp;
 
  printf("\nPlease Enter the value of a and b\n");
  scanf("%d %d", &a, &b);
 
  printf("\nBefore : a = %d and b = %d\n", a, b);
 
  Temp = a;
  a    = b;
  b    = Temp;
 
  printf("\nAfter   : a = %d and b = %d\n", a, b);
 
  return 0;
}
C Program to Swap Two Numbers using Temp Variable

在此,我们赋值 a = 6,b = 13

Temp = a – 这意味着将 a 的值赋给 Temp 变量
Temp = 6

a = b – 这意味着将 b 的值赋给变量 a
a = 13

b = Temp – 这意味着将 Temp 的值赋给变量 b
b = 6

最后的 C 编程 Printf 语句将输出 a 和 b 的值。

使用指针交换两个数字的 C 程序

此程序允许用户输入两个整数值。此程序使用 指针 概念来交换两个数字。

在此交换两个数字的程序中,前两个语句(i = &a 和 j = &b)将变量 a 和 b 的地址分配给指针变量 i 和 j 的地址。

接下来,在此 程序 中,我们将使用第三个变量 Temp 来交换这两个数字。下面的打印语句,我的意思是第一个将显示变量 a 和 b 中的值。第二个将显示指针变量 i 和 j 中的值

/* Using Pointers */
#include <stdio.h>

int main()
{
  int a, b, *i, *j, Temp;
 
  printf("\nPlease Enter the value of a and b\n");
  scanf("%d %d", &a, &b);
 
  printf("\nBefore Swap: a = %d  b = %d\n", a, b);
  i = &a;
  j = &b;
  
  Temp = *i;
  *i    = *j;
  *j    = Temp;
 
  printf("\nAfter Swapping: a = %d  b = %d\n", a, b);
  printf("\nAfter Swapping: i = %d  j = %d\n", *i, *j);

  return 0;
}
Program to Swap Two Numbers Using Pointers

使用函数交换两个数字的 C 程序

这允许用户输入两个整数值。通过在 函数 中使用值传递概念,此程序将交换两个数字。在函数中,我们使用第三个变量 Temp 来交换两个数字。

#include <stdio.h>
 
void CalSw(int, int);
 
int main()
{
  int A, B;
 
  printf("\nPlease Enter the value of A and B\n");
  scanf("%d %d", &A, &B);
 
  printf("\nBefore : A = %d and A = %d\n", A, B);
 
  CalSw(A, B); 
 
  return 0;
}
 
void CalSw(int A, int B)
{
  int Temp;
 
  Temp = A;
  A = B;
  B = Temp;   
  
  printf("\nAfter : A = %d and B = %d\n", A, B);
}
Program to Swap Two Numbers using Functions

在此示例中,当编译器遇到 CalSw(A, B) 时,编译器将自动跳转到相应的函数。

void CalSw(int A, int B)

此函数的工作过程与上面的程序相同。如果您不理解这些步骤,请参考上面的分析部分。

使用引用传递交换两个数字的 C 程序

此程序允许用户输入两个整数值。通过使用函数引用传递概念(或指针概念),此程序将交换两个数字。在函数中,我们使用第三个变量 Temp。

请参考 传递参数给函数 文章中的 引用传递 示例,以了解其功能。

不使用临时变量交换两个数字的 C 程序

在此程序中,我们不使用临时变量或第三个变量来交换两个数字,而是使用 算术运算符

#include <stdio.h>

int main()
{
  int a, b;
 
  printf("\nPlease Enter the value of a and b\n");
  scanf("%d %d", &a, &b);
 
  printf("\nBefore : a = %d  b = %d\n", a, b);
 
  a = a+b;
  b = a-b; 
  a = a-b;
 
  printf("\nAfter   : a = %d  b = %d\n", a, b);
 
  return 0;
Please Enter the value of a and b
20
10

Before : a = 20  b = 10
After    : a = 10  b = 20

在此不使用第三个变量交换两个数字的示例程序中,用户输入的a = 20,b = 10

a = a+b;
a = 20 + 10 = 30

b = a-b = 30 -10 = 20

a = a-b = 30 – 20 = 10
交换两个数字后的最终值:a = 10,b = 20

注意:虽然我们可以通过乘除法来实现,但当处理较大的整数值或其中任何一个整数值为 0 时,它们可能会产生奇怪的值。

使用按位或运算符交换两个数字的 C 程序

在此程序中,我们不使用临时变量或第三个变量来交换两个数字,而是使用 按位运算符 ^。

/* Using bitwise Or operator */
#include <stdio.h>

int main()
{
  int a, b;
 
  printf("\nPlease Enter the value of a and b\n");
  scanf("%d %d", &a, &b);
 
  printf("\nBefore : a = %d  b = %d\n", a, b);
 
  a = a^b;
  b = a^b; 
  a = a^b;
 
  printf("\nAfter  : a = %d  b = %d\n", a, b);
 
  return 0;
}
Please Enter the value of a and b
8
4

Before : a = 8  b = 4
After    : a = 4  b = 8

在此 程序 中,用户输入的a = 8,b = 4。8 的二进制值为 1000,4 的二进制值为 0010。

a = a^b = 1000 ^ 0010
a = 1010

b = a^b = 1010 ^ 0010
b = 1000

a = a^ b = 1010 ^ 1000
a = 0010

两个数字的最终值:a = 4,b = 8。