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
熱點內容