1.创建临时变量来交换
#include<stdio.h>
#include<windows.h>
#pragma warning (disable:4996)
void Swap(int* x, int* y)
{
//交换两个整数的内容
int temp = 0;
temp = *x;
*x = *y;
*y = temp;
}
int main()
{
int num1 = 0, num2 = 0;
scanf("%d %d", &num1, &num2);
printf("交换前:%d %d\n", num1, num2);
Swap(&num1, &num2);
printf("交换后:%d %d\n", num1, num2);
system("pause");
return 0;
}
//运行环境:vs2019
附图:
2.不创建临时变量交换(按位异或)
利用按位异或相同为假,不同为真的性质,即:(0^0=0)、 (0^1=1)、 (1^0=1)、 (1^1=0)。例如: 10^ 20 ^10=20可以看成是 (10 ^ 10)^20= 0^20=20。
上代码:
#include<stdio.h>
#include<windows.h>
#pragma warning (disable:4996)
void Swap(int* x, int* y)
{
//交换两个变量(不创建临时变量)
*x = (*x^*y);
*y = (*y^*x);
*x = (*x^*y);
}
int main()
{
int num1 = 0, num2 = 0;
scanf("%d %d", &num1, &num2);
printf("交换前:%d %d\n", num1, num2);
Swap(&num1, &num2);
printf("交换后:%d %d\n", num1, num2);
system("pause");
return 0;
}
//运行环境:vs2019
附图: