两个数交换问题

两个数交换问题

使用第三个参数实现数字交换

子函数的改变要想影响到父函数,必须满足如下条件
1.传指针2.解引用

代码如下

#include <stdio.h>
void Swap1(int *a,int *b)
{
	int tmp=0;
	tmp=*a;
	*a=*b;
	*b=tmp;
}

int main()
{
	int a=10;
	int b=20;
	Swap1(&a,&b);         //如果ab不取地址,则Swap1内部修改的ab值对实参ab不会有影响,如下例
	printf("%d,%d\n",a,b);
	return 0;
}
20,10
请按任意键继续. . .

错误代码如下

void Swap_err(int a,int b)
{
	int tmp=0;
	tmp=a;
	a=b;
	b=tmp;
}

int main()
{
	int a=10;
	int b=20;
	Swap_err(a,b);
	printf("%d,%d\n",a,b);
	return 0;
}
10,20
请按任意键继续. . .

不用第三个参数实现数字交换

代码如下

#include <stdio.h>
int main()
{	
	int a1=10;
	int a2=100;
	int a3=1000;
	int b1=20;
	int b2=200;
	int b3=2000;

	//第一种
	a1=a1+b1;
	b1=a1-b1;
	a1=a1-b1;

	//第二种
	a2=a2^b2;
	b2=a2^b2;
	a2=a2^b2;

	//第三种
	a3=a3*b3;
	b3=a3/b3;
	a3=a3/b3;
	printf("%d,%d\n",a1,b1);
	printf("%d,%d\n",a2,b2);
	printf("%d,%d\n",a3,b3);
	return 0;
}
20,10
200,100
2000,1000
请按任意键继续. . .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值