1-3*交换变量

输入两个整数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\n",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\n",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\n",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\n",a,b); 8 return 0; 9 }

 

posted @ 2018-11-18 13:56  xiaomi_zhou  阅读(160)  评论(0编辑  收藏  举报