c语言两数交换
发布时间: 2023-06-08 09:37:23
① 关于c语言交换两个数(有关指针)
在C语言中,通过函数参数传递,进行两个数的交换,必须采用传递指针的方式,同时,在函数中,一定要对两个指针中的数据内容进行交换才能达到交换实参地址中数据的目的。
如:
//正确的交换函数
voidswap1(int*p1,int*p2)
{
intp;
p=*p1;//通过*引用地址中的数据,进行交换
*p1=*p2;
*p2=p;
}
//错误的交换函数
voidswap2(int*p1,int*p2)
{
int*p;
p=p1;//这里进行改变的是形参的值,而形参只是实参的一个副本,形参本身的变化,是不能改变实参的值的!!
p1=p2;
p2=p;
}
PS:要正确认识C语言中的实参与形参,形参在使用中只是实参的副本,若形参是指针,我们可以通过形参改变实参地址中的内容,但无法改变实参本身的值!
② 在C语言中如何将两个数进行互换
将两个数进行互换的方法有两种形式:
1、借助中间变量完成,此方法直观,易理解,使用最多
2、不需要中间变量,通过变量身的运算完成交换。
参考代码:
方法1:
inta=2,b=3,t;
t=a;//先将a存储到临时变量t中
a=b;//将b存储到a中
b=t;//将临时变量中的原a值存储到b中
printf("a=%db=%d ",a,b);
方法2:
inta=2,b=3,t;
a+=b;//把两数之和存到a中
b=a-b;//用两数和减去b可得原a,存储到b中
a=a-b;//因为b现在是原a值,所以,用两数和减去b(原a)可得原b,存储到a中
此方法,还可以用异或运算来实现,原理相同。
③ c语言函数的使用,定义一个交换函数 实现2个数字的交换。
void Swap(int&x,int&y)
{
int temp=0;
temp=x;
x=y;
y=temp;
}
int main()
{
int a=1;
int b=2;
Swap(a,b);
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
system("pause");
return 0;
}
运行结果:
(3)c语言两数交换扩展阅读:
用指针交换:
void Swap(int*x,int*y)
{
int temp=0;
temp=*x;
*x=*y;
*y=temp;
}
int main()
{
int x=1;
int y=2;
Swap(&x,&y);
printf("x=%d,y=%d ",x,y);
system("pause");
return 0;
}
运行结果:
X=2;Y=1
热点内容