百度试题 结果1 题目在C语言中,在交换两个数必须使用中间变量。相关知识点: 试题来源: 解析 答案: 错误 反馈 收藏
在C/C++中,我们可以使用位操作(bitwise operation)来交换两个变量的值。特别地,我们可以使用异或(XOR)操作:一个数与任何数的异或两次,结果仍然是原来的数。int a = 5;int b = 10;a = a ^ b;b = a ^ b; // 这里的a其实是a^b,所以b = a^b就变成了b = b^a^b,由于任何数与自身的异...
C语言位操作--不用中间变量交换两数值 1、使用加法与减法交换两数值: #defineSWAP(a, b) ((&(a) == &(b)) || \(((a)-= (b)), ((b) += (a)), ((a) = (b) - (a))) 这种交换数值a与b的方法没有使用临时变量,初始化检测a,b,如果在同一内存区,则被忽略,当然这通常不会发生,(编译...
第一种当然很简单了,用中间变量 int a=1,b=2,c; c=a; a=b; b=c; printf("%d,%d",a,b); 不通过中间变量,交换两个整形变量的值的方法: 1.加减法 比如 a=a+b b=a-b a=a-b 当然 这种方法不怎么好 因为它可能会出现精度损失 比如a = 3.123456 b = 1234567.000000 交换后各变量值变为: a ...
交换两个变量的值,本质上是让A变成B,B变成A,不过中间不能有小三(临时变量)出现。 场景 比如你在写个游戏,两个角色要互换武器,但你又不想创建新的武器对象(因为太麻烦了),这时候就可以用到我们的技巧。 经典方法 使用加减法 假设有两个变量a和b: ...
c语言中用函数交换两个变量的值方法是先将变量赋值给中间变量,然后中间变量再赋值给另外一个变量,程序如下:include "Stdio.h"include "Conio.h"void swap(int x,int y){ int t,m;t=x; //变量x赋值给中间变量t m=y; //变量y赋值给中间变量m x=m; //中间变量m赋值给变量x,...
第一种方法 void swap1(int *a, int *b){ int temp; temp = *a; *a = *b; *b = temp;}第二种方法 void swap1(int *a, int *b){ *a = *a + *b; *b = *a - *b; *a = *a - *b;}第三种方法 void swap1(int *a, int *b){ *a =...
C语言中交换两个变量的值,有多种实现方式。实现方式之一是使用第三方变量。示例代码如下:#include <stdio.h> void main() { // 定义两个整型变量x的值为8,y的值为6,然后声明一个中间变量temp int x = 8, y = 6, temp;// 按照整型输出两个变量交换前的值 printf("%d, %d \n", x, y);// (...
此时,ab的值已经实现交换了。done! 以上四种方法只是都是值得我们好好去思考的方法,多点想象对我们的思维总是有帮助的!我们也期待同学们想到其他更有意思的方法! 写在后面 好了,来说说前两种的缺点吧。 第一种,必须得借助中间变量来交换,开辟给temp的内存,有点浪费空间!
其实第二类方法并不合格,它虽然没有显式的使用临时变量,但还是会用到额外的存贮空间。不过也不能说没有必要掌握,从实用的角度看还是很“有用”的。不是有公司出过这样的面试题吗?“不使用加减法和异或法完成不使用中间变量交换两个数值型变量的值”。此时或许只好使用这种方法了。