两个变量数值的交换

提示:
本文由@睡觉待开机原创,转载请通知,谢谢!
本内容在csdn网站首发,我的主页@[睡觉待开机]–点来看一下咯~
欢迎各位点赞—评论—收藏
如果存在不足之处请评论留言,共同进步!


前言

提示:这里可以添加本文要记录的大概内容:

两个变量的数值交换在我们编程时大量使用,下面我来介绍几种两个变量数值的交换思路,以丰富思路~


提示:以下是本篇文章正文内容,下面案例可供参考

一、数值交换的一般常用方法?

两个变量的数值交换一般方法很简单,借助第三个变量即可完成交换,这里简单提一下,不再赘述:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int num1 = 0;
	int num2 = 0;
	int temp = 0;
	printf("请依次输入num1和num2的数值:>\n");
	scanf("%d %d", &num1, &num2);
	printf("下面是交换前的各数字数值:>\n");
	printf("num1 = %d;\n", num1);
	printf("num2 = %d;\n", num2);
	printf("temp = %d;\n", temp);
	temp = num1;
	num1 = num2;
	num2 = temp;
	printf("下面是交换后的各数字数值:>\n");
	printf("num1 = %d;\n", num1);
	printf("num2 = %d;\n", num2);
	printf("temp = %d;\n", temp);
	return 0;
}

运算结果:
在这里插入图片描述

二、不借助第三个变量交换两个变量的数值内容:

1.数学方法:

我们可以利用数学的代数运算规律加以实现不借助第三个变量的情况下实现两个变量的数值交换:
代码如下(示例):

int main()
{
	int num1 = 0;
	int num2 = 0;
	printf("请依次输入num1和num2的数值:>\n");
	scanf("%d %d", &num1, &num2);
	printf("下面是交换前的各数字数值:>\n");
	printf("num1 = %d;\n", num1);
	printf("num2 = %d;\n", num2);
	//数值交换的代数运算方法:
	num1 = num1 + num2;
	num2 = num1 - num2;
	num1 = num1 - num2;
	printf("下面是交换后的各数字数值:>\n");
	printf("num1 = %d;\n", num1);
	printf("num2 = %d;\n", num2);
	return 0;
}

运算结果以及重点:
在这里插入图片描述

2.借助二进制位操作符------->按位异或:“^”

先来普及一下按位异或操作符的运算性质,它本质上是对数字的二进制形式进行操作,我们平时使用的是十进制数字,存储到计算机里的是二级制,而位操作符之一的按位异或操作符是对一个数的二进制形式进行操作

我们这里为了方便只讲正整数的情况:
比如一个十进制数字---------->二进制形式:
0----------->0;
5----------->101;
6----------->110;
而计算机为了存储方便,把不够32位2进制的数字前面默认补为0;
0----------->00000000000000000000000000000000;
5----------->00000000000000000000000000000101;
6----------->00000000000000000000000000000110;
按位异或的运算性质:两个二进制数字,有0或者1,如果同为1(或0)计算结果为0,不同为1
由于按位异或的这个运算规律,我们可以发现以下按位异或的运算规律:
在这里插入图片描述
在这里插入图片描述
根据上面异或操作符的运算规律,我们可以利用其两个结论得到如下代码来实现两个变量的数字不借助第三变量的情况下进行交换:

`int main()
{
	int num1 = 0;
	int num2 = 0;
	printf("请依次输入num1和num2的数值:>\n");
	scanf("%d %d", &num1, &num2);
	printf("下面是交换前的各数字数值:>\n");
	printf("num1 = %d;\n", num1);
	printf("num2 = %d;\n", num2);
	//数值交换的代数运算方法:
	num1 = num1 ^ num2;
	num2 = num1 ^ num2;
	num1 = num1 ^ num2;
	printf("下面是交换后的各数字数值:>\n");
	printf("num1 = %d;\n", num1);
	printf("num2 = %d;\n", num2);
	return 0;
}`

运行结果:
在这里插入图片描述

总结

在两个变量需要交换时候,我们通常可以使用借助第三个变量的方法来实现交换,在本文中也介绍了其他两种方法:代数运算法,异或操作法,可以用来不借助第三个变量也可以实现两个数字内容的交换。
这有利于拓展我们解决类似问题的思路和视野,利于我们的进步!

期待同学们的点赞收藏转发,如果存在疑问或者错误,请评论区留言,谢谢!!!

### 回答1: 可以使用以下代码实现两个整型变量数值交换: ``` void swap(int &a, int &b) { int temp = a; a = b; b = temp; } ``` 调用该函数时,传入两个整型变量的引用即可实现数值交换。例如: ``` int x = 1, y = 2; swap(x, y); // 此时 x 的值为 2,y 的值为 1 ``` ### 回答2: 使用引用实现两个整型变量数值交换可以通过以下步骤实现: 1. 声明两个整型变量a和b,并初始化它们的值。 `int a = 10;` `int b = 20;` 2. 声明一个引用变量,指向整型变量a。 `int& ref = a;` 3. 通过引用变量ref修改a的值,使其等于b的值。 `ref = b;` 4. 将引用变量ref修改为指向整型变量b。 `ref = b;` 5. 最后,两个整型变量a和b的值已经交换成功。 完整代码如下: ```cpp #include <iostream> int main() { int a = 10; int b = 20; int& ref = a; ref = b; std::cout << "a = " << a << std::endl; std::cout << "b = " << b << std::endl; return 0; } ``` 输出结果: ``` a = 20 b = 20 ``` 通过引用变量的赋值操作,a的值已经被修改为b的值,实现了两个整型变量数值交换。 ### 回答3: 使用引用可以实现两个整型变量数值交换交换过程如下: 1. 首先定义两个整型变量a和b,并初始化它们的值。 2. 创建一个引用类型变量ref,将其绑定到变量a。 3. 将变量b的值赋给ref,此时ref和a的值都变为b的值。 4. 将变量a的值赋给变量b,此时b的值就变为a的值。 5. 经过上述步骤,a和b的值已经完成了交换。 下面是代码示例: ```cpp int a = 10; int b = 20; int& ref = a; ref = b; b = ref; ``` 经过上述代码的执行,a的值变为20,b的值变为10,实现了两个整型变量数值交换。 使用引用进行变量交换的优势在于不需要额外的中间变量,同时代码更简洁清晰。在实际编程中,可以根据需要进行变量交换,方便灵活。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值