曾经的华为C面试题,一点就通

发布时间:2020-08-01 04:57:58 作者:Martin老师
来源:网络 阅读:423

 学习编程可以锻炼你的思维,帮助你更好地思考,创建一种我认为在各领域都非常有用的思维方式。

                                                                                                                      --比尔盖茨


曾经的华为C面试题,一点就通

 

 曾经的华为C面试题,一点就通


 【问题区】

 

    有两个变量x和y, x=10; y = 20;  请使用C语言代码实现两个变量的交换,要求至少使用3 种办法!

 


 【提示区】

 

        如果使用一个临时变量,来交换两个x和y的值,这是初学者都会的事情,如果不用临时变量,我们有没有办法实现呢?

 

大家还记得初中代数中的公式吗?

       x + y = z  ; 那么 x= z - y   或是 y = z - x ;

       x *  y = z  ; 那么 x = z / y  或是 y = z / x;

 

 上面这个公式说明: 如果我们知道两个数,以及两个数经过某种运算得到的结果,我们就可以通过三者中的任意两者得到第三者的结果!

 


【C代码实现区】

 

#include <stdio.h>

 

int main(void){

  int x = 10;

  int y = 20;

 

  //第一种方法  临时变量交换

  int z = 0;

  z = x;

  x = y;

  y = z;

 

  //第二种方法  加法

  x = x + y;     //执行后 x=30,y=20

  y = x - y;      //执行后 x=30,y=10

  x = x - y;      //执行后 x=20,y=10

 

  //第三种方法  乘法

  x = x * y;      //执行后 x=200,y=20

  y = x / y;       //执行后 x=200,y=10

  x = x / y;       //执行后 x=20,y=10

 

  //第四种方法 异或运算

  x = x ^ y;

  y = x ^ y;

  x = x ^ y;

 

  printf("x=%d, y=%d\n", x, y);

  return 0;

}

 


 【视频讲解】


详细讲解视频分享在腾讯视频,链接:https://v.qq.com/x/page/v08145k1qdr.html


-----------------------------------------------------------------------------------------

更多C语言学习视频内容也可以关注我公众号: 零基础零障碍学习C语言


祝大家学习愉快!





推荐阅读:
  1. 21天学通C++(1-1)
  2. 那些曾经记得的C++库

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

编程思维 编程算法 人工智能

上一篇:VC2010中自定义消息

下一篇:php自动加载带命名空间类的函数

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》