c语言-C语言中两个变量的值互换问题

问题描述

C语言中两个变量的值互换问题

两个变量的值互换为什么不能直接用 a=b;b=a;来实现。

解决方案

如gcwlwl7所说的
a=1 ,b=2 要变成a=2 b=1的话
用所列举的两个等式为
先a=b=2,此时a已经变成2了,
再b=a=2,b仍然等于2(a在上面已经变成2了。所以b=a即是b=2)

不过有种方法:
a=1;
b=2;
a=a+b=3; (1+2)
b=a-b=1; (3-2)
a=a-b=2; (3-1)

即最后就得到 a=2;b=1啦
这个是不要用到中间变量的方法

希望有用

解决方案二:

就像gcwlwl7说的,b将值赋予a后,执行b=a,相当于b的值木有变化。

解决方案三:

执行a=b后,a中的值就被b中的值取代了,a原来的值就消失了。
再执行b=a时,b中的值被a中的值取代了,但此时a中的值已经不是最初的值了,而是上次执行a=b后b的值了。
因此无法实现两个值的互换。
可以参考下列代码:
t=a;a=b;b=t;

解决方案四:

楼主 这是基础的东西
相当于找一个公共的容器

解决方案五:

注意值会被覆盖,所以添加一个中间变量把其中一个值先储存起来!
a=1,b=2,c=0;(中间变量)
c=a;a=b;b=c;

解决方案六:

a=b是,a的值就被修改掉了,再b=a,已经没有意义了。

时间: 2024-08-22 14:26:47

c语言-C语言中两个变量的值互换问题的相关文章

PHP不用第三个变量交换两个变量的值的方法总结

"PHP不用第三个变量交换两个变量的值"这个题看到过好多次了,看来面试确实喜欢考这道题.今天,对于这个题目,我自己总结了几种方法,可能不全,大家来互相补充. 方法一:使用字符串截取 <?php $a = "fsdfds"; $b = "xiaorui"; $a = $a.$b; $b = substr($a,0,strlen($a)-strlen($b)); $a = substr($a,strlen($b)); echo $a."

[叩响C#之门]第2章 变量 2.8 深化练习:交换两个变量的值

2.8 深化练习:交换两个变量的值 好了,现在对你所学的知识作一下检验,请思考下面的问题. 已知a=2,b=5,交换a,b的值. 分析:请看下面的程序能否达到目的.

java如何交换这两个变量的值方法介绍_java

1.借助中间量交换 int x = 10; int y = 20; int temp = x; x = y; y = temp; 此种方法可以将中间量看成空杯,即把temp看成是空杯, 把x看成是装有白酒的杯子,把y看成是装有红酒的杯子 int temp = x; 把白酒倒到空杯中,此时temp装有白酒,x变成空杯 x = y; 把y中的红酒倒到x空杯中,此时x装有红酒,y变成空杯 y = temp; 把白酒倒到y空杯中,此时x装有红酒,y装有白酒,实现x和y的互换 2.数值相加减交换 int

as 交换两个变量的值,不用中间变量

var a:int=1; var b:int=2; a = a^b; trace(a);//3 b = a^b; a = a^b; trace(a);//2 trace(b);//1 只能是数值类型的,字符串就不能这样了.  

不使用中间变量,交换int型的 a, b两个变量的值。_javascript技巧

复制代码 代码如下: //by ppchen var a = 10, b = 2; a = a + b; b = a - b; a = a - b; 复制代码 代码如下: //by Mr.司马 var a = 10000,b=245 a = a^b; b = b^a; a = a ^b; 复制代码 代码如下: //by cloudgamer var a = 33,b=44 a=[a,b] b=a[0] a=a[1] 复制代码 代码如下: //by Mr.司马 var a = 23,b=454;

C语言中结构体变量之间赋值

       最近,我阅读了某新员工小刘写的C语言代码,发现其对结构体变量之间的赋值不是很熟悉.对于两个相同类型的结构体变量,他均采用的是逐个成员变量直接赋值的形式.如下的代码示例: /********************************************************************** * 版权所有 (C)2015, Zhou Zhaoxiong. * * 文件名称:Struct2Struct.c * 文件标识:无 * 内容摘要:结构体变量之间的赋值 *

C语言的数据、常量和变量

一.数据 图片文字等都是数据,在计算机中以0和1存储. (一)分类 数据分为静态数据和动态数据. ①. 静态数据:一些永久性的的数据,一般存储在硬盘中,只要硬盘没坏数据都是存在的.一般以文件的形式存储在硬盘上,电脑关机重启后依然存在. ②. 动态数据:程序运行过程中,动态产生的的临时数据,一般存储在内存中,内存的存储空间一般较小,计算机关闭后这些数据就会被清除.软件或者电脑关闭则这些临时数据会被清除. ③. 静态数据和动态数据可以转换. ④. 注意:为什么不把动态数据存放到硬盘?因为直接访问内存

Java中使用异或语句实现两个变量的互换_java

一般实现两个变量之间的互换要用第三个变量,这样做可以,但创建新变量,增加了系统开销.如果要交换的变量时两个整数型变量,可以用更高效的方法.例如:^(异或)操作,举例如下: import java.util.Scanner; public class VariableExchange { public static void main(String args[]){ Scanner scan = new Scanner(System.in); System.out.println("请输入第一个整

Java 交换两个变量的数值实现方法_java

一.参数传递方法 为解决标题问题,首先介绍参数传递方法.目前各类程序设计语言的参数传递方法主要有三种: 1.按值传递 2.按引用传递 3.按指针传递 其中按值传递表示方法(函数)接收的是调用者提供的变量的拷贝,不改变参数的值:按引用传递表示方法(函数)接收的调用者提供的变量地址:按指针传递表示方法(函数)接收的是调用者提供的指针的拷贝,不改变指针的值和地址,但可以改变指针所指向的地址. 二.Java参数传递方法 Java提供的参数传递方法,很遗憾只有一种,按值传递.也就是说,方法得到的是所有参数