A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© godlike 中级黑马   /  2014-5-14 13:55  /  1080 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 godlike 于 2014-5-14 13:57 编辑

学习任何语言基础时,两个数值得交换是必须掌握的,下面是3种不同的方式(c语言)
方法一:利用数学的计算技巧
  1. #include <stdio.h>
  2. int main()
  3. {
  4.    
  5.     int a =10, b = 20;
  6.    
  7.     printf("交换前a=%d, b=%d\n", a, b);
  8.    
  9.     a = a - b;
  10.     b = a + b;
  11.     a = b - a;
  12.    
  13.     printf("交换后a=%d, b=%d\n", a, b);
  14.    
  15.     return 0;
  16. }
复制代码



这种方法的写法不唯一,对于a,b;只要先给其中一个先赋予a-b,其他的自己算一下就能写出来;
方法二:第三方变量,也是最常用,可读性最好的
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. int main()
  4. {

  5.     int a =10, b = 20;
  6.     printf("交换前a=%d, b=%d\n", a, b);
  7.    
  8.     int temp = a;//先定义一个临时变量
  9.     a = b;
  10.     b = temp;
  11.    
  12.     printf("交换后a=%d, b=%d\n", a, b);
  13.    
  14.     return 0;
  15. }
复制代码


方法三:位运算,利用^异或运算的特点:a^b^a = a^a^b = 0^b = b,交换律,相同数值异或为0,0和任何数异或为任何数
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int a =10, b = 20;
  5.     printf("交换前a=%d, b=%d\n", a, b);
  6.    
  7.     a = a^b;
  8.     b = b^a;
  9.     a = a^b;
  10.    
  11.     printf("交换后a=%d, b=%d\n", a, b);
  12.    
  13.     return 0;
  14. }
复制代码





评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

1 个回复

倒序浏览
mj视频里的,不错。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马