程序稍微修改一下:
創(chuàng)新互聯(lián)長(zhǎng)期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為浠水企業(yè)提供專業(yè)的網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì),浠水網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
1 #include stdio.h
2 int gcd(int x, int y);
3 int main()
4 {
5 int x, y;
6 while (~scanf("%d%d", x, y))
7 {
8 int sum = x/gcd(x,y)*y;
9 printf("%d\n",gcd(x,y));
10 printf("--\n");
11 printf("%d\n",sum);
12 }
13 return 0;
14 }
15 int gcd(int x, int y)
16 {
17 while (x != y)
18 if (x y) x = x - y;
19 else y = y - x;
20 }
Output:
3 5
1
15
--
22 22
22
22
--
12 24
12
24
為什么會(huì)出現(xiàn)這樣的情況呢?輸入x,y數(shù)值關(guān)系不一樣的時(shí)候gcd函數(shù)的值不一樣。
這就是匯編和寄存器的知識(shí)了。
另外 VC6.0編譯是不能通過(guò)的,gcc編譯支持這樣的函數(shù)。
參考:
在gcd函數(shù),當(dāng)x==y時(shí)候,寄存器存了x和y的值,當(dāng)調(diào)用gcd時(shí)候,即使沒(méi)有返回值,寄存器也會(huì)將棧頂數(shù)值返回。
當(dāng)輸入非法字符,如^A時(shí)候,進(jìn)入死循環(huán) while (~scanf("%d%d", x, y))中,
默認(rèn)x和y的值從寄存器中輸入,即是當(dāng)gcd函數(shù)中x==y的時(shí)候x和y的值。
函數(shù)的返回值類型和參數(shù)類型是兩個(gè)相對(duì)獨(dú)立的概念,并不需要保持一致
定義子函數(shù)類型的意義是讓函數(shù)調(diào)用者得到想要的調(diào)用結(jié)果:
比如求數(shù)組平均值:(傳入的的是整型數(shù)組,返回的是數(shù)組所有元素的平均值)
float GetAvg(int a[5])
{
float avg;
.....
......
return avg;
}
float avgsz = GetAvg(a);
子函數(shù)在聲明后可以先調(diào)用,后定義;避免編譯器猜數(shù)據(jù)。操作方法如下:
1、函數(shù)的聲明,函數(shù)有兩種類型,一種是有返回值的,前面用int float double char 來(lái)定義,如int f(int n);前面的int就是返回值類型。
2、?如果函數(shù)不需要返回值,那么就用void來(lái)寫在前面,如void?f(int?n);注意聲明后面加分號(hào)。
3、?函數(shù)的定義,有返回值的函數(shù)一般就是?int?f(int)?{?函數(shù)內(nèi)容??return?返回的結(jié)果}。注意f()沒(méi)有分號(hào)。
4、沒(méi)有返回值的函數(shù)結(jié)構(gòu)為void?f(){函數(shù)內(nèi)容,發(fā)f(int n)后面也沒(méi)有分號(hào)。
5、看一下函數(shù)的調(diào)用,有返回值的一般語(yǔ)言定義一個(gè)變量如c=f(n)。
在C語(yǔ)言中主函數(shù)調(diào)用子函數(shù),子函數(shù)被主函數(shù)調(diào)用,這就是它們之間的聯(lián)系。編寫函數(shù)主要有以下步驟,首先對(duì)函數(shù)進(jìn)行定義,語(yǔ)法格式為:
類型說(shuō)明符? 函數(shù)名 (含類型說(shuō)明的形式參數(shù)表)
{
語(yǔ)句序列
}
形式參數(shù)的作用是實(shí)現(xiàn)主函數(shù)和被調(diào)函數(shù)之間的聯(lián)系。通常將函數(shù)所處理的數(shù)據(jù)、影響函數(shù)功能的因素或函數(shù)處理的結(jié)果作為形參。
然后還要確定函數(shù)的返回值及類型,格式為:
return? ?表達(dá)式;
這個(gè)語(yǔ)句的另一個(gè)作用是結(jié)束當(dāng)前函數(shù)的執(zhí)行。一個(gè)函數(shù)可以不將任何值返回主函數(shù),此時(shí)它的類型標(biāo)識(shí)符為void,可以不寫return語(yǔ)句,也可以寫一個(gè)不帶表達(dá)式的return;語(yǔ)句。
擴(kuò)展資料
C語(yǔ)言編程書寫規(guī)則:
1、一個(gè)說(shuō)明或一個(gè)語(yǔ)句占一行。
2、用{} 括起來(lái)的部分,通常表示了程序的某一層次結(jié)構(gòu)。{}一般與該結(jié)構(gòu)語(yǔ)句的第一個(gè)字母對(duì)齊,并單獨(dú)占一行。
3、低一層次的語(yǔ)句或說(shuō)明可比高一層次的語(yǔ)句或說(shuō)明縮進(jìn)若干格后書寫。以便看起來(lái)更加清晰,增加程序的可讀性。在編程時(shí)應(yīng)力求遵循這些規(guī)則,以養(yǎng)成良好的編程風(fēng)格。
參考資料來(lái)源:《C++語(yǔ)言程序設(shè)計(jì)(第4版)》鄭莉? 董源 何江舟 編著? 清華大學(xué)出版社
第三章 函數(shù)? 3.1 函數(shù)的定義與使用
參考資料來(lái)源:百度百科--c語(yǔ)言
跟你打個(gè)比方吧,就像文件夾的子文件夾和父文件夾一樣。子函數(shù)與父函數(shù)是函數(shù)嵌套里的,括號(hào)外面的是括號(hào)里面的父函數(shù),里面是外面的子函數(shù)。
在C語(yǔ)言中,函數(shù)中需要用到的子函數(shù)都要在這個(gè)函數(shù)之前聲明,否則會(huì)提示有錯(cuò)誤,例如:void mux(int,int);
當(dāng)然有區(qū)別了,定義是具體的函數(shù)要實(shí)現(xiàn)什么功能,而聲明就是告訴大家你在后面要用到的函數(shù)
網(wǎng)頁(yè)題目:子函數(shù)用c語(yǔ)言表示什么 c語(yǔ)言子函數(shù)怎么定義
分享URL:http://jinyejixie.com/article48/hpsohp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)站制作、網(wǎng)站改版、網(wǎng)站收錄、關(guān)鍵詞優(yōu)化、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)