交换两个变量数据的四个方法(不引入第三个变量对数据进行交换)

1.引入第三个变量进行交换的方法

分析:此方法比较简单,只需要利用第三个变量对其余两个变量中的数据进行交换。

优点:运行速度快,简单,便于分析以及计算

代码如下:

#include<stdio.h>
int main()
{
	int a, b, c;
	scanf_s("%d %d", &a, &b);
	c = a;
	a = b;
	b = c;
	printf("a=%d b=%d", a, b);
	return 0;
}

运行结果如下:

2.利用函数进行变量的数数据交换

分析:利用函数和指针的基础知识对两个变量进行交换

优点:此代码在计算机当中运行也比较快,但是相对于1来说不够简洁易于理解

代码如下:

#include<stdio.h>
void change(int* a, int* b)
{
	int c;
	c = *a;
	*a = *b;
	*b = c;
}
int main()
{
	int a, b, c;
	scanf_s("%d %d", &a, &b);
	change(&a, &b);
	printf("a=%d b=%d", a, b);
	return 0;
}

代码运行结果:

3.不引入第三个变量,对两个变量当中的数据进行交换

代码分析:利用数学的思维对代码巧妙的运算

优点:不引入第三个变量

缺点:a+b可能会导致超出数据范围,因此此方法虽然可以不引入第三个变量,只能对不是很大的数进行操作,此方法也有一定的思维难度

代码如下:

#include<stdio.h>
int main()
{
	int a, b;
	scanf_s("%d %d", &a, &b);
	a = a + b;
	b = a - b;
	a = a - b;
	printf("a=%d b=%d", a, b);
	return 0;
}

代码运行结果如下:

4.不引入第三个变量,利用按位异或进行变量的交换(^)

代码分析:此方法利用^对变量进行交换

优点:此方法不用考虑数据溢出的问题,便于操作

缺点:计算机运行速度较慢,思维难度较高

代码如下:

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

对于^符号(按位异或)的简单分析

c=a^b计算过程:对a转换成2进制代码(32个比特位),将b转换成2进制代码(32个比特位),对两者进行比较,相同取0,不同取1,得到c的二进制代码,即可得到c的数据。

可简单推导出以下结果:a^a=0   0^a=a

运行结果如下:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值