怎样不用临时变量而交换两个变量的值?有多少种方法?听我慢慢道来......
要交换两个变量的值,在高级语言中,通常使用的方法是通三个赋值语句来实现:
t = a; a = b; b = t; //t为临时变量
而在“汇编年代”,为节省资源, 程序员会通过以下方法实现
a ^= b; b ^= a; a ^= b;
妙吧,你还能想到其它方法吗? 没错,看下面
a=a+b; b=a-b; a=a-b;
在各种计算机语言中,前一种方法是通用的,而后两种方法则会受到类型限制,很明显异或(^)运算只适用于整型,第三种虽同时适用于整型和浮点型,却不适用于引用类型;
有完美解决方法吗?答案在http://hi.baidu.com/liugaotian/blog/item/bd0bae3e0d63d13870cf6ce8.html哈,广告完毕,继续......
在中语(暂以此名指代本计算机语言)中,你可以通过连续赋值语句完成
a, b = b, a;
理论上,它相对前几种方法更高效(简明自不必提了:),此外它具有第一种方法的通用性特点,故而堪称完美。
附中语实现源代码:(交换变量.yesi)
公有 元 示例 {
公有 共享(字串[] 起始参数列表){
中整 a=1, b=2;
printf("变量a\t变量b \n");
printf("------------ 0> t= a; a = b; b = t;\n");
t=a ; a=b; b=t;
printf(" %s\t %s\n", a, b);
printf("------------ 1> a ^= b; b ^= a; a ^= b;\n");
a^= b; b ^= a; a ^= b;
printf(" %s\t %s\n", a, b);
printf("------------ 2> a=a+b; b=a-b; a=a-b;\n");
a=a+b; b=a-b; a=a-b;
printf(" %s\t %s\n", a, b);
printf("------------ 3> a ,b = b , a;\n");
a ,b = b , a;
printf(" %s\t %s\n", a, b);
}
共享 中整 t;
私有 共享 空型 printf(字串 格式, 对象[] 参数列表 ...){
System.out.printf(格式,参数列表);
}
}
相关图片(看不到时,点击看原图或到http://hi.baidu.com/liugaotian 查看)


- 描述: 中语编程技巧
- 大小: 168.2 KB
分享到:
相关推荐
在"LabView图形化编程语言之生成二维码——2例.zip"这个压缩包中,我们可能找到两个关于在LabView中生成二维码的实例。 1. 二维码基础知识:二维码(Quick Response Code)是一种二维条形码,能够存储大量的文字、...
在文章提供的例子中,通过定义一个swap函数来交换两个整数变量的值,由于使用了值传递,所以实际参数的值并未发生改变。 与此相对的是地址传递,当函数的实参为变量的地址时,形参会接收这个地址值。因此,形参和...
这里展示了如何通过这种方法交换两个整数变量 `a` 和 `b` 的值。 2.2.5 四舍五入 这个例子使用了`<math.h>`库中的`floor`函数来实现四舍五入。输入一个浮点数,乘以100后再加0.5,然后向下取整再除以100,从而得到...
4. 遗传操作:包括交叉(两个解交换部分特征)和变异(随机改变解的部分特征),以保持种群多样性。 5. 重复步骤2-4,直到满足停止条件,如达到预设的迭代次数、适应度阈值或改进幅度阈值。 在MATLAB中,`ga`函数...
最后,例3-5展示了不使用中间变量交换两个外部变量的值。这种方法利用了算术运算的特性,通过 `a=a+b` 让 `a` 存储两数之和,接着 `b=a-b` 将 `a` 的值减去 `b` 的原值使 `b` 获取 `a` 的原值,最后 `a=a-b` 使 `a` ...
学生在理解了变量交换的概念后,教师可以进一步指导学生将这一概念应用到具体的编程任务中,如编写C语言代码实现变量值的互换。这个过程中,学生不仅学习了编程技能,还锻炼了解决问题的思维。 此外,认知心理学还...
9. **案例分析**:在“JH《单片机C语言程序设计实训100例——基于8051+Proteus仿真》案例压缩包”中,包含了一系列实践案例,涵盖了以上知识点的综合运用。每个案例都包括了电路图和C语言代码,是学习和提升的关键...
### 编程魔法师DELPHI 入门实战百例 #### 一、Delphi概述及初体验 **1.1 Delphi概述** Delphi是一种基于Object Pascal语言的快速应用程序开发工具,由Borland公司(现已被Embarcadero Technologies收购)开发。它...
在众多C语言学习资料中,《C语言100例》通过具体的编程题目,为初学者提供了一个全面的实践平台。本文将深入分析该书中五个具有代表性的编程实例,展示C语言的基础编程技巧和逻辑处理能力。 首先,我们将目光投向第...
`x,y=y,x` —— 这是一个有效的表达式,用于交换两个变量的值。 - D. `x+=y` —— 这是一个有效的加法赋值表达式。 **知识点**: 在Python中,你可以同时给多个变量赋相同的值或使用简单的换值方法。但是,在赋值...
#### 第一例:数字排列组合 **标题与描述中的知识点:** 此例展示了如何通过嵌套循环在C语言中生成不同的三位数,确保每一位数字都是唯一的。 **详细说明:** 这段代码通过三层`for`循环实现了对数字1到4的排列组合...
《iOS游戏应用源代码解析——基于arronhunt-Yay-Stary-7400583.zip》 本文将深入探讨iOS游戏应用的源代码,以"arronhunt-Yay-Stary-7400583.zip"为例,解析其中蕴含的关键技术点和编程理念。在iOS开发领域,游戏...
- 为了提高效率,可以添加一个布尔变量`swapped`来跟踪每一轮是否进行了交换。如果一轮结束后没有交换,说明数组已经有序,可以提前结束排序。 3. **示例代码**: ```cpp #include void bubbleSort(int arr[]...
在C语言中,任何非零的值都被认为是真,而零值则是假。这个概念在编写控制流程时非常重要,因为它决定了程序的执行路径。 排序算法是编程中的一项基本技能。冒泡排序是最简单的排序算法之一,通过相邻元素的比较和...
例如,`swap`函数可以用于交换不同数据类型(如`char`,`int`,`float`)的变量,但每个特定类型都需要一个独立的函数实现。函数模板的引入解决了这个问题。模板定义了一个通用的函数,其中`T`是一个类型参数,...
在C语言中,指针和函数是两个非常重要的概念,它们可以组合成强大的工具——指向函数的指针。这种机制允许我们动态地决定调用哪个函数,增加了代码的灵活性和可扩展性。以下是对指针与函数关系的深入探讨。 首先,...
看下面的一个实现交换两个元素内容的函数swap,以整型int为例: void swap(int* i1,int* i2){ int temp; temp = *i1; *i1 = *i2; *i2 = temp; } 当你想交换两个char类型时,你还得重写一个参数类型为char的...
1.1 Microsoft.NET——一场新的革命.4 1.2 .NET 与 C#.6 1.3 C#语言的特点.8 1.4 小 结 .11 第二章 运行环境 全面了解.NET.12 2.1 .NET 结构.12 2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 ...