c語言中用函數(shù)交換兩個變量的值方法是先將變量賦值給中間變量,然后中間變量再賦值給另外一個變量,程序如下:
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、豐潤網(wǎng)站維護、網(wǎ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,不能達到預(yù)期的目的,初學(xué)者最容易犯這種錯誤。
順序結(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)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(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)常會給程序的運行帶來不可預(yù)料的錯誤。
參考資料來源:百度百科-C語言
首先要捋順一下,先看第一段程序。這段程序的目的就是為了將兩個變量的數(shù)值進行交換。此時要明白指針的使用方法,這里的交換函數(shù)是void swap(int x, int y),即無返回值的函數(shù),函數(shù)傳遞的參數(shù)是int x和int y,這兩個東西是什么呢?這兩個東西是定義的引用,而這個我們就可以理解為是兩個用來存儲傳遞進來的參數(shù)的地址的變量(這么說可能有點亂,其實就是將調(diào)用該函數(shù)是時傳遞進來的變量的地址給這兩個參數(shù)),所以如果在這個swap函數(shù)中對這兩個參數(shù)操作時,實際上就是對傳遞進來的那兩個變量進行操作。至于你問的關(guān)于整型的問題,這個也很好理解,在c語言里地址就是整型的,而這兩個變量定義的時候也是int整型的,所以無論是地址還是值都是整型的,而又因為*a和*b是一個指針指向的值,所以*a、*b是整型,而a、b是指針的地址,所以也是整型。
接下來看你第二段程序(你自己寫的這個):
看程序前請仔細查看關(guān)于函數(shù)方面的資料,至于你這個return為什么是錯的這個問題其實很簡單,首先要了解一個函數(shù)的定義,定義函數(shù)簡單的可以分為有返回值和無返回值的,有返回值的定義類似這樣
int abc();
float bcd();
如上所示,函數(shù)名什么的都好理解,函數(shù)名前面的"int"和"float"是指函數(shù)返回的類型,即你這個函數(shù)在執(zhí)行完之后需要用return語句返回一個值,而這個返回類型就是指這個返回值的類型。
還有一種是不需要返回值的,即
void abc();
void cde();
這類函數(shù)在執(zhí)行完成后不需在最后添加return語句來返回值,如果添加了也用不了。
而你寫的這個函數(shù)定義的是
int swap(int x,inty)
這里聲明的是一個需要返回整型變量的函數(shù),而這個函數(shù)里你的返回值語句return后沒有跟任何變量或值,程序不知道你返回的是什么東西,所以會報錯,這里一般都會填寫return 0;表示程序執(zhí)行完成。當然這個0也可以換成整型的變量。
最后說一下你這個程序,你這個程序在執(zhí)行完成后是不會將需要交換的變量a和b的值進行交換的。這個關(guān)系到形參和實參的概念,請仔細查看書籍或看一些例子,你這個只是將形參的值交換了,真正的需要交換的值不會改變,也就是說你只是將a和b的兩個值復(fù)制了一份,然后將復(fù)制了的那個交換了,當swap函數(shù)完成后又將復(fù)制了的那份刪除掉了,所以說,不管怎樣最初的a和b都沒有受到任何影響。
要用函數(shù)實現(xiàn)兩個數(shù)的交換,則函數(shù)參數(shù)必須定義為指針形式,否則函數(shù)中對數(shù)值的修改將不會影響主調(diào)函數(shù),這是C語言的規(guī)則。
所以,以整型為例,自定義函數(shù)書寫如下:
void swap_int(int*a,int*b)
{
int t;
t = *a;
*a=*b;
*b=t;
}
我們用C語言的時候,經(jīng)常需要將兩個數(shù)字交換,那么如何實現(xiàn)呢?下面我給大家分享一下。
工具/材料
Dev C++
01
首先我們在Dev C++軟件中新建一個C語言項目,如下圖所示
02
接下來我們在C語言文件中聲明兩個數(shù)字并輸出,如下圖所示
03
然后用一個中間變量對他們進行交換,如下圖所示
04
最后運行編寫好的C語言文件,我們就可以看到如下圖所示的交換結(jié)果了
#include"stdio.h"int swap(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;}
main(){int x,y;printf("請輸入x與y的值,用空格隔開\n");scanf("%d%d",x,y);printf("x=%d,y=%d\n",x,y);swap(x,y);printf("交換后\nx=%d,y=%d\n",x,y);}
擴展資料:
C語言是一門通用計算機編程語言,廣泛應(yīng)用于底層開發(fā)。C語言的設(shè)計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言。
盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規(guī)格寫出的C語言程序可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業(yè)平臺。
二十世紀八十年代,為了避免各開發(fā)廠商用的C語言語法產(chǎn)生差異,由美國國家標準局為C語言制定了一套完整的美國國家標準語法,稱為ANSI C,作為C語言最初的標準。目前2011年12月8日,國際標準化組織(ISO)和國際電工委員會(IEC)發(fā)布的C11標準是C語言的第三個官方標準,也是C語言的最新標準,該標準更好的支持了漢字函數(shù)名和漢字標識符,一定程度上實現(xiàn)了漢字編程。
C語言是一門面向過程的計算機編程語言,與C++,Java等面向?qū)ο蟮木幊陶Z言有所不同。其編譯器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
參考資料:百度百科-C語言