如何编写一个 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;
}

在此,我们赋值 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;
}

使用函数交换两个数字的 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);
}

在此示例中,当编译器遇到 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。