C语言面试题 两个数字的交换方式
例如 a=3,b=5;交换顺序为a=5,b
//第一种方式—引入第三种变量
int mian()
{
int a =3;
int b =5;
int tem =0;
tem = a;
a = b;
b = tem;
printf("a=%d,b=%d",a,b)
return 0;
}
//第二种不使用第三个变量的方式
int main()
{
//采用加减法
int a =3;
int b =5;
a = a + b;
b = a - b;
a = a - b;
printf("a=%d,b=%d",a,b)
return 0;
}
//加减法,有适用范围,假如两个整形数字之和超出int 整型存储范围之和就会导致数字在内存中存储的部分二进制位丢失,故算法有缺陷;不过本题中数字小没影响
//第三种不使用第三个变量的方式
int main()
{
//采用按位异或法^
int a =3;
int b =5;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a=%d,b=%d",a,b)
return 0;
}