用C语言交换两个变量_第1页
用C语言交换两个变量_第2页
用C语言交换两个变量_第3页
用C语言交换两个变量_第4页
用C语言交换两个变量_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论