C語言 數值交換的三種方法
阿新 • • 發佈:2018-12-17
一、程式設計思想
(1)通過建立第三個變數來交換數值; (2)不建立變數,通過加減的方式交換(PS:如果倆個數值過大,則可能會溢位) (3)不建立變數,通過異或操作符交換(最高效簡潔,不會溢位,是1、2的升級) ——異或的思想 將數值以ASCII碼的形式,按二進位制位異或操作; 例如: num1=3=011(二進位制) num2=5=101
異或 :相同為0,相異為1;
num1–011 num2–101 num 1.1–110 (中間量num1) num1=numi^num2 num 2–101 num 2.2–011 (交換後的num2) num2=num1^num2 num 2.2=011=3
num 1.1–110 num 2.2–011 num 1.1.1–101(交換後的num1) num1.1.1=101=5
二、程式
#include<stdio.h> int main(void) { int num1=0, num2=0, tmp=0; printf("num1=%d,num2=%d\n\n",num1,num2); scanf("%d%d",&num1,&num2); // 方法一:中間變數 tmp=num1; num1=num2; num2=tmp; // 方法二:加減法 num1=num1+num2; num2=num1-num2; num1=num1-num2; // 方法三:異或操作 num1=num1^num2; num2=num1^num2; num1=num1^num2; printf("num1=%d,num2=%d",num1,num2); return 0; }