php不用第三个变量,交换两个数的值

//字符串版本 结合使用substr,strlen两个方法实现

$a="a";

$b="b";

echo ‘交换前 $a:‘.$a.‘,$b:‘.$b.‘<br />‘;

$a.=$b;

$b=substr($a,0,(strlen($a)-strlen($b)));

$a=substr($a, strlen($b));

echo ‘交换后$a:‘.$a.‘,$b:‘.$b.‘<br />‘;

echo ‘-----------------------<br/>‘;

//字符串版本 使用str_replace方法实现

$a="a";

$b="b";

echo ‘交换前 $a:‘.$a.‘,$b:‘.$b.‘<br />‘;

$a.=$b;

$b=str_replace($b, "", $a);

$a=str_replace($b, "", $a);

echo ‘交换后$a:‘.$a.‘,$b:‘.$b.‘<br />‘;

echo ‘-----------------------<br/>‘;

//字符串版本 结合使用list方法和array实现

$a="a";

$b="b";

echo ‘交换前 $a:‘.$a.‘,$b:‘.$b.‘<br />‘;

list($b,$a)=array($a,$b);

echo ‘交换后$a:‘.$a.‘,$b:‘.$b.‘<br />‘;

echo ‘-----------------------<br/>‘;

//字符串和数字都适用 使用异或运算(这个特别有意思!相当于一个数学运算)

$a=‘a‘;

$b=‘b‘;

echo ‘交换前 $a:‘.$a.‘,$b:‘.$b.‘<br />‘;

$a=$a^$b;

$b=$b^$a;

$a=$a^$b;

echo ‘交换后$a:‘.$a.‘,$b:‘.$b.‘<br />‘;

echo ‘-----------------------<br/>‘;

//只适用于数字

$a=3;

$b=5;

echo ‘交换前 $a:‘.$a.‘,$b:‘.$b.‘<br />‘;

$a=$a+$b;

$b=$a-$b;

$a=$a-$b;

echo ‘交换后$a:‘.$a.‘,$b:‘.$b.‘<br />‘;

时间: 2024-10-12 08:57:32

php不用第三个变量,交换两个数的值的相关文章

不准引入第三个变量交换两个数的值

int x=1; int y=3; x=x+y; y=x-y; x=x-y; 如果 int x=1000000; int y=3000000; x=x^y; y=x^y; x=x^y; 一个数据异或两次得到数据本身 例如5^10^10的值还是5. 这个技术还可以用在加密解密里面.

PHP中不用第三个变量交换两个变量的值

相信大家在PHP面试或者学习中经常会遇到这个问题就是“不用第三个变量来交换两个变量的值”,今天正对这个问题来讨论一下: 第一种方法:首先会想到的 这种方法简单可行,顺利的交换了两个变量的值. 第二种方法呢,稍加思考我们就会用到PHP中的函数来实现 第三种方法呢,我们来采用PHP中提供各种字符串分割函数来实现. 简单的题目不同的思想就会有不同的解法,期待更多的答案.

如何不用第三个变量实现两个数的交换

一般我们在写程序时如果遇到两个数需要交换时写作如下: 1 int x,y; 2 3 int temp; 4 5 temp=x;x=y;y=temp; 而如果不允许有第三个变量出现即不允许有temp出现时应该如何做呢?可以写作如下: 1 int x,y; 2 3 x=x+y; 4 5 y=x-y; 6 7 x=x-y;//上述一般可以满足,但是有时候x+y或许或出现上溢或者下溢. 而利用两个数的异或或许更加巧妙—— 异或有如下性质: 交换律:x^y=y^x 结合律:x^(y^z)=(x^y)^z

交换两个变量以及不用第三个变量交换两个变量

这个可能网上一搜一大把一大把的,可是今天我看到了一个新的写法,所以就写这篇文章记录一下,不不知道百度有没有,没去搜索! 方法1:这是最简单,也是最常用的一个方法! int n1 = 10, n2 = 20; int tmp = n1; n1 = n2; n2 = tmp; Console.WriteLine("n1={0},n2={1}", n1, n2); Console.ReadKey(); 方法2:算术运算 //交换两个变量,不使用第三个变量 int n1 = 10, n2 =

不用第三方变量交换两个数的值

1.利用两数之和减去另一个数的方式: NSInteger a=3,b=5; a=a+b; b=a-b; a=a-b; NSLog(@"a=%ld,b=%ld",a,b); p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000 } span.s1 { } 打印:a=5,b=3 2.利用位运算 ^ (异或): 异或的特点是:一个数据a与另一个数据b做异或运算之后,变成了另外一个数c,再读取这个数

交换两个数的值以及不使用临时变量交换两个数的值

使用临时变量非常简单 #include<stdio.h> int main() { int a = 1, b = 2, c = 0; printf("a="); scanf("%d", &a); printf("b="); scanf("%d", &b); c = a; a = b; b = c; printf("a=%d,b=%d\n", a, b); system("

如何不使用第三个变量来交换两个数的值

最近在看<c++从入门到精通>自学c++,里面有一道课后题是如何做到不适用第三个变量来交换两个数的值,以下是我在网上查找到的资料,记录下并作为笔记. 题目:a=10,b=15,将a / b的值互换. 通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换.代码如下:      int a,b;      a=10; b=15;      int t;      t=a; a=b; b=t;      这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用

交换两个数的值,不适用第三个变量

交换两个数的值,不适用第三个变量 一.源代码:SwapTwoNumber.java 1 package cn.com.zfc.help; 2 3 /** 4 * 不适用中间变量交换两个数 5 * 6 * @author zfc 7 * 8 */ 9 public class SwapTwoNumber { 10 public static void main(String[] args) { 11 12 /* 1.第一种交换方式,位运算:^(异或) */ 13 System.out.printl

c语言函数实现交换两个数的值

代码: 1 #include <stdio.h> 2 3 void swap(int x,int y) 4 { 5 int temp; 6 7 temp = x; 8 x = y; 9 y = temp; 10 printf("In swap: x = %d,y = %d\n",x,y); 11 } 12 13 void swap_with_pt(int * x,int * y) 14 { 15 int temp; 16 17 temp = *x; 18 *x = *y;

c语言实现交换两个数的值

C语言中要实现交换两个数的值,可以有很多种方法,具体如下所述. 不使用中间变量: 1 // 异或, a^=b^=a^=b; 2 a ^= b; 3 b ^= a; 4 a ^= b; 5 6 // 加减 7 a = a + b; 8 b = a - b; 9 a = a - b; 10 11 // 乘除 12 a = a * b; 13 b = a / b; 14 b = a/ b; 使用中间变量: 1 // 需临时空间 2 temp = a; 3 a = b; 4 b = temp; 正如你所