下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用C语言交换两个变量在C语言中,有一个经典的算法:交换两个变量的值。现在有两个数a和b,需要将a的值给b,b的值给a。下面我来分享几个方法完成这个算法吧!方法一:借助第三个空变量一个瓶子装满了酱油,一个罐子装满了白醋,试问如何将酱油和白醋互换?最容易的方法是另外去找一个空杯子,先将酱油倒入空杯子,再将白醋倒入瓶子,最后将酱油倒入罐子。三步即可完成酱油和白醋的互换。C语言里也可以模仿这个思路。核心思路:声明第三个变量t,先将a的值赋值给t,再将b的值赋值给a,最后将t的值赋值给b。这样就完成a值和b值的互换。源代码如下:#include<stdio.h>intmain(){inta=5,b=10,t;t=a;a=b;b=t;printf("a=%db=%d",a,b);return0;}运行编译上面的源代码,将会输出以下结果:a=10b=5方法二:纯数学思想给定两个数a=5和b=10,先求a+b=15,然后b=15-10=5,最后a=15-5=10。核心思路:先将a+b赋值给a,赋值后的a=a+b=10+5=15,然后将a-b赋值给b,赋值后的b=a-b=15-10=5,最后将a-b赋值给a,赋值后的a=a-b=15-5=10。这样就完成a值和b值的互换。
源代码如下:#include<stdio.h>intmain(){inta=5,b=10;a=a+b;b=a-b;a=a-b;printf("a=%db=%d",a,b);return0;}运行编译上面的源代码,将会输出以下结果:a=10b=5
C语言交换两个数的值如果让你写一个函数,功能是交换两个数的值,你会怎么写?你会不会这样写:错误示例1:#include<stdio.h>voidswap(intx,inty){//数据的交换只是发生在函数内的形参x,y上inttemp;temp=x;x=y;y=temp;}intmain(){inta,b;a=6;b=9;swap(a,b);//传入的是实参的值printf("%d%d",a,b);return0;}输出结果:69如果你这样写,你会发现,最终的输出结果中并没有交换两个数的值。因为我们传递给函数的只是一个值,swap(a,b);可以理解为,函数的形参x和y,只是把实参a,b的值复制了一份,之后再在函数内使用。而交换的过程是发生在函数内的,此时交换的只是形参x和y的值,实参a和b的值却是没有改变的。如果想要通过函数来达到交换两个数的值的话,我们传入函数的应该是所需交换的数据的地址。正确示例:#include<stdio.h>voidswap(int*x,int*y){//根据地址进行数据的交换,改变的是实参a,b的值inttemp;temp=*x;*x=*y;*y=temp;}intmain(){inta,b;a=6;b=9;swap(&a,&b);//传入a,b的地址printf("%d%d",a,b);return0;}输出结果:96在这段代码中,我们传入的是a,b的地址同时,函数的形参是指针型的int*x,int*y因此,调用函数时,可以根据传入的地址,找到该处的值,此时在函数内交换两个数的值,是根据地址找到该数据的真实位置进行交换的,也就是交换的是a,b的值。要注意,在函数内的temp变量不能定义为指针类型的。如果写成这样就会出错:错误示例2:voidswap(int*x,int*y){int*temp;*temp=*x;*x=*y;*y=temp;}inttemp;表示的是一个整型变量,而
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络安全防护技术手册与漏洞扫描指南
- 警钟长鸣预防网络诈骗小学主题班会课件
- 关于2026年战略合作伙伴会议纪要的确认函(3篇)范文
- 危险化学品生产单位车工运行操作安全操作规程
- 2026执业医师技能考试真题+答案完整版
- 基于物联网技术的仓储管理系统升级改造计划
- 制造业工厂生产车间主任生产效率绩效评定表
- 2026年全国专利代理师资格考试专利代理实务历年参考题库含答案
- 供应链合作伙伴关系管理指南
- 堤防工程监理实施细则
- 《模具材料的分类》课件
- 一厂多租(厂中厂)厂区安全生产管理标准
- FZT 50035-2016 合成纤维 长丝电阻试验方法
- 广东省地质灾害危险性评估实施细则(2023年修订版)
- NB-T 47013.1-2015 承压设备无损检测 第1部分-通用要求
- 2023年合肥经济技术开发区招考聘用社区工作者62人模拟备考预测(共1000题含答案解析)综合试卷
- 医学科研设计:第一章 绪论
- 学校“五育并举五育融合”工作实施方案
- 铁路基本建设工程设计概(预)算编制办法-国铁科法(2017)30号
- AS9100D-2016手册程序推荐
- 机械租赁施工公司机构设置
评论
0/150
提交评论