运用C语言让两个数交换

1.基础方法

(1)运用中间变量

                 交换a与b的值,可以引入c,把a的值赋给c,把b值赋给a,再把c赋给b,这样就完成了交换。

         int a = 2;
	 int b = 3;
	 int c;      //引入中间变量

	 c=a;
	 a=b;
	 b=c;

(2)不使用中间变量

                   当不使用中间变量时,可以运用a与b本身或加或减完成交换,a+b再减去a是b,减去b是a,运用这个思想可以完成

          a与b的交换

         int a = 2;
	 int b = 3;
	
	 a = a + b;      
	 b = a - b;       //a+b—b
	 a = a - b;       //a+b-a

	 

                   同理我们也可以运用a-b+b=a,a-(a-b)=b 来交换

         int a = 10;
	 int b = 89;
	
	 a = a - b;
	 b = a + b;         //a-b+b=a
	 a = b - a;         //a-(a-b)=b

         这两种方法都有可能越界,但是后面减去数字后会越回来。     

         还有一种一般看不懂的方法,先把a与b转为2进制再异或

         int a = 10;
	 int b = 89;
	
	 a = a^b;
	 b = a^b;
	 a = b^a;

 

2.函数指针

       我们可以试着用函数交换一下

#include<stdio.h>
void Swap(int a,int b)
  {

	        int c;
	        c = a;
	        a = b;
	        b = c;
    
  }

int main()
  { 
	       int a = 2;
           int b = 3;
	       Swap(a,b);
	 
           printf("%d,%d",a,b);
	
  }

     但是这个结果并没有交换成功


    这是因为函数改变的只是它复制主函数的数据,它并没有改变主函数的数据,所以也不会成功交换。

    想要交换就要使用数字的地址,必须用到指针

#include<stdio.h>
void Swap(int *a,int *b)
  {

	        int c;
	        c = *a;
	        *a = *b;
	        *b = c;
    
  }

int main()
  { 
	       int a = 2;
           int b = 3;
	       Swap(&a,&b);
	 
           printf("%d,%d",a,b);
	
  }

 

               这样就交换成功了

 

 

 

以上就是我所知道的两个数交换


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值