題目要求:將數a、b的值進行交換,并且不使用任何中間變量。
程序如下:
#include<stdio.h>void swapValue1(int &a, int &b) //使用中間變量交換數據{ int temp = a; a = b; b = temp;}void swapValue2(int &a, int &b)//使用加減運算完成數據交換{ a = a + b; b = a - b; a = a - b; }void swapValue3(int &a, int &b) //使用位運算交換數據{ a^=b; b^=a; a^=b;}int main(){ int a1 = 1, b1 = 2; int a2 = 3, b2 = 4; int a3 = 5, b3 = 6; swapValue1(a1, b1); swapValue2(a2, b2); swapValue3(a3, b3); printf("a= %d b= %d/n",a1, b1); printf("a= %d b= %d/n",a2, b2); printf("a= %d b= %d/n",a3, b3); return 0;}
運行結果:
解析:
第一種:使用中間變量來達到交換數據的目的,這是最大眾的方法,當然了不滿足本題的要求。
第二種:
使用簡單的加減操作來達到交換a、b值得目的。
缺點:a+b和a-b時,可能會到導致數據溢出。
第三種:
采用位運算的方法,按位異或運算。(建議采用這種方式)
異或運算:相同的二進制位異或運算為0,不相同的二進制位異或運算為1。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答