C语言4种实现两变量值互换的方法

(一)创建临时变量

首先最直观最简单实现两变量值互换的方法是创建临时变量,把其中一个值放在临时变量中去,最后再放回来。

#define  _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;//创建临时变量c,用于存放a,b中的一个值
	scanf("%d%d", &a, &b);
	c = a;//把a赋值给c
	a = b;//将b赋值给a,此时a的值已经被覆盖,但我们有保存a的值的临时变量c
	b = c;//最后将c赋值给b,其实也就是原本的a赋值给b。这是方法一
	printf("%d %d\n", a, b);
	return 0;
}

C语言4种实现两变量值互换的方法_第1张图片(二)运用位运算符^

按位异或的特点是一个数按位异或自己为零,一个数按位异或零还为自己。即a^0==a,a^a==0。我们可以利用这个特点来进行变量值的互换

define  _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;//创建临时变量c,用于存放a,b中的一个值
	scanf("%d%d", &a, &b);
	//方法二
	a = a ^ b;
	b = a ^ b;//此时b==a^b^b。 其中b^b==0    然后0^a ==a;
	a = b ^ a;//同样的道理a=a^b^a  其中a^a==0  然后0^b==a
	printf("%d %d\n", a, b);
	return 0;
}

C语言4种实现两变量值互换的方法_第2张图片

(三)不使用临时变量的加减法

与方法二一样的原理,利用加减法的运算

define  _CRT_SECURE_NO_WARNINGS 1
#include
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;//创建临时变量c,用于存放a,b中的一个值
	scanf("%d%d", &a, &b);
	//方法三
	a = a + b;
	b = a - b;//b = a+b-b 此时b==a
	a = a - b;//a== a + b- (a+b-b)
	printf("%d %d", a, b);
	return 0;
}

C语言4种实现两变量值互换的方法_第3张图片

(四)通过子函数运用地址

主函数传参数并不是把实际的值,即实参,传到子函数去。而是相当于复制粘贴,赋给了新的一模一样的值,即形参。这两个值的地址并不相同。所以一般如果不用地址,我们难以修改主函数的变量的值。

#define  _CRT_SECURE_NO_WARNINGS 1
#include
void Change_number(int* pa,int* pb)
{
	int c = 0;
	c = *(pa);//解引用pa的地址,将pa指向的值a赋值给c
	*(pa) = *(pb);//跟方法一同理,解引用pb的地址,将pb指向的值b赋值a
	*(pb) = c;//最后再将存在a的值的c赋值给b
}
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;//创建临时变量c,用于存放a,b中的一个值
	scanf("%d%d", &a, &b);
	//方法四
	Change_number(&a, &b);
	printf("%d %d", a, b);//然后打印a,b的值
	return 0;
}
C语言4种实现两变量值互换的方法_第4张图片(五)作者想说的话

建议多多思考这四个方法的原理,由来。然后自己动手敲一遍代码,这样才算学会。我是しかし,我们下次再见!

你可能感兴趣的:(c语言,算法,开发语言,经验分享)