变量值交换

交换两个变量:例如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!没有可说的!大家都懂的!

接着我们来看下面这个比较犀利的出题人:

面试题:不允许声明任何中间变量来交换两个变量的值:例如num1=5,num2=6→num1=6,num=5

汗~~~~~!!搞什么搞啊!你这不是难为我嘛!!一般遇到这样的情况我们都要打破常规了!

不卖关子了,下面我们来看一下它的解决办法吧:

int num1=5;

int num2=6;

num1+=num2;

num2=num1-num2;

num1=num1-num2;

Console.WriteLine("num1={0},num2={1}",num1,num2);

相信你一定有所收获吧!程序也简单易懂!!!献给那些还在面试的程序员!!希望你们找个好工作!

变量值交换,布布扣,bubuko.com

时间: 2024-08-11 07:50:15

变量值交换的相关文章

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

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

C#算法,变量值交换

两个变量的交换需要一只“空杯子”,就是中间变量: string boy = "秀丽";//男孩名字 string girl = "伟强";//女孩名字 string temp;//中间变量 temp = boy; boy = girl; girl = temp; Console.WriteLine("男孩叫"+boy+" 女孩叫"+girl); 原文地址:https://www.cnblogs.com/xiaochunblog

两个变量值交换的方法

借助其他变量 引入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 swa

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

问题:一般我们要交换两个变量的值,多会采取一个额外变量来实现,比如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(){  

JavaScript交换两个变量值的七种解决方案

前言 这篇文章总结了七种办法来交换a和b的变量值 1 2 var a = 123; var b = 456; 交换变量值方案一 最最最简单的办法就是使用一个临时变量了,不过使用临时变量的方法实在是太low了 1 2 3 4 var t; t = a; a = b; b = t; 首先把a的值存储到临时变量中,然后b赋值给a,最后拿出临时变量中的a值赋给b,这个办法是最基本的了 交换变量值方案二 下面的方案都不会有临时变量,我总结了一下,其实不使用临时变量的思路都是让其中一个变量变成一个a和b都有

Java随笔:使用异或操作交换变量值的风险

在面试中,经常会问到“如何不用中间变量交换两个变量值”. 看看下面这个代码输出是什么: int x = 1984; int y = 2001; x^=y^=x^=y; System.out.println("x="+x+";y="+y); 看上去应该很完美的:x=2001;y=1984 实际输出是:x=0;y=1984 问题出在哪里?是的,就是JVM的编译器. 看看实际的汇编: Code: 0: sipush 1984 3: istore_1 4: sipush 2

交换两变量值

下面两种方法不使用第三变量实现了两变量值的交换,C代码如下: 1 #include <stdio.h> 2 3 #define SWAP1(a,b) {a=a+b; b=a-b; a=a-b;} 4 5 #define SWAP2(a,b) {a^=b; b^=a; a^=b;} 6 7 8 int main(void) 9 { 10 int a=1234, b=5678; 11 12 printf("a=%d, b=%d\n", a, b); 13 printf(&quo

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

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

不使用临时变量 交换两个变量值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;