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

本文介绍了C语言中实现变量交换的四种方法,包括使用临时变量、加法、乘法及异或运算,深入探讨了不同交换方式的原理,适合编程初学者及C语言爱好者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 曾经的华为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

 

转载于:https://www.cnblogs.com/51bc/p/10191573.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值