c語言中用函數(shù)交換兩個變量的值方法是先將變量賦值給中間變量,然后中間變量再賦值給另外一個變量,程序如下:

成都創(chuàng)新互聯(lián)總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有網(wǎng)站設(shè)計、做網(wǎng)站、網(wǎng)絡(luò)營銷策劃、網(wǎng)頁設(shè)計、網(wǎng)站維護、公眾號搭建、微信小程序開發(fā)、軟件開發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動行銷領(lǐng)域創(chuàng)造價值而不懈努力!
#include "Stdio.h"
#include "Conio.h"
void swap(int x,int y)
{
int t,m;
t=x; ?//變量x賦值給中間變量t
m=y; ? ?//變量y賦值給中間變量m
x=m; ? ?//中間變量m賦值給變量x,將y的值賦值給了x。
y=t; ? ? ?//中間變量t賦值給變量y,將x的值賦值給了y。
}
main()
{
int a,b;
a=1,b=2;
swap(a,b); //調(diào)用交換函數(shù)
printf("%d,%d",a,b);
getch();
}
擴展資料:
C語言的語法結(jié)構(gòu):
1、順序結(jié)構(gòu)
順序結(jié)構(gòu)的程序設(shè)計是最簡單的,只要按照解決問題的順序?qū)懗鱿鄳?yīng)的語句就行,它的執(zhí)行順序是自上而下,依次執(zhí)行。
例如:a = 3,b = 5,現(xiàn)交換a,b的值,這個問題就好像交換兩個杯子里面的水,這當然要用到第三個杯子,假如第三個杯子是c,那么正確的程序為:c = a; a = b; b = c;執(zhí)行結(jié)果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b =c;則執(zhí)行結(jié)果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。
順序結(jié)構(gòu)可以獨立使用構(gòu)成一個簡單的完整程序,常見的輸入、計算、輸出三步曲的程序就是順序結(jié)構(gòu)。
2、選擇結(jié)構(gòu)
對于要先做判斷再選擇的問題就要使用選擇結(jié)構(gòu)。選擇結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴格按照語句出現(xiàn)的物理順序。選擇結(jié)構(gòu)的程序設(shè)計方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當?shù)倪x擇語句。
選擇結(jié)構(gòu)適合于帶有邏輯或關(guān)系比較等條件判斷的計算,設(shè)計這類程序時往往都要先繪制其程序流程圖,然后根據(jù)程序流程寫出源程序,這樣做把程序設(shè)計分析與語言分開,使得問題簡單化,易于理解。程序流程圖是根據(jù)解題分析所繪制的程序執(zhí)行流程圖。
3、循環(huán)結(jié)構(gòu)
循環(huán)結(jié)構(gòu)可以減少源程序重復書寫的工作量,用來描述重復執(zhí)行某段算法的問題,這是程序設(shè)計中最能發(fā)揮計算機特長的程序結(jié)構(gòu),C語言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do while循環(huán)和for循環(huán)。
四種循環(huán)可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提倡用goto循環(huán),因為強制改變程序的順序經(jīng)常會給程序的運行帶來不可預料的錯誤。
參考資料來源:百度百科-C語言
不知道你要交換的兩個變量類型,所以這里以整型數(shù)據(jù)交換為例,以下swap函數(shù)實現(xiàn)了交換兩個整型變量值的功能:
#include?stdio.h
//?交換給定指針指向整型變量的值。
//?參數(shù):
// a?-?指向第一個變量的指針
// b?-?指向第二個變量的指針
void?swap(int*?a,?int?*?b);
int?main(int?argc,?int?argv)
{
int?a?=?3,?b?=?5;
printf_s("交換前:a?=?%d,?b?=?%d\n",?a,?b);
swap(a,?b);
printf_s("交換后:a?=?%d,?b?=?%d\n",?a,?b);
return?0;
}
//?交換給定指針指向整型變量的值。
//?參數(shù):
// a?-?指向第一個變量的指針
// b?-?指向第二個變量的指針
void?swap(int*?a,?int*?b)
{
//?聲明一個臨時變量,保存第一個指針指向變量
//?的值。
//?其中?*a?是取出?a?指針指向變量的值
int?temp?=?*a;
//?將?b?指針指向的值賦值給?a?指針指向變量
(*a)?=?(*b);
//?將臨時變量?temp?中保存的?a?指針指向變量的值賦值給
//?b?指針指向的變量。
(*b)?=?temp;
}
以上代碼運行結(jié)果如下:
以下代碼實現(xiàn)了使用宏定義作為模板,聲明不同類型交換函數(shù)的功能,以下以聲明double和float為例:
#include?stdio.h?
//?聲明一個函數(shù)代碼模板,邏輯參考?swap(int*?a,?int*?b)
#define?DEF_SWAP_FUNC(Type)?void?swap_##Type(Type*?a,?Type*?b)?\
{?\
Type?temp?=?(*a);?\
(*a)?=?(*b);?\
(*b)?=?temp;?\
}?
//?使用模板聲明并實現(xiàn)一個?double?類型變量交換函數(shù),函數(shù)名為?swap_double
DEF_SWAP_FUNC(double)
//?使用模板聲明并實現(xiàn)一個?float?類型變量交換函數(shù),函數(shù)名為?swap_float
DEF_SWAP_FUNC(float)
int?main(int?argc,?int?argv)
{
//?double?類型數(shù)據(jù)交換
double?da?=?5.6,?db?=?3.5;
printf_s("double?交換前:da?=?%lf,?db?=?%lf\n",?da,?db);
swap_double(da,?db);
printf_s("double?交換后:da?=?%lf,?db?=?%lf\n",?da,?db);
//?float?類型數(shù)據(jù)交換
float?fa?=?3.4,?fb?=?6.8;
printf_s("float?交換前:fa?=?%f,?fb?=?%f\n",?fa,?fb);
swap_float(fa,?fb);
printf_s("float?交換前:fa?=?%f,?fb?=?%f\n",?fa,?fb);
return?0;
}
運行結(jié)果如下:
#include stdio.h??
void Swap(int a,int b)
{
int tmp = a;
a = b;
b = tmp;
printf("a=%d,b=%d\n",a,b);
}
int main()
{
int a = 5;
int b = 10;
printf("a=%d,b=%d\n",a,b);
Swap(a,b);
printf("a=%d,b=%d\n",a,b);
return 0;
}
擴展資料:
形參和實參的特點
1、形參變量只有在被調(diào)用時才分配內(nèi)存單元,在調(diào)用結(jié)束時,即刻釋放所分配的內(nèi)存單元。因此,形參只在函數(shù)內(nèi)部有效。函數(shù)調(diào)用結(jié)束返回主調(diào)用函數(shù)后則不能再使用該形參變量。
2、實參可以是常量、變量、表達式、函數(shù)等,無論實參是何種類型的量,在進行函數(shù)調(diào)用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應(yīng)預先用賦值,輸入等辦法使參數(shù)獲得確定值。
3、實參和形參在數(shù)量上,類型上、順序上應(yīng)嚴格一致,否則就會發(fā)生類型不匹配的錯誤。
4、在一般傳值調(diào)用的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。因此在函數(shù)調(diào)用過程中,形參值發(fā)生改變,而實參中的值不會變化。而在引用調(diào)用的機制當中是將實參引用的地址傳遞給了形參,所以任何發(fā)生在形參上的改變實際上也發(fā)生在實參變量上。
參考資料:
百度百科-形參
分享標題:c語言雙變量函數(shù) c語言函數(shù)兩個變量
鏈接地址:http://www.chinadenli.net/article30/dooeppo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、移動網(wǎng)站建設(shè)、小程序開發(fā)、網(wǎng)站導航、微信公眾號、網(wǎng)站設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)