解法一(创建第三个变量)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 0, b = 0, c = 0;
scanf("%d %d", &a, &b);
printf("a = %d, b = %d\n", a, b);
c = a;
a = b;
b = c;
printf("a = %d, b = %d", a, b);
return 0;
}
解法二(含指针)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void Swap(int* x, int* y);
int main()
{
int a = 0, b = 0;
scanf("%d %d", &a, &b);
printf("a = %d, b = %d\n", a, b);
Swap(&a, &b); //传地址
printf("a = %d, b = %d", a, b);
return 0;
}
void Swap(int* x, int* y)
{
int z = 0;
z = *x;
*x = *y;
*y = z;
}
解法三(按位异,不创建第三个变量)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 0, b = 0;
scanf("%d %d", &a, &b);
printf("a = %d, b= %d\n", a, b);
a = a ^ b; //a ^ a = 0, a ^ 0 = a
b = a ^ b;
a = a ^ b;
printf("a = %d, b= %d", a, b);
return 0;
}
解法四(不创建第三个变量)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 0, b = 0;
scanf("%d %d", &a, &b);
printf("a = %d, b= %d\n", a, b);
a = a + b;
b = a - b;
a = a - b;
printf("a = %d, b= %d", a, b);
return 0;
}