一。给定两个整形变量的值,将两个值的内容交换
第一种境界:借用第三个变量
#include<stdio.h>
int main(){
int a = 10, b = 20, c = 0;
c = a; a = b; b = c;
printf("%d %d", a, b);
system("pause");
}
第二种境界:利用指针,借助第三个变量。
#include<stdio.h>
int main()
{
int a = 10, b = 50;
int* p1 = &a;
int* p2 = &b;
int t;
t = *p1; *p1 = *p2; *p2 = t;
printf("%d %d", a, b);
system("pause");
}
第三种境界:不用第三种变量,利用逻辑运算 异或
#include<stdio.h>
int main()
{
int a = 10, b = 50;
a = a^b; b = a^b; a = a^b;
printf("%d %d", a, b);system("pause");
}
第四种境界:不用利用第三个变量,利用数值之间存在的加减关系,
#include<stdio.h>
int main()
{
int a = 10, b = 50;
a = a + b; b = a - b; a = a - b;
printf("%d %d", a, b);
system("pause");
}
第五种境界:不用第三个变量,利用数值之间存在的乘除关系
#include<stdio.h>
int main()
{
int a = 10, b = 50;
a = a * b; b = a / b; a = a / b;
printf("%d %d", a, b);
system("pause");
}
注:当数值特别大的时候,加减或者乘除可能会发生溢出,第四,五种境界存在弊端。也可以利用局部变量和全局变量,但是方法思路同上。