输入两个整数a,b,交换两者的值,然后输出。
样例输入:824 16样例输出:16 8241.增加零时变量temp,交换a,b值
1 #include2 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\n",a,b);10 return 0;11 }
2.不增加变量,交换a,b值(很少使用:只有定义了加减法的数据类型才能才能采用这种方法)
1 #include2 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\n",a,b);10 return 0;11 }
3.最简单的方法--直接交换a,b输出位置
1 #include2 int main()3 {4 int a,b;5 scanf("%d%d",&a,&b);6 printf("%d %d\n",b,a);7 return 0;8 } //在算法竞赛中是在比谁能更好的解决问题,而不是比谁写的程序看上去更高级
4.用异或运算
1 #include2 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\n",a,b);8 return 0;9 }