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

 曾经的华为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面试题,一点就通的更多相关文章

  1. 华为Java笔试题

    华为Java笔试题+数据库题 一. 单项选择题 1.Java是从( )语言改进重新设计. A.Ada B.C++ C.Pasacal D.BASIC 2.下列语句哪一个正确( ) A. Java程序经 ...

  2. 华为j2ee面试题

    http://blog.csdn.net/chow__zh/article/details/7741312 java基础1.垃圾回收的优点和原理.      Java语言中一个显著的特点就是引入了垃圾 ...

  3. 求一个int型整数的两种递减数之和(华为2015笔试题及答案)

    给出一个整数(负数使用其绝对值),输出这个整数中的两种递减数(1.最大递减数:2.递减数中各位数之和最大的数)之和. 递减数:一个数字的递减数是指相邻的数位从大到小排列的数字,不包含相邻的数位大小相同 ...

  4. 传说中的华为Python笔试题——两等长整数序列互换元素,序列和的差值最小(修正)

    有两个序列a,b,大小都为n,序列元素的值任意整形数,无序:要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小. 1. 将两序列合并为一个序列,并排序,得到source ...

  5. 华为Java机试题

    1.程序实现目标: 输入一个字符串,将其各个字符对应的ASCII值加5后,输出结果. 程序要求:该字符串只包含小写字母,若其值加5后的字符值大于'z',将其转换成从a开始的字符. package co ...

  6. 2014 华为校招机试题(c/c++开发类)

    第一题: 1.2.3....n盏灯,同时有n个人, 第1个人将1的倍数的灯拉一下, 第2个人将2的倍数的灯拉一下, ...... 问最后有几盏灯是亮的, 初始状态下灯是灭的, 输入整数n(n<6 ...

  7. 华为OJ平台试题 —— 数组:输入n个整数,输出当中最小的k个

    输入n个整数.输出当中最小的k个: 代码: /*  * 输入n个整数,输出当中最小的k个.  * 输入说明:1.输入两个整数:2.输入一个整数数组  * 输出说明:输出一个整数数组  */ <p ...

  8. 【华为2016上机试题C++】最高分是多少

    [编程题] 最高分是多少 时间限制:1秒 空间限制:65536K 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. 输入描述: 输入包括 ...

  9. 华为OJ平台试题 ——数组:整形数组合并

    代码: /* * 将两个整型数组依照升序合并,而且过滤掉反复数组元素 */ #include <stdio.h> #define N 256 #define M 512 /* * 合并数组 ...

随机推荐

  1. [WHY]Hello, Worktile~

    本来是水水的去听一听云计算大会,感受一下氛围的, 万万没想到,竟然意外的參观了Worktile,这也成了北京之旅最值得纪念的记忆. 先是路上看到QQ有个好友请求,备注是Worktile市场的小泽. 从 ...

  2. 那些不明不白的$符号设计--Sass和Emmet,变量设计原理相通

    以前看到php变量的定义,直接使用$符号开始,怎么看都不习惯.后来呀,在使用Emmet的过程中,又接触到了$符号.今天,在学习Sass的过程种,再一次接触到$符号,兴致所致,不由得想写一篇,对比一下搞 ...

  3. 20165318 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    20165318 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验报告封面 课程:Java程序设计        班级:1653班        姓名:孙晓暄    ...

  4. Day2 Mybatis初识(二)

    mapper接口开发 传统dao的开发问题(ibatis) 方法调用:字符串易错,硬编码 mapper代理开发 a) 编写全局配置 b) 编写接口(自动根据接口和映射文件创建实现类) c) 编写映射文 ...

  5. [Java123]Gradle

    https://dzone.com/articles/gradle-vs-maven https://docs.gradle.org/current/userguide/what_is_gradle. ...

  6. java 控制流

    一:     块作用域 块(即复合语句):是指由一对花括号括起来的若干条简单的java语句.块决定了变量的作用域,一个块可以嵌套在另一个块中,如下: public class print_In { p ...

  7. 时间序列深度学习:seq2seq 模型预测太阳黑子

    目录 时间序列深度学习:seq2seq 模型预测太阳黑子 学习路线 商业中的时间序列深度学习 商业中应用时间序列深度学习 深度学习时间序列预测:使用 keras 预测太阳黑子 递归神经网络 设置.预处 ...

  8. linux ssh 连接设置

    ! 本文编辑中 centos ssh 无法连接

  9. 2018下学期C语言学习总结

    怎么说呢,2018年下学期已经过去了,2019年的上学期又来了,在2018年没有达到自己想要的结果,希望2019年可以达到,加油!我希望我以后可以又快又准确的完成C语言的编程,学习好所以关于电脑的基础 ...

  10. C# WPF Image控件下对于Base64的转化显示

    原文:C# WPF Image控件下对于Base64的转化显示 算作前言 本文对图片如何转化成base64不做描述,我们可以从很多途径了解到转化办法.却很少有博客提到怎么在WPF的Image控件中显示 ...