不借助多余参数也可交换两个参数(c++,swap函数)

0
10

借助a^a=0异或属性

【示例代码1——swap函数调用】

#include<stdio.h>
void swap(int &a,int &b){
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
}
int main(){
	int a = 1;
	int b = 2;
	swap(a, b);
	printf("a,b=%d,%d",a,b);
	return 0;
} 

【运行结果】

【示例代码2——冒泡排序】

#include<bits/stdc++.h>
int main()
{
	int arr[10] = {1, 33, 45, 5, 40, 67, 37, 51, 70, 12};
	int i, j;
	for(i=0; i<10; i++){
		for(j=i+1; j<10; j++){
			if(arr[i] > arr[j]){
				arr[i] = arr[i] ^ arr[j];
				arr[j] = arr[i] ^ arr[j];
				arr[i] = arr[i] ^ arr[j];
			}
		}
	}
	for(i = 0;i < 10; i++){
		printf(" %d",arr[i]);
	}
	printf("\n");
	return 0;	
}

【小栗子】

常可以做一个简单的加密工具!

1)文件A

2)卖家使用密钥加密文件A: A^X

3)买家收到加密文件A^X与密钥X

4)买家解密文件A: A^X ^X=A

<

发布回复

请输入评论!
请输入你的名字