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);

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

总结:

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

谢谢铁子们~

相关推荐
幽蓝计划12 分钟前
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
开发语言·harmonyos
伍哥的传说17 分钟前
鸿蒙系统(HarmonyOS)应用开发之实现电子签名效果
开发语言·前端·华为·harmonyos·鸿蒙·鸿蒙系统
小张成长计划..1 小时前
数据结构-栈的实现
开发语言·数据结构
旷世奇才李先生1 小时前
Lua 安装使用教程
开发语言·lua
Zonda要好好学习1 小时前
Python入门Day2
开发语言·python
不良手残2 小时前
IDEA类和方法注释模板设置-保姆教程
java·开发语言
项目題供诗2 小时前
黑马python(二十四)
开发语言·python
就改了2 小时前
JUC小册——公平锁和非公平锁
java·开发语言
小林C语言3 小时前
C语言 | 判断是否为回文数
c语言
一粒沙白猫3 小时前
Java综合练习04
java·开发语言·算法