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

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

原创: Martin 老师 公众号:零基础零障碍学习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>
<br>
 

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语言

  • 学习路线和建议
  • 编程英语加油站
  • 编程思维修炼
  • 编程技术文章
  • IT职场提升

祝大家学习愉快!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值