两个变量值交换的方法

借助其他变量

引入temp暂存其中一方的值

void swap(int &a,int &b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;
}

不借助其他变量

加法

void swap(int &a,int &b)
{
    a=a+b;
    b=a-b;
    a=a-b;
}

缺点:注意加法不要溢出

乘法

void swap(int &a,int &b)
{
    a=a+b;
    b=a-b;
    a=a-b;
}

缺点:注意加法不要溢出

异或

void swap(int &a,int &b)
{
    a=a^b;
    b=a^b;
    a=a^b;
}

优点:无需考虑溢出

原文地址:https://www.cnblogs.com/wwj321/p/12327072.html

时间: 2024-10-29 11:40:21

两个变量值交换的方法的相关文章

<22>【掌握】指针变量概念及定义方法+【理解】两变量值交换的方法+【掌握】总结*使用场合

[掌握]指针变量概念及定义方法 1.指针变量 用来存放地址的变量,就是指针变量 2.指针? 就是地址,地址是个常量 3.指针变量的定义 数据类型 *指针变量名; int *p; //定义了一个指针变量,变量名是p //int表示,p只能存放一个int类型的变量的地址 char *p1; //定义了一个指针变量,变量名是p1 //p1只能存放一个char类型数变量的地址 int num=10; char *p = # //警告 4.指针变量定义的注意事项 1)“*” 必须得有,如果没有就相

C#交换两个变量值的多种写法

在学习.Net/C#或者任何一门面向对象语言的初期,大家都写过交换两个变量值,通常是通过临时变量来实现.本篇使用多种方式实现两个变量值的交换. 假设int x =1; int y = 2;现在交换两个变量的值. 使用临时变量实现 static void Main(string[] args) { int x = 1; int y = 2; Console.WriteLine("x={0},y={1}",x, y); int temp = x; x = y; y = temp; Cons

不借助第三个变量,交换两个变量值的3种方式

今天在我们学校的OJ上做题,一道非常简单的题,突然想试试能不能不借助第三个变量,交换两个变量值.蒙出来一半了已经,好可惜.现在把方法写在这里,希望以后不要忘记. 1 void fun1() 2 { 3 int a = 10, b = 100; 4 5 a = a + b; 6 b = a - b: 7 a = a - b; 8 printf("%d\n%d\n", a, b); 9 } 10 11 void fun2() 12 { 13 int a = 10, b = 100; 14

PHP交换两个变量值

方法一:交换两个变量的最简单方法是使用第三个临时变量 1 <?php 2 $a = 15; 3 $b = 27; 4 // 交换逻辑 5 echo "<br>交换前的数字为:<br>"; 6 echo "a =".$a." 且 b=".$b; 7 $temp = $a; 8 $a = $b; 9 $b = $temp; 10 echo "<br>交换后的数字为: <br>"

不使用临时变量交换两个变量值

题目:不使用临时变量交换两个变量值 分析:使用加.减.乘.亦或(aba==b),四种方法分别如下: //方法一:利用加法 int Swap3(int *x, int *y) { *x = *x + *y;//*x是二者和 *y = *x - *y;//*y是*x *x = *x - *y;//*x是*y } //方法二:利用减法 int Swap1(int *x, int *y) { *x = *x - *y;//*x是二者差值 *y = *x + *y;//*x是*y *x = *y - *x

如何不利用一个额外的变量来达到交换两个变量值的目的-------位上的异或运算

问题:一般我们要交换两个变量的值,多会采取一个额外变量来实现,比如temp=a,a=b,b=temp,现在我们能不利用temp来实现交换a,b两个变量值的目的吗? 解决方案:^异或运算符,而且我们会发现a^a=0,还有0^a=a,依据这两条理论,我们可以实现之前提出的问题. 代码如下: #include<stdio.h>void inplace_swap(int * x,int * y){    *y=*x^*y;    *x=*x^*y;    *y=*y^*x;}int main(){  

不使用临时变量 交换两个变量值

不使用临时变量 交换两个变量值1.$a = $a+$b;$b = $a-$b;$a= $a-$b; 2.list($a, $b) = array($b, $a); 3. $a = $a ^ $b;$b = $a ^ $b;$a = $a ^ $b;

变量值交换

交换两个变量:例如num1=5,num2=6→num1=6,num=5 怎么样?是不是觉得灰常简单,你是不是用下面的方法做的: int num1=5: int num2=6: int temp=num1: num1=num2; num2=temp; Console.WriteLine("num1={0},num2={1}",num1,num2); 好吧!你赢了!你做的非常对!就就是所谓的值传递 声明一个中间变量temp!没有可说的!大家都懂的! 接着我们来看下面这个比较犀利的出题人:

关于jmeter中跨线程组?变量值传递的方法

关于jmeter中跨线程组 变量值传递的方法 找了好久,终于找到方法了,赶紧整理下来. 1.在线程组1 中使用__setProperty函数设置jmeter属性值(此值为全局变量值),将所需变量值如${oldtoken} 设置为jmeter属性值,即newtoken,示例: 方法:${__setProperty(newtoken,${oldtoken},)} 2.在线程组2中使用_p函数来调用jmeter属性,获取属性值,从而实现跨线程组,参数值传递. 方法:${__P(newtoken,)}