【刷点笔试面试题试试水】不使用任何中间变量如何将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;
}

运行结果:

注意:

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

记下来吧...

相关推荐
消失的旧时光-194312 分钟前
Android 面试高频:JSON 文件、大数据存储与断电安全(从原理到工程实践)
android·面试·json
yuhaiqiang15 分钟前
被 AI 忽悠后,开始怀念搜索引擎了?
前端·后端·面试
灰色小旋风32 分钟前
力扣13 罗马数字转整数
数据结构·c++·算法·leetcode
2301_8101609536 分钟前
C++与物联网开发
开发语言·c++·算法
li星野39 分钟前
[特殊字符] Linux/嵌入式Linux面试模拟卷
linux·运维·面试
cm65432040 分钟前
基于C++的操作系统开发
开发语言·c++·算法
ArturiaZ43 分钟前
【day57】
开发语言·c++·算法
观书喜夜长1 小时前
大模型应用开发学习-基于 LangChain 框架实现的交互式问答脚本
python·学习
2401_874732531 小时前
C++并发编程中的死锁避免
开发语言·c++·算法
2301_792308251 小时前
C++编译期数学计算
开发语言·c++·算法