C语言交换两个变量值的方法,详细讲解

不管在学习哪门语言,都会遇到交换两个变量的这种问题,而且在面试测试题中也经常提到。既然出现的频率这么高,那我们今天就来讲讲交换两个变量常用的几种方法。

今天主要是基于C语言写的代码,不管哪种语言写的,应该核心思想是一样的,只是代码的语法有差别仅此而已,我们不要为了写代码而写代码。

下面正式开始我们的主题:交换两个变量的值。

一、使用中间变量的情况下,交换两个变量。

这种方法的主要核心思想就是交换两个变量时,用一个中间变量作为桥梁。比如:有两杯不同颜色的水,我们要交换两个杯里面的水,是不是需要用到一个空杯来做转接的作用,不可能不借用其他工具,直接交换两杯水。所以我们围绕这个思想去写代码就很容易了。

下面代码展示:

objectivec 复制代码
int a = 10;
int b = 20;
int c = 0;   //中间变量,用于转接的作用
printf("交换前:a = %d, b = %d\n",a,b);
c = a;   //将a变量的值给变量c
a = b;  //将b变量的值给变量a
b = c;  //将c变量的值给变量b
printf("交换后:a = %d, b = %d\n", a, b);

这种方法是交换两个变量最常用也是最简单的方法。如果我们自己写逻辑代码需要交换两个变量就可以使用这种方法。

但是,,,,天理不饶人,面试中往往不给你出这么简单的题,他们题的要求就是不需要中间变量来做转接,直接交换两个变量的值,这样也挺好的,又节省了一个变量大小的空间,主打一个节省之王(哈哈哈哈哈)。为了铁子们在找工作的过程中,如果遇到这种题之后知道该如何面对,能快速写完代码。

二、不使用中间变量的情况下,交换两个变量。

来到了在找工作过程中,最容易出现的笔试题。这种题唯一的好处就是节省内存空间,看着牛逼一点点。如果是为了易于阅读的话,还是上面哪种方法更好。

不使用中间变量交换两个变量,在C语言中有三种方法可以实现,下面就来一一讲解,铁子们理解一种就欧克咯。

1、方法一

这种方法的核心思想就是对两个变量的二进制进行操作,对二进制进行一系列的运算之后,就能达到交换两个变量的值。

objectivec 复制代码
int a = 10;
int b = 20;
printf("交换前:a = %d, b = %d\n",a,b);
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("交换后:a = %d, b = %d\n", a, b);

为什么将两个变量异或来异或去,就可以交换两个变量的值呢,这主要是用到了异或这个操作符的特性,下面就画图给铁子们讲解一下。

2、方法二

这种方法的核心思想就是用两个变量的值进行加减的方法达到交换两个值的目的。

objectivec 复制代码
 int a = 10;
 int b = 20;
 printf("交换前:a = %d, b = %d\n", a, b);
 a = a + b;
 b = a - b;
 a = a - b;
 printf("交换后:a = %d, b = %d\n", a, b);

方法二还是比较简单的,这个不用画图大家也能懂。以后你们都是代码界的一把手。

总结:

我写这篇博客的意义是怕我的铁子们以后在找工作的过程中遇到这类题目了不知从何下手,因为我也经历过,当时第一反应就是使用中间变量交换两个变量,不知道还有其他不用中间变量就可以交换的方法。所以不想让我的铁子们去踩我踩过的坑。大家主要了解实现的思想,只要思想到位,代码不就唰唰唰的来了。

谢谢铁子们~

相关推荐
代码雕刻家2 小时前
数据结构-3.9.栈在递归中的应用
c语言·数据结构·算法
吾爱星辰3 小时前
Kotlin 处理字符串和正则表达式(二十一)
java·开发语言·jvm·正则表达式·kotlin
ChinaDragonDreamer3 小时前
Kotlin:2.0.20 的新特性
android·开发语言·kotlin
IT良3 小时前
c#增删改查 (数据操作的基础)
开发语言·c#
Kalika0-04 小时前
猴子吃桃-C语言
c语言·开发语言·数据结构·算法
_.Switch4 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
代码雕刻家4 小时前
课设实验-数据结构-单链表-文教文化用品品牌
c语言·开发语言·数据结构
一个闪现必杀技4 小时前
Python入门--函数
开发语言·python·青少年编程·pycharm
Fan_web4 小时前
jQuery——事件委托
开发语言·前端·javascript·css·jquery
龙图:会赢的4 小时前
[C语言]--编译和链接
c语言·开发语言