输入两个整数a,b,交换两者的值,然后输出。
样例输入:
824 16
样例输出:
16 824
1.增加零时变量temp,交换a,b值
1 #include<stdio.h> 2 int main() 3 { 4 int a,b,temp; 5 scanf("%d%d",&a,&b); 6 temp=b; 7 b=a; 8 a=temp; 9 printf("%d %d ",a,b); 10 return 0; 11 }
2.不增加变量,交换a,b值(很少使用:只有定义了加减法的数据类型才能才能采用这种方法)
1 #include<stdio.h> 2 int main() 3 { 4 int a,b; 5 scanf("%d%d",&a,&b); // a的值 b的值 6 a=a+b; // a+b b 7 b=a-b; // a+b a 8 a=a-b; // b a 9 printf("%d %d ",a,b); 10 return 0; 11 }
3.最简单的方法--直接交换a,b输出位置
1 #include<stdio.h> 2 int main() 3 { 4 int a,b; 5 scanf("%d%d",&a,&b); 6 printf("%d %d ",b,a); 7 return 0; 8 }
//在算法竞赛中是在比谁能更好的解决问题,而不是比谁写的程序看上去更高级
4.用异或运算
1 #include<stdio.h> 2 int main() 3 { 4 int a,b; 5 scanf("%d%d",&a,&b); 6 a^=b^=a^=b;
/*
a^=b^=a^=b;是
{
a^=b;
b^=a;
a^=b;
}
的简写
^异或运算:二进制比较,相同为0,不同为1;
假设
a=10100111
b=00000110
a=a^b; a=10100001
b=b^a; b=10100110
a=a^b; a=00000110
可以看到此时,ab的值已经交换
*/ 7 printf("%d %d ",a,b); 8 return 0; 9 }