交换俩数的三种方法

Posted z啵唧啵唧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交换俩数的三种方法相关的知识,希望对你有一定的参考价值。


注重看交换方法中不同的交换做法

1.临时变量法

#include<stdio.h>
#include<Windows.h>
#pragma warning(disable:4996)

void Exchange_num(int *px,int *py)//只有用指针作为函数的参数才能在函数中直接修改函数外的变量。
{
	int temp = 0;//定义一个临时变量,用作保存一个中间值
	temp = *px;
	*px = *py;
	*py = temp;
}

int main()
{
	int x = 0;
	int y = 0;
	printf("请输入两个你想交换的数");
	scanf("%d %d", &x, &y);
	printf("交换前:x=%d   y=%d\\n", x, y);
	Exchange_num(&x, &y);
	printf("交换后:x=%d   y=%d\\n", x, y);
	system("pause");
	return 0;
}

运行结果:
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210527164640792.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTgwOTgyOQ==,size_16,color_FFFFFF,t_70
注:如果没有temp保存中间变量的话,x已经变化,丧失原有数据,y不可能再变成x。

2.按位异或交换法

#include<stdio.h>
#include<Windows.h>
#pragma warning(disable:4996)

void Exchange_num(int *px,int *py)
{
	*px ^= *py;
	*py ^= *px;
	*px ^= *py;
}

int main()
{
	int x = 0;
	int y = 0;
	printf("请输入两个你想交换的数");
	scanf("%d %d", &x, &y);
	printf("交换前:x=%d   y=%d\\n", x, y);
	Exchange_num(&x, &y);
	printf("交换后:x=%d   y=%d\\n", x, y);
	system("pause");
	return 0;
}

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

3.加减交换法

#include<stdio.h>
#include<Windows.h>
#pragma warning(disable:4996)

void Exchange_num(int *px,int *py)
{
	*px = *px + *py;
	*py = *px - *py;
	*px = *px - *py;
}

int main()
{
	int x = 0;
	int y = 0;
	printf("请输入两个你想交换的数");
	scanf("%d %d", &x, &y);
	printf("交换前:x=%d   y=%d\\n", x, y);
	Exchange_num(&x, &y);
	printf("交换后:x=%d   y=%d\\n", x, y);
	system("pause");
	return 0;
}

运行结果:
在这里插入图片描述
在这里插入图片描述
怎么样是不是感觉很简单呢!!!
在这里插入图片描述

以上是关于交换俩数的三种方法的主要内容,如果未能解决你的问题,请参考以下文章

三种传值方式遇上两个数的交换

求俩数的平均值(不用公式)

实现两个变量的值交换的三种方法(两种方法不使用中间变量)

JS实现斐波那契列数的三种方法

交换两个整数的三种方法

拼图游戏中逆序数的实现的三种方式