【刷点笔试面试题试试水】不使用任何中间变量如何将a、b的值进行交换?

大家好,这里是国中之林!
❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←

问题:

解答:

cpp 复制代码
#include <iostream>
using namespace std;

void swap1(int& a, int& b)
{
	int temp = a;
	a = b;
	b = temp;
}

void swap2(int& a, int& b)
{
	a = a + b;
	b = a - b;
	a = a - b;
}

void swap3(int& a, int& b)
{
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
}

int main()
{
	int a1 = 1, b1 = 2;
	int a2 = 3, b2 = 4;
	int a3 = 5, b3 = 6;
	int a = 2147483647, b = 1;

	swap1(a1, b1);
	swap2(a2, b2);
	swap3(a3, b3);

	printf("after swap. . .\n");
	printf("a1 = %d,b1 = %d\n", a1, b1);
	printf("a2 = %d,b2 = %d\n", a2,b2); 
	printf("a3 = %d,b3 = %d\n", a3, b3); 
	
	swap2(a,b);
	printf("a = %d,b = %d\n", a, b);


	return 0;
}

运行结果:

注意:

  • 方法二可能会溢出,所以方式三是最佳解.

记下来吧...

相关推荐
van久2 分钟前
.NET Core 学习第三天:Razor Pages 联表查询
学习·.netcore
逆小舟12 分钟前
【STM32】第四周学习问题汇总
学习
无限进步_13 分钟前
C语言文件操作函数解析
c语言·开发语言·数据库·c++·后端·visual studio
qq_4017808230 分钟前
2.信号 完整性(信号上升时间与带宽)
学习
车载测试工程师31 分钟前
CAPL学习-ETH功能函数-方法类3
学习·tcp/ip·以太网·capl·canoe
风掣长空32 分钟前
【LeetCode】面试经典150题:合并两个有序数组
算法·leetcode·面试
im_AMBER35 分钟前
Leetcode 69 正整数和负整数的最大计数
数据结构·笔记·学习·算法·leetcode
richxu2025100138 分钟前
嵌入式学习之路>单片机核心原理篇>(5)串口通信核心原理
单片机·嵌入式硬件·学习
sponge'39 分钟前
opencv学习笔记12:GAN网络
笔记·opencv·学习
_OP_CHEN41 分钟前
【算法基础篇】(二十六)数据结构封神!Trie 树从入门到爆杀算法题:拼音输入法、单词统计都靠它
数据结构·c++·算法·蓝桥杯·trie树·算法竞赛·acm/icpc