1. 程式人生 > >c語言----交換a,b的值(分別用臨時變數,加減法,異或實現)

c語言----交換a,b的值(分別用臨時變數,加減法,異或實現)

1.藉助臨時變數

</pre><pre name="code" class="objc">#include <stdio.h>
int main()
{
  int a=0;
  int b=0;
  printf("please enter (a,b)");
  scanf("%d%d",&a,&b);
  printf("before:a=%d b=%d \n",a,b);
  a=a+b;
  b=a-b;//b=a+b-b=a
  a=a-b;//a=a+b-a=b
  printf("after:a=%d b=%d",a,b);
  return 0;
}
2.加法實現
#include <stdio.h>
int main()
{
  int a=0;
  int b=0;
  printf("please enter (a,b)");
  scanf("%d%d",&a,&b);
  printf("before:a=%d b=%d \n",a,b);
  a=a+b;
  b=a-b;//b=a+b-b=a
  a=a-b;//a=a+b-a=b
  printf("after:a=%d b=%d",a,b);
  return 0;
}

3.異或實現

異或:兩個值不相等時結果為真。如:1^1=0 

                                                       1^0=1

                                                       0^0=0

                                                       0^1=1

            則 1^0^1=0 得出一個結論:相同數異或會抵消。這也是實現兩個數交換的依據。

#include <stdio.h>
int main()
{
  int a=0;
  int b=0;
  printf("please enter (a,b)");
  scanf("%d%d",&a,&b);
  printf("before:a=%d b=%d \n",a,b);
  a=a^b;
  b=a^b;//b=a^(b^b)=a
  a=a^b;//a=(a^a)^b=b
  printf("after:a=%d b=%d",a,b);
  return 0;
}