freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第7章用函數(shù)實現(xiàn)模塊化程序設(shè)計convertor(編輯修改稿)

2025-08-03 15:50 本頁面
 

【文章內(nèi)容簡介】 +2age函數(shù)n=3c=10age函數(shù)n=1age(1)=10age(2)=12age(3)=14age(4)=16age(5)=1818 用遞歸方法求n!。解題思路:求n!可以用遞推方法:即從1開始,乘2,再乘3……一直乘到n。遞推法的特點是從一個已知的事實(如1!=1)出發(fā),按一定規(guī)律推出下一個事實(如2!=1!*2),再從這個新的已知的事實出發(fā),再向下推出一個新的事實(3!=3*2!)。n!=n*(n1)!。 用遞歸方法求n!。解題思路:求n!也可以用遞歸方法,即5!等于4?。?,而4?。剑常。础?,1?。剑笨捎孟旅娴倪f歸公式表示:include int main() {int fac(int n)。 int n。 int y。 printf(input an integer number:)。 scanf(%d,amp。n)。 y=fac(n)。 printf(%d!=%d\n,n,y)。 return 0。}int fac(int n) { int f。 if(n0) printf(n0,data error!)。 else if(n==0 | | n==1) f=1。 else f=fac(n1)*n。 return(f)。 }注意溢出fac(5)輸出fac(5)mainf=fac(4)5fac函數(shù)n=5f=fac(3)4fac函數(shù)n=4f=fac(1)2fac函數(shù)n=2f=fac(2)3fac函數(shù)n=3f=1fac函數(shù)n=1fac(1)=1fac(2)=2fac(3)=6fac(4)=24fac(5)=120120 Hanoi(漢諾)塔問題。古代有一個梵塔,塔內(nèi)有3個座A、B、C,開始時A座上有64個盤子,盤子大小不等,大的在下,小的在上。有一個老和尚想把這64個盤子從A座移到C座,但規(guī)定每次只允許移動一個盤,且在移動過程中在3個座上都始終保持大盤在下,小盤在上。在移動過程中可以利用B座。要求編程序輸出移動一盤子的步驟。解題思路:要把64個盤子從A座移動到C座,需要移動大約264 次盤子。一般人是不可能直接確定移動盤子的每一個具體步驟的老和尚會這樣想:假如有另外一個和尚能有辦法將上面63個盤子從一個座移到另一座。那么,問題就解決了。此時老和尚只需這樣做:解題思路:(1) 命令第2個和尚將63個盤子從A座移到B座(2) 自己將1個盤子(最底下的、最大的盤子)從A座移到C座(3) 再命令第2個和尚將63個盤子從B座移到C座ABC……將63個從A到B第1個和尚的做法ABC將63個從A到B第1個和尚的做法ABC將1個從A到C第1個和尚的做法ABC將1個從A到C第1個和尚的做法ABC將63個從B到C第1個和尚的做法ABC將63個從B到C第1個和尚的做法ABC……將62個從A到C第2個和尚的做法ABC將62個從A到C第2個和尚的做法ABC將1個從A到B第2個和尚的做法ABC將1個從A到B第2個和尚的做法ABC將62個從C到B第2個和尚的做法ABC將62個從C到B第2個和尚的做法第3個和尚的做法第4個和尚的做法第5個和尚的做法第6個和尚的做法第7個和尚的做法……第63個和尚的做法第64個和尚僅做:將1個從A移到CABC將3個盤子從A移到C的全過程將2個盤子從A移到BABC將3個盤子從A移到C的全過程將2個盤子從A移到BABC將3個盤子從A移到C的全過程將1個盤子從A移到CABC將3個盤子從A移到C的全過程將1個盤子從A移到CABC將3個盤子從A移到C的全過程將2個盤子從B移到CABC將3個盤子從A移到C的全過程將2個盤子從B移到CABC將2個盤子從A移到B的過程將1個盤子從A移到CABC將2個盤子從A移到B的過程將1個盤子從A移到CABC將2個盤子從A移到B的過程將1個盤子從A移到BABC將2個盤子從A移到B的過程將1個盤子從A移到BABC將2個盤子從A移到B的過程將1個盤子從C移到BABC將2個盤子從A移到B的過程將1個盤子從C移到BABC將2個盤子從B移到C的過程ABC將2個盤子從B移到C的過程ABC將2個盤子從B移到C的過程ABC將2個盤子從B移到C的過程由上面的分析可知:將n個盤子從A座移到C座可以分解為以下3個步驟:(1) 將A上n1個盤借助C座先移到B座上(2) 把A座上剩下的一個盤移到C座上(3) 將n1個盤從B座借助于A座移到C座上可以將第(1)步和第(3)步表示為:將“one”座上n1個盤移到“two”座(借助“three”座)。在第(1)步和第(3)步中,one 、two、three和A、B、C的對應(yīng)關(guān)系不同。對第(1)步,對應(yīng)關(guān)系是one對應(yīng)A,two對應(yīng)B,three對應(yīng)C。對第(3)步,對應(yīng)關(guān)系是one對應(yīng)B,two對應(yīng)C,three對應(yīng)A。把上面3個步驟分成兩類操作:(1) 將n1個盤從一個座移到另一個座上(n>1)。這就是大和尚讓小和尚做的工作,它是一個遞歸的過程,即和尚將任務(wù)層層下放,直到第64個和尚為止。(2) 將1個盤子從一個座上移到另一座上。這是大和尚自己做的工作。編寫程序。用hanoi函數(shù)實現(xiàn)第1類操作(即模擬小和尚的任務(wù))用move函數(shù)實現(xiàn)第2類操作(模擬大和尚自己移盤)函數(shù)調(diào)用hanoi(n,one,)表示將n個盤子從“one”座移到“three”座的過程(借助“two”座)函數(shù)調(diào)用move(x,y)表示將1個盤子從x 座移到y(tǒng) 座的過程。x和y是代表A、B、C座之一,根據(jù)每次不同情況分別取A、B、C代入include int main(){ void hanoi(int n,char one, char two,char three)。 int m。 printf(“the number of diskes:)。 scanf(%d,amp。m)。 printf(move %d diskes:\n,m)。 hanoi(m,39。A39。,39。B39。,39。C39。)。}void hanoi(int n,char one,char two, char three) { void move(char x,char y)。 if(n==1) move(one,three)。 else { hanoi(n1,one,three,two)。 move(one,three)。 hanoi(n1,two,one,three)。 } }void move(char x,char y) { printf(%c%c\n,x,y)。 } 輸入10個數(shù),要求輸出其中值最大的元素和該數(shù)是第幾個數(shù)。解題思路:定義數(shù)組a,用來存放10個數(shù)設(shè)計函數(shù)max,用來求兩個數(shù)中的大者在主函數(shù)中定義變量m,初值為a[0],每次調(diào)用max函數(shù)后的返回值存放在m中用“打擂臺”算法,依次將數(shù)組元素a[1]到a[9]與m比較,最后得到的m值就是10個數(shù)中的最大者include int main(){ int max(int x,int y)。 int a[10],m,n,i。 printf(“10 integer numbers:\n)。 for(i=0。i10。i++) scanf(%d,amp。a[i])。 printf(\n)。for(i=1,m=a[0],n=0。i10。i++) { if (max(m,a[i])m) { m=max(m,a[i])。 n=i。 } } printf(“l(fā)argest number is %d\n,m)。 printf(“%dth number.\n“,n+1)。}int max(int x,int y) { return(xy?x:y)。 }除了可以用數(shù)組元素作為函數(shù)參數(shù)外,還可以用數(shù)組名作函數(shù)參數(shù)(包括實參和形參)用數(shù)組元素作實參時,向形參變量傳遞的是數(shù)組元素的值用數(shù)組名作函數(shù)實參時,向形參 傳遞的是數(shù)組首元素的地址 有一個一維數(shù)組score,內(nèi)放10個學(xué)生成績,求平均成績。解題思路:用函數(shù)average求平均成績,用數(shù)組名作為函數(shù)實參,形參也用數(shù)組名在average函數(shù)中引用各數(shù)組元素,求平均成績并返回main函數(shù)include int main(){ float average(float array[10])。 float score[10],aver。 int i。 printf(input 10 scores:\n)。 for(i=0。i10。i++) scanf(%f,amp。score[i])。 printf(\n)。 aver=average(score)。 printf(%\n,aver)。 return 0。} 定義實參數(shù)組float average(float array[10]){ int i。 float aver,sum=array[0]。 for(i=1。i10。i++) sum=sum+array[i]。 aver=sum/10。 return(aver)。}定義形參數(shù)組相當(dāng)于score[0]相當(dāng)于score[i] 有兩個班級,分別有35名和30名學(xué)生,調(diào)用一個average函數(shù),分別求這兩個班的學(xué)生的平均成績。解題思路:需要解決怎樣用同一個函數(shù)求兩個不同長度的數(shù)組的平均值的問題定義average函數(shù)時不指定數(shù)組的長度,在形參表中增加一個整型變量i從主函數(shù)把數(shù)組實際長度從實參傳遞給形參i這個i用來在average函數(shù)中控制循環(huán)的次數(shù)為簡化,設(shè)兩個班的學(xué)生數(shù)分別為5和10include int main(){ float average(float array[ ],int n)。 float score1[5]={,97,60,55}。 float score2[10]={,99, 77,54,60,}。 printf(“%\n”,average(score1,5))。 printf(“%\n”,average(score2,10))。 return 0。}float average(float array[ ],int n) { int i。 float aver,sum=array[0]。 for(i=1。in。i++) sum=sum+array[i]。 aver=sum/n。 return(aver)。}調(diào)用形式為average(score1,5)時相當(dāng)于score1[0]相當(dāng)于score1[i]相當(dāng)于5float average(float array[ ],int n) { int i。 float aver,sum=array[0]。 for(i=1。in。i++) sum=sum+array[i]。 aver=sum/n。 return(aver)。}調(diào)用形式為average(score2,10)時相當(dāng)于score2[0]相當(dāng)于score2[i]相當(dāng)于10。解題思路:所謂選擇法就是先將10個數(shù)中最小的數(shù)與a[0]對換;再將a[1]到a[9]中最小的數(shù)與a[1]對換……每比較一輪,找出一個未經(jīng)排序的數(shù)中最小的一個共比較9輪a[0] a[1] a[2] a[3] a[4]3 6 1 9 41 6 3 9 41 3 6 9 41 3 4 9 61 3 4 6 9小到大排序include int main(){ void sort(int array[],int n)。 int a[10],i。
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1