`

不用第三个变量交换值的五个办法

阅读更多
不用第三个变量交换值的五个办法
package com.kevin.demo;


/**
 * @author  <a href="mailto:foohsinglong@gmail.com">kevin.long</a>
 * @description 2011-12-11 14:22:55
 */
public class ChangeTest {
	
	public void changeMethodA(int a, int b){
		System.out.println("changeMethodA交换之前\ta:"+a+"\tb:"+b);
		a = a + b - (b = a);
		System.out.println("changeMethodA交换之后\ta:"+a+"\tb:"+b);
	}
	
	public void changeMethodB(int a, int b){
		System.out.println("changeMethodB交换之前\ta:"+a+"\tb:"+b);
		b = a + (a = b)*0;
		System.out.println("changeMethodB交换之后\ta:"+a+"\tb:"+b);
	}
	
	public void changeMethodC(int a, int b){
		System.out.println("changeMethodC交换之前\ta:"+a+"\tb:"+b);
		a = a + b;
		b = a - b;
		a = a - b;
		System.out.println("changeMethodC交换之后\ta:"+a+"\tb:"+b);
	}
	
	public void changeMethodD(int a, int b){
		System.out.println("changeMethodD交换之前\ta:"+a+"\tb:"+b);
		a = a * b;
		b = a / b;
		a = a / b;
		System.out.println("changeMethodD交换之后\ta:"+a+"\tb:"+b);
	}
	
	public void changeMethodE(int a, int b){
		System.out.println("changeMethodE交换之前\ta:"+a+"\tb:"+b);
		a = a^b;
		b = a^b;
		a = a^b;
		System.out.println("changeMethodE交换之后\ta:"+a+"\tb:"+b);
	}
	
	public static void main(String[] args) {
		ChangeTest changeTest = new ChangeTest();
		changeTest.changeMethodA(1, 10);
		System.out.println("-----------------------------------");
		changeTest.changeMethodB(2, 9);
		System.out.println("-----------------------------------");
		changeTest.changeMethodC(3, 8);
		System.out.println("-----------------------------------");
		changeTest.changeMethodD(4, 7);
		System.out.println("-----------------------------------");
		changeTest.changeMethodE(5, 6);
	}
}

打印内容 写道
changeMethodA交换之前 a:1 b:10
changeMethodA交换之后 a:10 b:1
-----------------------------------
changeMethodB交换之前 a:2 b:9
changeMethodB交换之后 a:9 b:2
-----------------------------------
changeMethodC交换之前 a:3 b:8
changeMethodC交换之后 a:8 b:3
-----------------------------------
changeMethodD交换之前 a:4 b:7
changeMethodD交换之后 a:7 b:4
-----------------------------------
changeMethodE交换之前 a:5 b:6
changeMethodE交换之后 a:6 b:5
分享到:
评论

相关推荐

    《你必须知道的495个C语言问题》

    第3章 表达式 33 求值顺序 33 3.1 为什么这样的代码不行?a[i]= i++; 33 3.2 使用我的编译器,下面的代码int i= 7; printf("%d\n", i++ * i++); 打印出49。不管按什么顺序计算,难道不该是56吗? 33  3.3 ...

    你必须知道的495个C语言问题

    第3章 表达式 求值顺序 3.1 为什么这样的代码不行?a[i]=i++; 3.2 使用我的编译器,下面的代码inti=7;printf("%d\n",i++*i++);打印出49。不管按什么顺序计算,难道不该是56吗? 3.3 对于代码inti=3;i=i++;...

    【赢在高考】2020届高考物理一轮配套练习 9.2 基本算法语句及算法案例 理 苏教版.doc

    9. **变量交换技巧**:在不引入第三个变量的情况下,通过a和b的相互赋值来实现交换两个变量的值。 10. **条件判断的表达**:在程序框图中,判断框通常包含一个条件,如“x&gt;0?”,根据条件决定程序的执行路径。 11....

    C语言指针完全指南

    例如,尝试通过函数交换两个整数变量的值时,函数内部的交换不会影响外部变量的值。 2. **函数返回多值的需求**:当函数需要返回多个值时,单个返回值无法满足需求。例如,从文件中读取数据并返回读取结果和实际内容...

    C语言程序设计标准教程

    在第二个for语句中,从a[1]到a[9]逐个与max中的内容比较,若比max的值大,则把该下标变量送入max中,因此max总是在已比较过的下标变量中为最大者。比较结束,输出max的值。 void main() { int i,j,p,q,s,a[10]; ...

    华为编程开发规范与案例

    1、变量/指针在使用前就必须初始化 第5页 【案例1.1.1】 第5页 2、防止指针/数组操作越界 第5页 【案例1.2.1】 第5页 【案例1.2.2】 第6页 【案例1.2.3】 第7页 【案例1.2.4】 第8页 3、避免指针的非法引用 第9页 ...

    你必须知道的495个C语言问题(PDF)

    3.10 如果我不使用表达式的值, 我应该用++i 或i++ 来自增一个变量 吗? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.11 为什么如下的代码int a = 100, b = 100; long int c = a * b;...

Global site tag (gtag.js) - Google Analytics