汽车可以做哪些广告视频网站,建网站怎么做报分系统,企业站seo点击软件,房子设计师怎么找文章目录 一、题目二、方法11#xff0c;思路2#xff0c;代码实现 三、方法21#xff0c;思路2#xff0c;代码实现 四、方法31#xff0c;思路2#xff0c;代码实现 总结 提示#xff1a;以下是本篇文章正文内容#xff0c;下面案例可供参考
一、题目 实现两个变量的… 文章目录 一、题目二、方法11思路2代码实现 三、方法21思路2代码实现 四、方法31思路2代码实现 总结 提示以下是本篇文章正文内容下面案例可供参考
一、题目 实现两个变量的交换 输入a 5b 3输出 a 3 b 5。
二、方法1
1思路 这个方法就是我们经常遇到此问题想到的空瓶交换额外创建一个变量开辟一份空间来暂时存储变量。好比下方图片我有三个碗一个碗里面放了醋一个放了酱油我想将放酱油的碗里面放上醋放醋的碗里面放上酱油。于是我需要第三个碗先将酱油放在空碗内在将醋倒进酱油碗中在将空碗里的酱油放在醋碗中。 2代码实现
代码如下示例
int main()
{int a 5;int b 3;int c 0;printf(交换前a %db %d\n, a, b);c a;a b;b c;printf(交换后a %db %d\n, a, b);return 0;
}三、方法2
1思路 这个是一个不创建中间变量的方法但是此方法存在缺陷如果a和b的很大但是没有超出整型的大小a和b的值的和超出了整型的大小超出整形大小的值之后有些值就溢出了丢了这样和就不准确了导致后面求出的值是错误的所以这个方法交换得两个数之和不大于整型变量的最小存储值 先将ab的值放在a中此时a的值变成ab再将a-b的值放在b中因为此时a变成了ab所以a-b的值等价于ab-ba此时存放在b中的值变成a了。最后一步将a-b的值放入a中此时a的值还是abb的值变成a了所以a-bb此时存放在a中的值变成b了。通过上面三步我们实现了a和b的交换。
2代码实现
代码如下示例
int main()
{int a 5; int b 3; printf(交换前a %db %d\n, a, b); a a b; b a - b; //此时b a b - b a; a a - b; //此时a a b - a b; printf(交换后a %db %d\n, a, b); return 0;
}四、方法3
1思路 在这里我们采用的方法是c语言操作符的解法 ,在这里我们需要理解下面两个c语言位操作符——按位异或的规律才可以得到正确的解法 a ^ a 0按位异或的规则是按照二进制位进行按位异或相同的位为0不相同为1.两个数都相同相同所有位为0所以所有数字都等于0a ^ 0 a; 任何数与0异或都等于0例如3^0 011^000 011 3;//a 0000 0000 0000 0000 0000 0000 0000 0101 //b 0000 0000 0000 0000 0000 0000 0000 0011 //^ 0000 0000 0000 0000 0000 0000 0000 0110 a a^b //^ 0000 0000 0000 0000 0000 0000 0000 0101 b a^b a //^ 0000 0000 0000 0000 0000 0000 0000 0011 a a^b a
2代码实现
代码如下示例
int main()
{int a 5; int b 3; printf(交换前a %db %d\n, a, b); a a ^ b; b a ^ b; a a ^ b; printf(交换后a %db %d\n, a, b); return 0;
}总结
上面是有关于交换两个数的三种求法但是实际中还是应用第一种方法如果没有硬性要求不能有中间变量建议使用第三种。如果大家还有其他的求解方法欢迎大家留言小编及时补充。