【正文】
int m,n。解題思路:調(diào)用一個(gè)函數(shù)可以得到一個(gè)函數(shù)返回值,現(xiàn)在希望通過(guò)函數(shù)調(diào)用能得到3個(gè)結(jié)果。i10。 Max=Min=array[0]。 }ave score 10 Max Minaver array n Max Minmain函數(shù)average函數(shù)建議不在必要時(shí)不要使用全局變量 若外部變量與局部變量同名,分析結(jié)果。 c=ab?a:b。int max(int a,int b) { int c。include int main(){ int f(int)。 b=b+1。i++) printf(“%d\n”,f(a))。include int main(){ int f(int)。 b=b+1。i++) printf(“%d\n”,f(a))。include int main(){ int f(int)。 b=b+1。i++) printf(“%d\n”,f(a))。include int main(){ int f(int)。 b=b+1。i++) printf(“%d\n”,f(a))。include int main(){ int f(int)。 b=b+1。i++) printf(“%d\n”,f(a))。include int main(){ int f(int)。 b=b+1。i++) printf(“%d\n”,f(a))。include int main(){ int f(int)。 b=b+1。i++) printf(“%d\n”,f(a))。解題思路:可以編一個(gè)函數(shù)用來(lái)進(jìn)行連乘,如第1次調(diào)用時(shí)進(jìn)行1乘1,第2次調(diào)用時(shí)再乘以2,第3次調(diào)用時(shí)再乘以3,依此規(guī)律進(jìn)行下去。 f=f*n。include int main(){ int max( )。}解題思路:分別編寫(xiě)兩個(gè)文件模塊,其中文件file1包含主函數(shù),另一個(gè)文件file2包含求am的函數(shù)。 c=A*b。i=n。 ……}只能用于本文件本文件仍然不能用說(shuō)明: 不要誤認(rèn)為對(duì)外部變量加static聲明后才采取靜態(tài)存儲(chǔ)方式,而不加static的是采取動(dòng)態(tài)存儲(chǔ)聲明局部變量的存儲(chǔ)類(lèi)型和聲明全局變量的存儲(chǔ)類(lèi)型的含義是不同的對(duì)于局部變量來(lái)說(shuō),聲明存儲(chǔ)類(lèi)型的作用是指定變量存儲(chǔ)的區(qū)域以及由此產(chǎn)生的生存期的問(wèn)題,而對(duì)于全局變量來(lái)說(shuō),聲明存儲(chǔ)類(lèi)型的作用是變量作用域的擴(kuò)展問(wèn)題用static 聲明一個(gè)變量的作用是:(1) 對(duì)局部變量用static聲明,把它分配在靜態(tài)存儲(chǔ)區(qū),該變量在整個(gè)程序執(zhí)行期間不釋放,其所分配的空間始終存在。 register int d。 … f2( )?!璮1( )。 存儲(chǔ)類(lèi)別小結(jié)對(duì)一個(gè)數(shù)據(jù)的定義,需要指定兩種屬性:數(shù)據(jù)類(lèi)型和存儲(chǔ)類(lèi)別,分別使用兩個(gè)關(guān)鍵字例如: static int a。int main ( ){ ……}extern A。 int power(int n){ int i,y=1。A,amp。 return(m)。 printf(max is %d\n,max())。 如果用關(guān)鍵字extern對(duì)某變量作“外部變量聲明”,則可以從“聲明”處起,合法地使用該外部變量 調(diào)用函數(shù),求3個(gè)整數(shù)中的大者。 return 0。 return(a+b+c)。 for(i=0。}int f(int a){ auto int b=0。 return(a+b+c)。 for(i=0。}int f(int a){ auto int b=0。 return(a+b+c)。 for(i=0。}int f(int a){ auto int b=0。 return(a+b+c)。 for(i=0。}int f(int a){ auto int b=0。 return(a+b+c)。 for(i=0。}int f(int a){ auto int b=0。 return(a+b+c)。 for(i=0。}int f(int a){ auto int b=0。 return(a+b+c)。 for(i=0。}int f(int a){ auto int b=0。因此這類(lèi)局部變量稱(chēng)為自動(dòng)變量自動(dòng)變量用關(guān)鍵字auto作存儲(chǔ)類(lèi)別的聲明 局部變量的存儲(chǔ)類(lèi)別int f(int a) { auto int b,c=3。 return 0。 } } aver=sum/n。 }float average(float array[ ],int n) { int i。 printf(Please enter 10 scores:\n)。 …… return 0。 …… }char c1,c2。 }a、b、c僅在此函數(shù)內(nèi)有效x、y、i、j僅在此函數(shù)內(nèi)有效m、n僅在此函數(shù)內(nèi)有效float f1( int a) { int b,c。i++) for(j=0。include int main(){ int max_value(int array[][4])。 for(j=i+1。i10。 printf(enter array:\n)。 for(i=1。 float aver,sum=array[0]。}定義形參數(shù)組相當(dāng)于score[0]相當(dāng)于score[i] 有兩個(gè)班級(jí),分別有35名和30名學(xué)生,調(diào)用一個(gè)average函數(shù),分別求這兩個(gè)班的學(xué)生的平均成績(jī)。 return 0。 printf(input 10 scores:\n)。 n=i。 for(i=0。 else { hanoi(n1,one,three,two)。A39。用hanoi函數(shù)實(shí)現(xiàn)第1類(lèi)操作(即模擬小和尚的任務(wù))用move函數(shù)實(shí)現(xiàn)第2類(lèi)操作(模擬大和尚自己移盤(pán))函數(shù)調(diào)用hanoi(n,one,)表示將n個(gè)盤(pán)子從“one”座移到“three”座的過(guò)程(借助“two”座)函數(shù)調(diào)用move(x,y)表示將1個(gè)盤(pán)子從x 座移到y(tǒng) 座的過(guò)程。在第(1)步和第(3)步中,one 、two、three和A、B、C的對(duì)應(yīng)關(guān)系不同。古代有一個(gè)梵塔,塔內(nèi)有3個(gè)座A、B、C,開(kāi)始時(shí)A座上有64個(gè)盤(pán)子,盤(pán)子大小不等,大的在下,小的在上。 printf(%d!=%d\n,n,y)。 用遞歸方法求n!。int age(int n) { int c。C語(yǔ)言的特點(diǎn)之一就在于允許函數(shù)的遞歸調(diào)用。 return(m)。 return(m)。 return(m)。 m=max2(m,d)。 return(m)。 return(m)。 m=max2(m,c)。 int m。a,amp。d)。 return 0。 printf(“4 interger numbers:)。 z=x+y。 printf(Please enter a and b:)。 c=add(a,b)。 z=x+y。 printf(Please enter a and b:)。 z=xy?x:y。 int c。在發(fā)生函數(shù)調(diào)用時(shí),函數(shù)max的形參被臨時(shí)分配內(nèi)存單元。b)。解題思路:(1)函數(shù)名應(yīng)是見(jiàn)名知意,今定名為max(2) 由于給定的兩個(gè)數(shù)是整數(shù),返回主調(diào)函數(shù)的值(即較大數(shù))應(yīng)該是整型(3)max函數(shù)應(yīng)當(dāng)有兩個(gè)參數(shù),以便從主函數(shù)接收兩個(gè)整數(shù),因此參數(shù)的類(lèi)型應(yīng)當(dāng)是整型 函數(shù)調(diào)用時(shí)的數(shù)據(jù)傳遞先編寫(xiě)max函數(shù):int max(int x,int y){ int z。 ② 有參函數(shù)。庫(kù)函數(shù),它是由系統(tǒng)提供的,用戶(hù)不必自己定義而直接使用它們。說(shuō)明: (2) 一個(gè)源程序文件由一個(gè)或多個(gè)函數(shù)以及其他有關(guān)內(nèi)容(如預(yù)處理指令、數(shù)據(jù)聲明與定義等)組成。 print_star()。 print_star()。 print_star()。 ****************** How do you do! ******************解題思路:在輸出的文字上下分別有一行“*”號(hào),顯然不必重復(fù)寫(xiě)這段代碼,用一個(gè)函數(shù)print_star來(lái)實(shí)現(xiàn)輸出一行“*”號(hào)的功能。 }void print_message() { printf(“ How do you do!\n”)。 }void print_message() { printf(“ How do you do!\n”)。 }void print_message() { printf(“ How do you do!\n”)。說(shuō)明: (4) 所有函數(shù)都是平行的,即在定義函數(shù)時(shí)是分別進(jìn)行的,是互相獨(dú)立的。它是用以解決用戶(hù)專(zhuān)門(mén)需要的函數(shù)。 為什么要定義函數(shù)指定函數(shù)的名字,以便以后按名調(diào)用指定函數(shù)類(lèi)型,即函數(shù)返回值的類(lèi)型指定函數(shù)參數(shù)的名字和類(lèi)型,以便在調(diào)用函數(shù)時(shí)向它們傳遞數(shù)據(jù)指定函數(shù)的功能。 } 函數(shù)調(diào)用時(shí)的數(shù)據(jù)傳遞在max函數(shù)上面,再編寫(xiě)主函數(shù)include int main(){ int max(int x,int y)。 }實(shí)參可以是常量、變量或表達(dá)式 函數(shù)調(diào)用時(shí)的數(shù)據(jù)傳遞c=max(a,b)。應(yīng)當(dāng)在定義函數(shù)時(shí)指定函數(shù)值的類(lèi)型. 函數(shù)的返回值通常,希望通過(guò)函數(shù)調(diào)用使主調(diào)函數(shù)能得到一個(gè)確定的值,這就是函數(shù)值(函數(shù)的返回值)(3)在定義函數(shù)時(shí)指定的函數(shù)類(lèi)型一般應(yīng)該和return語(yǔ)句中的表達(dá)式類(lèi)型一致如果函數(shù)值的類(lèi)型和return語(yǔ)句中表達(dá)式的值不一致,則以函數(shù)類(lèi)型為準(zhǔn). 函數(shù)的返回值,將在max函數(shù)中定義的變量z改為float型。b)。解題思路:用add函數(shù)實(shí)現(xiàn)。b)。 float a,b,c。}float add(float x,float y){ float z。b)。 float add(float, float)。b,amp。 printf(“4 interger numbers:)。 return 0。d)。 m=max2(m,d)。 }max4函數(shù)a,b中較大者a,b,c中較大者a,b,c,d中最大者int max4(int a,int b,int c,int d){ int max2(int a,int b)。 }max2函數(shù)找a,b中較大者int max4(int a,int b,int c,int d){ int max2(int a,int b)。 }max2函數(shù)return(ab?a:b)。 }int max4(int a,int b,int c,int d){ int max2(int a,int b)。 }int max4(int a,int b,int c,int d){ int max2(int a,int b)。 }int max4(int a,int b,int c,int d){ int max2(int a,int b)。 }int max4(int a,int b,int c,int d){ int max2(int a,int b)。 return (2*z)。 return(c)。 int y。 if(n0) printf(n0,data error!)。要求編程序輸出移動(dòng)一盤(pán)子的步驟。把上面3個(gè)步驟分成兩類(lèi)操作:(1) 將n1個(gè)盤(pán)從一個(gè)座移到另一個(gè)座上(n>1)。 printf(“the number of diskes:)。,39。 } }void move(char x,char y) { printf(%c%c\n,x,