1. 程式人生 > >C語言 數值交換的三種方法

C語言 數值交換的三種方法

一、程式設計思想

(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;
}