1.#include stdio.h
創(chuàng)新互聯(lián)建站主營赤峰網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā),赤峰h5微信小程序開發(fā)搭建,赤峰網(wǎng)站營銷推廣歡迎赤峰等地區(qū)企業(yè)咨詢
2.int maxmum(int x,int y,int z);
3.int main()
4.main()
5.{ int i,j,k;
6. printf("i,j,k=?\n");
7. scanf("%4d%4d%4d",i, j, k);
8. maxmum(i,j,k);
9. getch();
10. return 0;
11.}
12.maxmum (int x,int y,int z)
13.{
14.int max;
15.max=xy?x:y;(;是分號,前面一個(gè)是冒號)
16.max=maxz?max: z;
17.printf("The maxmum value of the 3 data is %d\n",max);
18.}
按每行說明:
1。這里是包含的頭文件,頭文件里頭有你使用到的一些函數(shù)。比如你使用的printf()函數(shù),這個(gè)函數(shù)你在本程序里頭沒有定義它的功能,那么本程序上哪知道呢。就是這個(gè)頭文件。頭文件里頭有這個(gè)函數(shù)功能的具體定義。
2。這里是函數(shù)原型的聲明,可以寫成這樣 int maxmum(int,int,int)因?yàn)槁暶鞯氖窃?,就不需要在聲明里頭把形式參數(shù)也給定義上了。當(dāng)然你定義上也是對的。
3。這是主函數(shù),int main()是符合c標(biāo)準(zhǔn)的,規(guī)定了main()函數(shù)的的返回值類型。有些人就寫個(gè)main(),其實(shí)這樣不符合c標(biāo)準(zhǔn)。一般的我喜歡 這樣 int main(void) 表示main()函數(shù)沒接受參數(shù),返回值是int類型。
4。這一行我覺得是不是你重復(fù)了,這一行應(yīng)該用第3 行來代替。把這一樣去掉
5。這里是定義三個(gè)整形變量。
6。printf輸出函數(shù)用來格式化輸出。
7。scanf()用來格式花輸入。這個(gè)函數(shù)要弄的很清除是需要你花一些精力的。
8。這里調(diào)用maxmun()函數(shù)。還記得第2 行對此函數(shù)的聲明嗎? 正因?yàn)槟銓λ暶髁耍詍ain()函數(shù)在這里調(diào)用它的時(shí)候就知道,這個(gè)家伙我認(rèn)識??梢杂盟?。否則,它就不認(rèn)識它,編譯的過程就會出錯(cuò)。
9。這里是一個(gè)從鍵盤獲得輸入的一個(gè)函數(shù)。其實(shí)它在這里的功能是暫停一下,你隨便輸入一個(gè)字符,就馬上執(zhí)行return 0。程序就執(zhí)行完畢。要不然,程序的執(zhí)行過程會一閃而過。(學(xué)到后來你就會知道,這樣的用法是存在安全隱患的。具體怎么樣需要你進(jìn)一步學(xué)習(xí)才能懂)
10。這里返回一個(gè)0 說明main()函數(shù)執(zhí)行完畢,而且是成功返回。
11。這個(gè)花括弧表明mian()函數(shù)的主體結(jié)束。
12。這里是maxmum()函數(shù)的功能的定義。下面的一對花括弧,就是maxmum()具體能實(shí)現(xiàn)什么功能的代碼區(qū)。
13.一對花括弧的開始
14。定義一個(gè)整形變量,用來存放最大的數(shù)。
15.這里是一個(gè)if條件表達(dá)式。也就是問:x是不是大于y?判斷這個(gè)條件是不是真。如果是真,那么就把后面的x 賦值給max 如果不是真,那么把x冒號后面的y賦值給max
16。類似于15的分析。
17。格式化輸出max
18。maxmum()函數(shù)功能代碼段結(jié)束。
如果你需要調(diào)用一個(gè)你自己編寫的函數(shù),那么你一定要在調(diào)用的位置之前就聲明該和函數(shù)的原型。也就是告訴編譯器,這個(gè)函數(shù)你認(rèn)識,只是它具體是干什么的。我在后面有定義,你不要擔(dān)心。于是編譯器就會順利通過編譯。
說了這么多,手都累了,希望你能滿意!
函數(shù)的調(diào)用
8.4.1 函數(shù)調(diào)用的一般形式
前面已經(jīng)說過,在程序中是通過對函數(shù)的調(diào)用來執(zhí)行函數(shù)體的,其過程與其它語言的子程序調(diào)用相似。
C語言中,函數(shù)調(diào)用的一般形式為:
函數(shù)名(實(shí)際參數(shù)表)
對無參函數(shù)調(diào)用時(shí)則無實(shí)際參數(shù)表。實(shí)際參數(shù)表中的參數(shù)可以是常數(shù),變量或其它構(gòu)造類型數(shù)據(jù)及表達(dá)式。各實(shí)參之間用逗號分隔。
8.4.2 函數(shù)調(diào)用的方式
在C語言中,可以用以下幾種方式調(diào)用函數(shù):
1. 函數(shù)表達(dá)式:函數(shù)作為表達(dá)式中的一項(xiàng)出現(xiàn)在表達(dá)式中,以函數(shù)返回值參與表達(dá)式的運(yùn)算。這種方式要求函數(shù)是有返回值的。例如:z=max(x,y)是一個(gè)賦值表達(dá)式,把max的返回值賦予變量z。
2. 函數(shù)語句:函數(shù)調(diào)用的一般形式加上分號即構(gòu)成函數(shù)語句。例如: printf ("%d",a);scanf ("%d",b);都是以函數(shù)語句的方式調(diào)用函數(shù)。
3. 函數(shù)實(shí)參:函數(shù)作為另一個(gè)函數(shù)調(diào)用的實(shí)際參數(shù)出現(xiàn)。這種情況是把該函數(shù)的返回值作為實(shí)參進(jìn)行傳送,因此要求該函數(shù)必須是有返回值的。例如: printf("%d",max(x,y)); 即是把max調(diào)用的返回值又作為printf函數(shù)的實(shí)參來使用的。在函數(shù)調(diào)用中還應(yīng)該注意的一個(gè)問題是求值順序的問題。所謂求值順序是指對實(shí)參表中各量是自左至右使用呢,還是自右至左使用。對此,各系統(tǒng)的規(guī)定不一定相同。介紹printf 函數(shù)時(shí)已提到過,這里從函數(shù)調(diào)用的角度再強(qiáng)調(diào)一下。
【例8.3】
main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
}
如按照從右至左的順序求值。運(yùn)行結(jié)果應(yīng)為:
8
7
7
8
如對printf語句中的++i,--i,i++,i--從左至右求值,結(jié)果應(yīng)為:
9
8
8
9
應(yīng)特別注意的是,無論是從左至右求值, 還是自右至左求值,其輸出順序都是不變的, 即輸出順序總是和實(shí)參表中實(shí)參的順序相同。由于Turbo C現(xiàn)定是自右至左求值,所以結(jié)果為8,7,7,8。上述問題如還不理解,上機(jī)一試就明白了。
8.4.3 被調(diào)用函數(shù)的聲明和函數(shù)原型
在主調(diào)函數(shù)中調(diào)用某函數(shù)之前應(yīng)對該被調(diào)函數(shù)進(jìn)行說明(聲明),這與使用變量之前要先進(jìn)行變量說明是一樣的。在主調(diào)函數(shù)中對被調(diào)函數(shù)作說明的目的是使編譯系統(tǒng)知道被調(diào)函數(shù)返回值的類型,以便在主調(diào)函數(shù)中按此種類型對返回值作相應(yīng)的處理。
其一般形式為:
類型說明符 被調(diào)函數(shù)名(類型 形參,類型 形參…);
或?yàn)椋?/p>
類型說明符 被調(diào)函數(shù)名(類型,類型…);
括號內(nèi)給出了形參的類型和形參名,或只給出形參類型。這便于編譯系統(tǒng)進(jìn)行檢錯(cuò),以防止可能出現(xiàn)的錯(cuò)誤。
例8.1 main函數(shù)中對max函數(shù)的說明為:
int max(int a,int b);
或?qū)憺?
int max(int,int);
C語言中又規(guī)定在以下幾種情況時(shí)可以省去主調(diào)函數(shù)中對被調(diào)函數(shù)的函數(shù)說明。
1) 如果被調(diào)函數(shù)的返回值是整型或字符型時(shí),可以不對被調(diào)函數(shù)作說明,而直接調(diào)用。這時(shí)系統(tǒng)將自動(dòng)對被調(diào)函數(shù)返回值按整型處理。例8.2的主函數(shù)中未對函數(shù)s作說明而直接調(diào)用即屬此種情形。
2) 當(dāng)被調(diào)函數(shù)的函數(shù)定義出現(xiàn)在主調(diào)函數(shù)之前時(shí),在主調(diào)函數(shù)中也可以不對被調(diào)函數(shù)再作說明而直接調(diào)用。例如例8.1中,函數(shù)max的定義放在main 函數(shù)之前,因此可在main函數(shù)中省去對max函數(shù)的函數(shù)說明int max(int a,int b)。
3) 如在所有函數(shù)定義之前,在函數(shù)外預(yù)先說明了各個(gè)函數(shù)的類型,則在以后的各主調(diào)函數(shù)中,可不再對被調(diào)函數(shù)作說明。例如:
char str(int a);
float f(float b);
main()
{
……
}
char str(int a)
{
……
}
float f(float b)
{
……
}
其中第一,二行對str函數(shù)和f函數(shù)預(yù)先作了說明。因此在以后各函數(shù)中無須對str和f函數(shù)再作說明就可直接調(diào)用。
4) 對庫函數(shù)的調(diào)用不需要再作說明,但必須把該函數(shù)的頭文件用include命令包含在源文件前部。
8.5 函數(shù)的嵌套調(diào)用
C語言中不允許作嵌套的函數(shù)定義。因此各函數(shù)之間是平行的,不存在上一級函數(shù)和下一級函數(shù)的問題。但是C語言允許在一個(gè)函數(shù)的定義中出現(xiàn)對另一個(gè)函數(shù)的調(diào)用。這樣就出現(xiàn)了函數(shù)的嵌套調(diào)用。即在被調(diào)函數(shù)中又調(diào)用其它函數(shù)。這與其它語言的子程序嵌套的情形是類似的。其關(guān)系可表示如圖。
圖表示了兩層嵌套的情形。其執(zhí)行過程是:執(zhí)行main函數(shù)中調(diào)用a函數(shù)的語句時(shí),即轉(zhuǎn)去執(zhí)行a函數(shù),在a函數(shù)中調(diào)用b 函數(shù)時(shí),又轉(zhuǎn)去執(zhí)行b函數(shù),b函數(shù)執(zhí)行完畢返回a函數(shù)的斷點(diǎn)繼續(xù)執(zhí)行,a函數(shù)執(zhí)行完畢返回main函數(shù)的斷點(diǎn)繼續(xù)執(zhí)行。
【例8.4】計(jì)算s=22!+32!
本題可編寫兩個(gè)函數(shù),一個(gè)是用來計(jì)算平方值的函數(shù)f1,另一個(gè)是用來計(jì)算階乘值的函數(shù)f2。主函數(shù)先調(diào)f1計(jì)算出平方值,再在f1中以平方值為實(shí)參,調(diào)用 f2計(jì)算其階乘值,然后返回f1,再返回主函數(shù),在循環(huán)程序中計(jì)算累加和。
long f1(int p)
{
int k;
long r;
long f2(int);
k=p*p;
r=f2(k);
return r;
}
long f2(int q)
{
long c=1;
int i;
for(i=1;i=q;i++)
c=c*i;
return c;
}
main()
{
int i;
long s=0;
for (i=2;i=3;i++)
s=s+f1(i);
printf("\ns=%ld\n",s);
}
在程序中,函數(shù)f1和f2均為長整型,都在主函數(shù)之前定義,故不必再在主函數(shù)中對f1和f2加以說明。在主程序中,執(zhí)行循環(huán)程序依次把i值作為實(shí)參調(diào)用函數(shù)f1求i2值。在f1中又發(fā)生對函數(shù)f2的調(diào)用,這時(shí)是把i2的值作為實(shí)參去調(diào)f2,在f2 中完成求i2!的計(jì)算。f2執(zhí)行完畢把C值(即i2!)返回給f1,再由f1返回主函數(shù)實(shí)現(xiàn)累加。至此,由函數(shù)的嵌套調(diào)用實(shí)現(xiàn)了題目的要求。由于數(shù)值很大,所以函數(shù)和一些變量的類型都說明為長整型,否則會造成計(jì)算錯(cuò)誤。
函數(shù)名加(實(shí)參),這樣吧...舉個(gè)例子你看一下...
int add(int x,int y)
{
int x,y;
int z;
z=x+y;
return z;
}//定義一個(gè)z=x+y的函數(shù)
int main()//主函數(shù)
{
int a=10,b=20;
int m;
m=add(a,b);//這句就是函數(shù)的調(diào)用...調(diào)用了add函數(shù)
printf("%d",m);
return m;
}
理解了沒...還沒的話...仔細(xì)看下教材...這個(gè)問題很容易解決的...