不用第三个变量交换值的五个办法
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
分享到:
相关推荐
第3章 表达式 33 求值顺序 33 3.1 为什么这样的代码不行?a[i]= i++; 33 3.2 使用我的编译器,下面的代码int i= 7; printf("%d\n", i++ * i++); 打印出49。不管按什么顺序计算,难道不该是56吗? 33 3.3 ...
第3章 表达式 求值顺序 3.1 为什么这样的代码不行?a[i]=i++; 3.2 使用我的编译器,下面的代码inti=7;printf("%d\n",i++*i++);打印出49。不管按什么顺序计算,难道不该是56吗? 3.3 对于代码inti=3;i=i++;...
9. **变量交换技巧**:在不引入第三个变量的情况下,通过a和b的相互赋值来实现交换两个变量的值。 10. **条件判断的表达**:在程序框图中,判断框通常包含一个条件,如“x>0?”,根据条件决定程序的执行路径。 11....
例如,尝试通过函数交换两个整数变量的值时,函数内部的交换不会影响外部变量的值。 2. **函数返回多值的需求**:当函数需要返回多个值时,单个返回值无法满足需求。例如,从文件中读取数据并返回读取结果和实际内容...
在第二个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页 ...
3.10 如果我不使用表达式的值, 我应该用++i 或i++ 来自增一个变量 吗? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.11 为什么如下的代码int a = 100, b = 100; long int c = a * b;...