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

正文內(nèi)容

《模塊化程序設(shè)計(jì)》ppt課件-文庫吧

2024-12-29 08:22 本頁面


【正文】 號(hào) */ 33 C語言程序設(shè)計(jì) [例 ]求二實(shí)數(shù)之和 main ( ) { float add(float,float)。 float a, b, c; scanf(%f%f,amp。a, amp。b)。 c=add(a, b)。 /*函數(shù)表達(dá)式調(diào)用形式 */ printf (sum= %f; c)。 } float add( float x, float y) { float z。 z=x+y。 return z。 } 說明:調(diào)用過程中參數(shù)的對(duì)應(yīng)關(guān)系。 C語言程序設(shè)計(jì) [例 ] 定義一個(gè)求兩個(gè)整數(shù)中極大值的 max()函數(shù) 。 /*功能:求 2個(gè)整數(shù)中的較大數(shù) */ /*形參: 2個(gè) , 整型 */ /*返回值: 2個(gè)整數(shù)中的較大數(shù) */ int max(int n1,int n2) /*函數(shù)定義 */ { int z。 z= n1 n2 ? n1 : n2。 return (z); } C語言程序設(shè)計(jì) void main( void ) { int max(int n1, int n2); /*對(duì)被調(diào)函數(shù)說明 */ int num1,num2; printf(input two numbers: ); scanf(%d%d, amp。num1, amp。num2); printf(max=%d\n, max(num1, num2)); } C語言程序設(shè)計(jì) 四 、 虛實(shí)結(jié)合與傳值調(diào)用 一個(gè)函數(shù)中的函數(shù)體 , 只有在該函數(shù)被調(diào)用時(shí)才會(huì)執(zhí)行 。 在函數(shù)被調(diào)用時(shí)進(jìn)行如下兩個(gè)操作: ◆ 將函數(shù)調(diào)用中的實(shí)際參數(shù)值傳送給函數(shù)定義中的形式參數(shù); ◆ 將流程從調(diào)用處轉(zhuǎn)到被調(diào)用函數(shù)的開頭 , 開始執(zhí)行函數(shù)體中的代碼 。 C語言程序設(shè)計(jì) 函數(shù)調(diào)用的一般形式 格式: 函數(shù)名 (實(shí)參表 ) 函數(shù)按名稱調(diào)用。 如果是調(diào)用無參函數(shù),則實(shí)參表可以沒有,但括號(hào)不能省略。用逗號(hào)分隔多個(gè)實(shí)參。實(shí)參與形參的個(gè)數(shù)應(yīng)相等,類型應(yīng)一致。實(shí)參與形參按順序?qū)?yīng),一一傳遞數(shù)據(jù)。 調(diào)用時(shí),實(shí)參必須具有確定的值,且與形參個(gè)數(shù)相等、類型匹配。 C語言程序設(shè)計(jì) ( 1)形參與實(shí)參 形式參數(shù) :定義函數(shù)時(shí)函數(shù)名后面括號(hào)中的變量名 實(shí)際參數(shù) :調(diào)用函數(shù)時(shí)函數(shù)名后面括號(hào)中的表達(dá)式 開參是虛的 , 類似于占位符 , 而實(shí)參是實(shí)的 , 具體的 。 形參出現(xiàn)在函數(shù)定義中 , 只能在該函數(shù)體內(nèi)表示欲處理的數(shù)據(jù) , 并沒有確定的值 。 發(fā)生函數(shù)調(diào)用時(shí) , 調(diào)用函數(shù)把實(shí)參的值傳送給被調(diào)用函數(shù)中的形參 , 從而實(shí)現(xiàn)調(diào)用函數(shù)向被調(diào)用函數(shù)的數(shù)據(jù)傳送 。 C語言程序設(shè)計(jì) ( 2)函數(shù)調(diào)用的方式 按函數(shù)在程序中出現(xiàn)的位置分,有 2種函數(shù)調(diào)用方式。 1) 函數(shù)語句 函數(shù)語句的調(diào)用 , 是指把被調(diào)函數(shù)作為一個(gè)獨(dú)立的語句直接出現(xiàn)在主調(diào)函數(shù)中 。 2) 函數(shù)表達(dá)式 被調(diào)函數(shù)出現(xiàn)在主調(diào)函數(shù)中的表達(dá)式中 , 這種表達(dá)式稱為函數(shù)表達(dá)式 。 在被調(diào)函數(shù)中 , 必須有一個(gè)函數(shù)返回值 , 返回主調(diào)函數(shù)以參加表達(dá)式的運(yùn)算 。 C語言程序設(shè)計(jì) ( 3)說明 1)按函數(shù)名調(diào)用函數(shù)。 2) 實(shí)參在類型上按順序與形參一一對(duì)應(yīng)和匹配 。如果類型不匹配, C編譯程序?qū)促x值兼容的規(guī)則進(jìn)行轉(zhuǎn)換。如果實(shí)參和形參的類型不賦值兼容,通常并不給出出錯(cuò)信息,且程序仍然繼續(xù)執(zhí)行,只是得不到正確的結(jié)果。 3) 實(shí)參可以是常量、變量、表達(dá)式、函數(shù)等 。無論實(shí)參是何種類型的量,在進(jìn)行函數(shù)調(diào)用時(shí),它們都必須具有確定的值,以便把這些值傳送給形參。 因此,應(yīng)預(yù)先用賦值、輸入等辦法,使實(shí)參獲得確定的值。 C語言程序設(shè)計(jì) 4) 形參變量只有在被調(diào)用時(shí) , 才分配內(nèi)存單元;調(diào)用結(jié)束時(shí) , 即刻釋放所分配的內(nèi)存單元 。 因此 , 形參只有在該函數(shù)內(nèi)有效 。 調(diào)用結(jié)束 , 返回調(diào)用函數(shù)后 , 則不能再使用該形參變量 。 5) 實(shí)參對(duì)形參的數(shù)據(jù)傳送是單向的 , 即只能把實(shí)參的值傳送給形參 , 而不能把形參的值反向地傳送給實(shí)參 。 6) 實(shí)參和形參占用不同的內(nèi)存單元 , 即使同名也互不影響 。 函數(shù)調(diào)用時(shí)的虛實(shí)結(jié)合 參數(shù)是函數(shù)調(diào)用時(shí)進(jìn)行信息交換的載體 。 實(shí)參是調(diào)用函數(shù)中的變量 , 形參是被調(diào)函數(shù)中的變量 。 函數(shù)調(diào)用時(shí)實(shí)現(xiàn)了實(shí)參與形參的結(jié)合 。 這稱為 “ 虛實(shí)結(jié)合 ” 。 include float add( ); int main(void) { float x=, y=。 printf (″%f+%f=%f\ n″, x,y, add(x,y))。 } float add (unsigned int a, unsigned int b) { printf(″a=%u, b=%u\ n″, a,b)。 return (a+b)。 } 分析結(jié)果為什么錯(cuò)誤? 如何改正? 傳值調(diào)用的虛實(shí)結(jié)合過程 程序進(jìn)行編譯時(shí) , 并不為形式參數(shù)分配存儲(chǔ)空間 。 只有在被調(diào)用時(shí) , 形式參數(shù)才臨時(shí)地占有存儲(chǔ)空間, 其過程如下: ( 1) 調(diào)用開始 , 系統(tǒng)為形參開辟一個(gè)臨時(shí)存儲(chǔ)區(qū), 形參與實(shí)參各占一個(gè)獨(dú)立的存儲(chǔ)空間 。 ( 2) 將各實(shí)參之值傳遞給對(duì)應(yīng)形參 , 形參得到了實(shí)參的值 。 這種虛實(shí)結(jié)合方式稱為 “ 值結(jié)合 ” 。 ( 3) 函數(shù)返回時(shí) , 臨時(shí)存儲(chǔ)區(qū)也被撤銷 。 特別注意:在 C程序中實(shí)參與形參是傳值調(diào)用 (call by value) 的特點(diǎn) 。 即實(shí)參與形參是 “ 單向的值傳遞 ” 即函數(shù)中對(duì)形參變量的操作不會(huì)影響到調(diào)用函數(shù)中的實(shí)參變量 , 即形參值不能傳回給實(shí)參 。 include void swap (int x, int y)。 int main(void) { int a=3, b=5。 swap (a,b)。 printf (″a=%d, b=%d\ n″, a,b)。 return 0。 } void swap (int x, int y) { int temp。 temp=x, x=y, y=temp。 /* 交換變量的值 */ printf(″x=%d,y=%d\ n″,x,y)。 } 執(zhí)行結(jié)果: x=5,y=3 a=3,b=5 企圖交換變量a, b的值,沒有成功 五 、 函數(shù)的嵌套調(diào)用 C語言的函數(shù)定義是互相平行 、 獨(dú)立的 函數(shù)不能嵌套定義 可以嵌套調(diào)用函數(shù) 調(diào)用一個(gè)函數(shù)的過程中 , 又 可以 調(diào)用另一個(gè)函數(shù) 。 函數(shù)的嵌套調(diào)用 的過程 main函數(shù) ① 調(diào)用 a函數(shù) ⑨ 結(jié)束 a函數(shù) ③ 調(diào)用 b函數(shù) ⑦ ② ⑧ b函數(shù) ⑤ ④ ⑥ C語言程序設(shè)計(jì) [例 ]一個(gè)偶數(shù)為兩個(gè)素?cái)?shù)之和。 德國(guó)數(shù)學(xué)家哥德巴赫 (GoLdbach)在 1725年寫給歐拉(Euler)的信中寫下了以下猜想:任何不小于 6的偶數(shù)都是兩個(gè)素?cái)?shù)之和 (俗稱為 1+1)。如 6= 3+ 3, 12= 5+ 7等等。 兩個(gè)多世紀(jì)過去了,這一猜想既無法證明.也沒被推翻。試設(shè)計(jì)程序驗(yàn)證這一猜想是否成立。 ①對(duì)于一個(gè)偶數(shù),找出一個(gè)小于它的數(shù),判斷是否是素?cái)?shù) ,②如果是就計(jì)算該偶數(shù)與該素?cái)?shù)的差并判斷它是否是素?cái)?shù)。如果兩者都是素?cái)?shù)則猜想得到驗(yàn)證。 問題表現(xiàn)為:任意輸入一個(gè)偶數(shù),可將其分解為兩個(gè)素?cái)?shù)之和。 50 C語言程序設(shè)計(jì) include main() { void even(int x)。 int a。 printf(“ 請(qǐng)輸入一個(gè)偶數(shù): ”)。 scanf(“%d”,amp。a)。 if (a%2==0) even(a)。 /*函數(shù)調(diào)用語句 */ else printf(“ 所輸入的數(shù)不是偶數(shù)! \n”)。 } 51 C語言程序設(shè)計(jì) void even(int x) { int isprime(int a)。 int i。 for(i=2。i=x/2。i++) if ( isprime(i) amp。amp。 isprime(xi) ) { printf(“%d=%d+%d \n”,x,i,x i)。 return。 } } C語言程序設(shè)計(jì) int isprime(int a) { int i。 for(i=2。i=a/2。i++) if(a%i==0) return 0。 return 1。 } 注意兩個(gè)返回語句。 C語言程序設(shè)計(jì) [例 ]輸入一個(gè)由若干個(gè)單詞組成的文本串,每個(gè)單詞之間用空格、換行符、跳格符(制表符)分隔,且分隔符可以不至一個(gè)(如連續(xù)的兩個(gè)空格),以 @作為輸入的結(jié)束標(biāo)志,統(tǒng)計(jì)此文本串單詞的個(gè)數(shù)? 如輸入: This is a student.@ 分析: 因?yàn)橛?jì)算機(jī)無法直接識(shí)別單詞 ,所以從輸入的文本串中逐個(gè)讀取每一個(gè)字符,當(dāng)讀到每一個(gè)單詞的第一個(gè)字母時(shí),計(jì)數(shù)器加 1 。 如何知道讀取到的字符是單詞的第一個(gè)字母呢? 如果讀取到的字符是分隔符,則不是單詞的一部分; 如果讀取到的字 符 不是分隔符,且它的上一個(gè)字符是分隔符,則它是單詞的第一個(gè)字母,計(jì)數(shù)器加 1。 如果讀取到的字符不是分隔符,且它的上一個(gè)字符也不是分隔符,則它是單詞的非首字母,計(jì)數(shù)器不加 1。 C語言程序設(shè)計(jì) 當(dāng)前讀取到的字符是否是單詞的一部分,可用一個(gè)狀態(tài)變量來表示,如果是單詞的一部分,則用 1表示,反之用 0表示。 include define IN 1 define OUT 0 int countword()。 main() { int n。 n=countword()。 printf(“ 單詞數(shù)為: %d\n”,n)。 } 55 C語言程序設(shè)計(jì) int countword() /*沒有形參 */ { int c,nw,state。 state=OUT。 nw=0。 while((c=getchar())!=@) if(c==‘ ‘||c==‘ \n’||c==‘ \t’) state=OUT。 else if(state==OUT) { state=IN。 nw++。 } return(nw)。 } 六 、 遞歸函數(shù) 一個(gè)函數(shù)可以調(diào)用另一個(gè)函數(shù) 。 遞歸函數(shù) —— 一個(gè)函數(shù)自己調(diào)用自己 (直接地或間接地調(diào)用自己 )。 前者稱為直接遞歸調(diào)用函數(shù) , 后者稱為間接遞歸調(diào)用函數(shù) 。 C語言程序設(shè)計(jì) 遞歸調(diào)用是指一個(gè)函數(shù)直接或間接地調(diào)用自己 。 這種函數(shù)稱為遞歸函數(shù) 。 自己調(diào)用自己 , 即要解決一個(gè)問題 , 轉(zhuǎn)化為一個(gè)用同樣的方法解決的新問題 , 只是參數(shù)在不斷地遞增或者遞減 。 在遞歸調(diào)用中 , 主調(diào)函數(shù)又是被調(diào)函數(shù) 。 執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身 。 對(duì)于一些特定的問題 , 用遞歸算法來解決 , 可以簡(jiǎn)化問題的復(fù)雜程度 。 2/10/2022 582/10/2022 59C語言程序設(shè)計(jì) 例:用遞歸調(diào)用求 n!。 要用遞歸法解決此問題 , 必須明確兩個(gè)問題: ① 、 遞歸算法 n!=n*(n1)! (n1)!=(n1)*(n2)!。 求 n的階乘的問題 , 轉(zhuǎn)化為用同樣的方法求 (n1)的階乘 。 如: 4! = 4*3! 3! = 3*2! 如果編寫成一個(gè)函數(shù) , 則調(diào)用如下: f(n)=n*f(n1)。 不斷地自己調(diào)用自己 。 C語言程序設(shè)計(jì) ② 、 遞歸終結(jié)條件 遞歸到一定的程度后 , 必須終止 。 如求階乘時(shí) , 當(dāng)求到 1!時(shí) , 必須停止遞歸 。 f(1)=1 這一條是必須的 , 否則將會(huì)沒完沒了的進(jìn)行下去 。 通常用條件判斷 , 滿足某種條件后就不再作遞歸調(diào)用 , 然后逐層返回 。 C語言程序設(shè)計(jì) 例如有函數(shù) f如下: int f(int x) { z=f(x- 1)。 return z。 } 上頁中的函數(shù)是一個(gè)遞歸函數(shù) 。 但是運(yùn)行該函數(shù)將無休止地調(diào)用其自身 , 這當(dāng)然是不正確的 。 為了防止遞歸調(diào)用無終止地進(jìn)行 , 必須在函數(shù)內(nèi)有終止遞歸調(diào)用的手段 。 C語言程序設(shè)計(jì) [例 ] 用遞歸
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1