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

正文內(nèi)容

c語言程序設(shè)計第8章(編輯修改稿)

2024-08-28 16:00 本頁面
 

【文章內(nèi)容簡介】 將求階乘的過程編成一個 函數(shù) fac,以不同的參數(shù)值 k 來調(diào)用函數(shù) )!(!!mnmnC mn ??fac k k! include include void main( ) { float c。 int m,n。 float fac(int )。/float fac( int x)。 scanf(“%d%d”,amp。m,amp。n)。 c=fac(n)/(fac(m)*fac(mn)) printf(“%.0f”,c)。 } float fac(int k) { float t=1。int i。 for (i=2,i=k。i++) t*=i; return t。 } C語言的函數(shù)定義都是互相平行、獨立的。 C語句不能嵌套定義函數(shù),但 可以嵌套調(diào)用函數(shù) ,也就是說,在調(diào)用一個函數(shù)的過程中,又調(diào)用另一個函數(shù)。 include void printstar( ) { printf(“ ************\n ”)。} void print_message( ) { printf(“How do you do!\n”)。 printstar( )。 } void main( ) { printstar( )。 print_message( )。 } 例 用弦截法求方程 f(x)=x35x2+16x80=0 的根 1. 取兩個不同點 x1,x2,如果 f(x1)和f(x2)符號相反 ,則 (x1,x2)區(qū)間內(nèi)必有一個根。如果 f(x1)與 f(x2)同符號 ,則應改變 x1,x2,直到f(x1)、 f(x2)異號為止。注意 xx2的值不應差太大 ,以保證(x1,x2)區(qū)間內(nèi)只有一個根。 2. 連接 (x1,f(x1))和 (x2,f(x2))兩點 ,此線(即弦 )交 x軸于 x。 方法: 例:讀程序,寫出結(jié)果 include float myfabs(float x) { return x0?x:x。 } float myfunc(float r) { return 2*myfabs(r)+1。 } void main() { float f=。 printf(%f,myfunc(f))。 } 程序運行結(jié)果是: ???????? 110)!1(1!nnnnn許多數(shù)學函數(shù)都是用遞歸形式定義的 ??????? ? 0011 nnxxx nn 在調(diào)用一個函數(shù)的過程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。 C語言的特點之一就在于允許函數(shù)的遞歸調(diào)用。例如: int f(int x) { int y,z。 z=f(y)。 return(2*z)。 } 在調(diào)用函數(shù) f 的過程中,又要調(diào)用 f 函數(shù),這是直接調(diào)用本函數(shù) .見圖。 開始 調(diào)用 f函數(shù) f 函數(shù) 在調(diào)用 f1 函數(shù)過程中要調(diào)用 f2 函數(shù),而在調(diào)用 f2函數(shù)過程中又要調(diào)用 f1 函數(shù)。 從圖上可以看到,這兩種遞歸調(diào)用都是 無終止 的自身調(diào)用??梢?用 if語句來控 制 ,只有在某一條件成立時才繼續(xù)執(zhí)行遞歸調(diào)用,否則就不再繼續(xù)。 開始 調(diào)用 f2函數(shù) 開始 調(diào)用 f1函數(shù) f1 函數(shù) f2 函數(shù) 例 有 5個人坐在一起,問第 5個人多少歲?他說比第 4個人大 2歲。問第 4個人歲數(shù),他說比第 3個人大 2歲。問第 3個人,又說比第 2個人大 2歲。問第 2個人,說比 第 1個人大 2歲。最后問第 1個人,他說是 10歲。請問第 5個人多大。 顯然,這是一個遞歸問題。每一個年齡都比其前 1個人的年齡大 2歲.即 age(5)=age(4)+2 age(4)=age(3)+2 age(3)=age(2)+2 age(2)=age(1)+2 age(1)=10 因此,除了第一個人,其余的人的年齡都需用遞歸法求出。 ???????? 112)1(10)(nnna g ena g e執(zhí)行過程如下: age函數(shù) n=5 main age(5) 輸出 age(5) c=age(4)+2 age函數(shù) n=4 c=age(3)+2 age函數(shù) n=3 c=age(2)+2 age函數(shù) n=2 c=age(1)+2 age函數(shù) n=1 c=10 age(2)=12 age(3)=14 age(4)=16 age(5)=18 int age(int n) /*遞歸函數(shù) */ { int c。 if(n==1) c=10。 else c=age(n1)+2。 return(c)。} main ( ) /*主函數(shù) */ { printf(“%d”,age(5))} age(5) 輸出 age(5) main( ) c=age(4)+2 age函數(shù) n=5 age(5)=18 c=age(1)+2 age函數(shù) n=2 age(2)=12 c=10 age函數(shù) n=1 age(1)=10 …… int age(int n) /*遞歸函數(shù) */ { int c。 if(n==1) c=10。 else c=age(n1)+2。 return(c)。 } main ( ) /*主函數(shù) */ { printf(“%d”,age(5)) } 遞歸結(jié)束條件 遞歸公式 遞歸函數(shù)編寫總結(jié): 1) 采用 if語句格式; 2)兩要素: 遞歸結(jié)束條件 遞歸公式 3)一般形式 if(遞歸結(jié)束條件 ) else 遞歸公式 4)遞歸公式中包含遞歸函數(shù)名,但參數(shù)不同 5)if語言前的語句在遞歸進入時執(zhí)行, if語句后的語句在遞歸返回時執(zhí)行 例 n! 遞推法: 從 1開始,乘 2,乘 3, …… 一直乘到 n。其基本 原理是從一個已知事實推出下一個事實。 遞歸法: 當 n=1或 0時, n!=1;當 n1時, n!=n*(n1)!。 float fac(int n) { float f。 if(n0) printf(“n0,dataerror!”)。 else if(n==0||n==1) f=1。 else f=fac(n1)*n。 return(f)。 } main ( ) { int n。 float y。 printf(“input a integer number:”}。 scanf(“%d”,amp。n)。 y=fac(n)。 printf(“%d!=%”,n,y)。 } 數(shù)組作為函數(shù)參數(shù) 數(shù)組元素 作函數(shù)實參: “值傳遞”方式,即單向傳遞 。 例 有兩個數(shù)組 a, b,各有 10個元素,將它們對應地逐個相比。如果 a數(shù)組中的元素大于 b數(shù)組中的相應元素的數(shù)目多于 b數(shù)組中元素中大于 a數(shù)組中相應元素的數(shù)目,則認為 a數(shù)組大于 b數(shù)組,并分別統(tǒng)計出兩個數(shù)組相應元素大于、等于、小于的次數(shù)。 分析 : 1) 對于兩個數(shù)組中的元素比較結(jié)果,我們可以用3個變量來記錄; 2) 為了保持程序的簡潔,用一個函數(shù)來進行數(shù)組元素的比較,比較結(jié)果用該函數(shù)的返回值表示。 main ( ) { int large(int x,int y)。 int a[10],b[10],i,n=0,m=0,k=0。 printf(“enter array a:\n”)。 for(i=0。i10。i++) scanf(“%d”,amp。a[i])。 printf(“\n”)。 printf(“enter array b:\n”)。 for(i=0。i10。i++) scanf(“%d”,amp。b[i])。 printf(“\n”)。 for(i=0。i10,i++) { if(large(a[i],b[i])==1) n=n+1。 else if(large(a[i],b[i])==0) m=m+1。 else k=k+1。 } printf(“a[i]b[i]%d imes\n a[i]=b[i]%d imes\n a[i]b[i]%d imes\n”,n,m,k)。 if(nk) printf(“array a is larger than array b\n”)。 if(nk) printf(“array a is smaller than array b\n)”。 else printf(“array a is equal to array b\n)”。 } int large(int x,int y) { int flag。 if(xy) flag=1。 else if (xy) flag=1。 else flag=0。 return(flag)。 } 輸入數(shù)組 a和數(shù)組 b的數(shù)據(jù) 調(diào)用 large函數(shù)進行數(shù)組元素比較 large函數(shù),返回比較結(jié)果 數(shù)組名可作函數(shù)參數(shù),此時 實參與形參都應用數(shù)組名 。 說明: 1) 用數(shù)組名作函數(shù)參數(shù), 應該在主調(diào)函數(shù)和被調(diào)用函數(shù)分別定義數(shù)組 ,不能只在一方定義; 2) 實參數(shù)組與形參數(shù)組 類型應一致 ,否則出錯; 3) 實參數(shù)組與形參數(shù)組 大小可以一致也可以不一致 , C編譯對形參數(shù)組大小不作檢查, 只是將實參數(shù)組的首地址傳給形參數(shù)組 ; 4) 形參數(shù)組也可以不指定大小,在定義數(shù)組時在數(shù)組名后面跟一個空的方括弧,為了在被調(diào)用函數(shù)中處理數(shù)組元素的需要, 可以另設(shè)一個參數(shù),傳遞數(shù)組元素的個數(shù) 。 5) 數(shù)組名作函數(shù)實參,不是值傳遞而是 地址傳遞 ,實參和形參數(shù)組將共占用同一段內(nèi)存單元 .如果形參數(shù)組中各元素發(fā)生變化會使實參數(shù)組元素的值同時發(fā)生變化。 include int max( int x[ ],int n) { int i,m。 m=x[0]。 for (i=1。in。i++) if(mx[i]) m=x[i]。 } main() { int a[10],i。 printf(“Enter 10 integer:\n)。 for (i=0。i10。i++) scanf(“%d”,amp。a[i])。 printf(“Max is %d”,max(a,10))。 } include int max( int x[10]) { int i,m。 m=x[0]。 for (i=1。i10。i++) if(mx[i]) m=x[i]。 } main() { int a[10],i。 printf(“Enter 10 integer:\n)。 for (i=0。i10。i++) scanf(“%d”,amp。a[i])。 printf(“Max is %d”,max(a))。 } 例 有一個一維數(shù)組 score,內(nèi)放 10個學生成績,求平均成績。 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)。 } main( ) { float score[10],aver。 int i。 printf(“input 10 score:\n”)。 for(i=0。i10。i++) scanf(“%f”,amp。score[i])。 printf(“\n”)。 aver=average(score)。 printf(“average score is %”,aver)。 } 例 用選擇法對數(shù)組中
點擊復制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1