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

正文內(nèi)容

大學(xué)計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)c語(yǔ)言5ppt(已修改)

2024-10-30 13:22 本頁(yè)面
 

【正文】 程序設(shè)計(jì)基礎(chǔ) (國(guó)家級(jí)精品課 ) 張長(zhǎng)海 程序設(shè)計(jì)基礎(chǔ) (國(guó)家級(jí)精品課 ) ? 第十三章 若干深入問(wèn)題 第十三章 若干深入問(wèn)題 ? 函數(shù) – 函數(shù)指針 – 函數(shù)作參數(shù) – 間接遞歸 – 函數(shù)副作用 ? 運(yùn)算 – 賦值 – 順序表達(dá)式 – 條件表達(dá)式 – 位運(yùn)算 作業(yè) : ? 語(yǔ)句 – break – continue – for的延伸 – goto和標(biāo)號(hào) ? 數(shù)據(jù)組織 – 多維數(shù)組與指針 – 位段 – 共用體 ? 存儲(chǔ)類別 ? 編譯預(yù)處理 167。 函數(shù) 本節(jié)講述有關(guān)函數(shù)的一些深入內(nèi)容,包括:函數(shù)指針、函數(shù)作參數(shù)、間接遞歸、函數(shù)副作用等。 167。 不定方向的數(shù)組排序 ——函數(shù)指針 【 例 】 編函數(shù),對(duì)給定整數(shù)數(shù)組排序,遞增或遞減按給定參數(shù)決定。 【 例 】 編函數(shù),對(duì)給定整數(shù)數(shù)組排序,遞增或遞減按給定參數(shù)決定。 bool ascending(int a, int b){ return ab。 } /* 具體說(shuō)明函數(shù) */ bool descending(int a, int b){ return ab。 } void swap(int *a , int *b ) { int temp。 temp = *a。 *a = *b。 *b = temp。 } void sort ( int a[ ], int n, char *flag) { bool (*ad) (int,int)。 /* 函數(shù)指針 */ int pass,c。 if (flag==ascending)/* 根據(jù)排序方向給函數(shù)指針賦值具體函數(shù) */ ad = ascending 。 else ad = amp。descending 。 /* 函數(shù)名前加 “ amp?!焙筒患?“ amp。”意義相同 */ for ( pass=0。 passn。 pass++) /* 冒泡排序 */ for ( c=0。 cn1。 c++) if ( (*ad)(a[c],a[c+1]) ) /* 比較,此處使用函數(shù)指針 */ swap(amp。(a[c]),amp。(a[c+1]) )。 /* 交換 */ } 在本例題中, ? 函數(shù) sort有三個(gè)參數(shù), a是被排序的數(shù)組, n是數(shù)組長(zhǎng)度, flag是遞增或遞減標(biāo)記; ? 函數(shù) swap交換兩個(gè)變量的值; ? 函數(shù) ascending判斷是否 ab ; ? 函數(shù) descending判斷是否 ab 。 當(dāng)調(diào)用 sort 時(shí), sort 根據(jù) flag 的值是否“ ascending”,決定按遞增或遞減排序,把函數(shù)名 ascending 或 descending 賦值給函數(shù)指針變量 ad 。通過(guò)調(diào)用 ad 所指向的函數(shù),判斷是否需要交換數(shù)組兩個(gè)相鄰成分。當(dāng)需要交換時(shí),調(diào)用函數(shù) swap。經(jīng)過(guò)多次掃描,最終達(dá)到排序目的。 函數(shù) sort 使用了指向函數(shù)的指針調(diào)用函數(shù) ascending 或 descending 。 運(yùn)行結(jié)果演示 在數(shù)組與指針一節(jié)中曾指出數(shù)組名表示數(shù)組首地址,若將數(shù)組名賦值給一個(gè)類型兼容的指針變量,那么這個(gè)指針變量也指向這個(gè)數(shù)組。同樣函數(shù)名也具有上述相同的特性,即 函數(shù)名表示函數(shù)控制塊的首地址,函數(shù)控制塊中包括函數(shù)入口地址等信息。 如果用一個(gè)指針變量來(lái)標(biāo)識(shí)函數(shù)控制塊的首地址,則稱這個(gè)指針變量為指向函數(shù)的指針變量,簡(jiǎn)稱指向函數(shù)的指針、函數(shù)指針。函數(shù)指針聲明形式是: 類型符 ( *標(biāo)識(shí)符)(形式參數(shù)表); 其中 ? 標(biāo)識(shí)符是被聲明的 “ 指向函數(shù)的指針變量 ” 名; ? 類型符給出函數(shù)指針變量所指向函數(shù)的類型信息; ? 形式參數(shù)表給出函數(shù)指針變量所指向的函數(shù)的形式參數(shù)信息。 例如 int (*f) ( float d , char c ); 聲明指向“返回 int類型值的函數(shù)”的函數(shù)指針變量 f , f 所指向的函數(shù)有兩個(gè)形式參數(shù) : ? 第一個(gè)參數(shù)是 float類型, ? 第二個(gè)參數(shù)是 char類型。 函數(shù)指針聲明中用括號(hào)把星號(hào) “ *” 和 “ 標(biāo)識(shí)符 ” 括起來(lái)是必須的,比如上述的 “ ( *f) ” ,原因是由優(yōu)先級(jí)造成的。引進(jìn)函數(shù)指針概念不是憑空臆造的,它的作用在于 ?使用函數(shù)指針調(diào)用函數(shù) ?實(shí)現(xiàn)其它程序設(shè)計(jì)語(yǔ)言中函數(shù)參數(shù)的功能 可以把函數(shù)名賦值給一個(gè)函數(shù)指針變量,然后通過(guò)函數(shù)指針變量調(diào)用函數(shù)。形式是: 函數(shù)指針變量 = 函數(shù)名; 要求函數(shù)指針的特性與函數(shù)名的特性一致,這種一致性體現(xiàn)在 ?它們的返回類型相同; ?它們的參數(shù)個(gè)數(shù)相同; ?對(duì)應(yīng)位置上,每個(gè)形式參數(shù)的類型相同。 使用函數(shù)指針要注意: ? 給函數(shù)指針賦值時(shí),右端只是一個(gè)函數(shù)名,不許帶參數(shù)表。 ad = ascending 是正確的,而 ad = ascending( int,int) 是錯(cuò)誤的。 ? 不能對(duì)函數(shù)指針變量進(jìn)行任何運(yùn)算?!?ad+n”、“ ad++”、“ ad” 等是錯(cuò)誤的。 ? 利用函數(shù)指針調(diào)用函數(shù)時(shí),把 “ *” 和函數(shù)名用括號(hào)括起來(lái),成 ( *函數(shù)名)( … ) 形式,是必須的。因?yàn)椤埃ǎ钡膬?yōu)先級(jí)高于“ *”。在例 133中,調(diào)用函數(shù)指針 ad 所指函數(shù)的形式是 (*ad)(a[c],a[c+1]) 不能寫成 *ad (a[c],a[c+1]) 函數(shù)指針聲明中用括號(hào)把星號(hào) “ *” 和 “ 標(biāo)識(shí)符 ” 括起來(lái)是必須的,比如上述的 ( *f) 原因是由優(yōu)先級(jí)造成的。 引進(jìn)函數(shù)指針概念不是憑空臆造的,它的作用在于 ? 使用函數(shù)指針調(diào)用函數(shù) ? 實(shí)現(xiàn)其它程序設(shè)計(jì)語(yǔ)言中函數(shù)參數(shù)的功能 本節(jié)先介紹利用函數(shù)指針調(diào)用函數(shù),下一節(jié)介紹函數(shù)參數(shù)。 可以把函數(shù)名賦值給一個(gè)函數(shù)指針變量,然后通過(guò)函數(shù)指針變量調(diào)用函數(shù)。形式是: 函數(shù)指針變量 = 函數(shù)名; 這個(gè)賦值要求 “ 函數(shù)指針的特性與函數(shù)名的特性一致 ” ,這種一致性體現(xiàn)在 ? 它們的返回類型相同; ? 它們的參數(shù)個(gè)數(shù)相同; ? 對(duì)應(yīng)位置上,每個(gè)形式參數(shù)的類型相同。 167。 計(jì)算定積分 —函數(shù)作參數(shù) 一個(gè)函數(shù)可以調(diào)用其它函數(shù),這是大家熟知的事實(shí)。有時(shí)遇到這種情況,在一個(gè)函數(shù) P內(nèi),要調(diào)用另一個(gè)函數(shù),但到底調(diào)用哪一個(gè)函數(shù)要到執(zhí)行函數(shù) P才能確定。 【 例 】 編程序,用梯形公式計(jì)算并打印定積分 解:最好能有一個(gè)計(jì)算定積分的函數(shù) integrate 能夠計(jì)算任意函數(shù) f 在區(qū)間 [a,b] 上的的定積分,然后分別以函數(shù) 等為參數(shù),調(diào)用函數(shù) integrate。 dx e x dx x six dx x x ? ? ? + 2 0 3 1 1 2 1 0 3 3 x 2 six x f x dx a b ( ) ? 我們希望 integrate 能計(jì)算任意函數(shù) f ,在任意區(qū)間 [a,b] 上的定積分。而具體計(jì)算那個(gè)函數(shù)的積分由調(diào)用 integrate 時(shí)確定。顯然 f 作為 integrate 的一個(gè)參數(shù)比較合適。調(diào)用 inegrate 的函數(shù)調(diào)用可以寫成: integrate(g,a,b) 其中 g 為被積分函數(shù)。這就要求函數(shù) integrate 帶有函數(shù)參數(shù), integrate 的函數(shù)定義說(shuō)明符可以寫成: float integrate( float (*f)(float) ,float a, float b ) 函數(shù)作參數(shù)時(shí),在形式參數(shù)表中應(yīng)列出作參數(shù)函數(shù)的函數(shù)原型。目的是為了說(shuō)明該形式參數(shù)函數(shù)的特性。 下邊繼續(xù)開(kāi)發(fā)函數(shù) integrate 。設(shè) 。 其中 h=(ba)/n 。計(jì)算函數(shù) f 在區(qū)間 [a,b] 上定積分的梯形公式是: 求定積分的函數(shù)如下 : float integrate ( float (*f)(float) /* f 為被積分函數(shù) */ ,float a,float b /* a , b 分別為積分區(qū)間下、上界 */ ,int n ) { /* n 為積分區(qū)間分割個(gè)數(shù) */ float h,s。 int i。 h=(ba)/n 。 s=( (*f)(a) + (*f)(b) ) / 。 for ( i=1。 i=n1。 i++ ) s=s+(*f)(a+i*h) 。 // 調(diào)用函數(shù) “ *f”,是被積分函數(shù),由使用者決定 return s*h 。 } Y f a Y f a h Y f a h Y f b n 0 1 2 2 = = + = + = ( ), ( ), ( ), , ( ) L S f x dx h Y Y Y Y Y Y a b n n = ? + + + + + + ? ( ) (( ) / ) 0 1 2 3 1 2 L 另外分別編出 : 的函數(shù)說(shuō)明: float cube(float x) { return x*x*x 。 }。 float sin2(float x) { return sin(x)*sin(x) 。 }。 float r(float x) { return sqrt(x*x*x+sqrt(exp(x))) 。 }。 主程序如下: mian (){ printf(%f, integrate( cube , , , 100 ) )。 printf(%f, integrate( sin2 , , , 100 ) )。 printf(%f, integrate( r , , , 100 ) )。 } x e x + 3 2 3 x x sin 其中,實(shí)在參數(shù) 0、 1 ; 、 ; 、 分別表示積分區(qū)間 [0、 1] , [、 ] , [、 ] 100為把積分區(qū)間等分成 100份; cube、 sin r 分別為被積函數(shù)的函數(shù)標(biāo)識(shí)符。 被積函數(shù) cube, sin2, r 都是一元函數(shù),其參數(shù)是 float 型的,結(jié)果類型也是 float 的。 被積函數(shù) cube, sin2, r 的函數(shù)定義說(shuō)明符與 integrate 形式參數(shù)表中的函數(shù)參數(shù)說(shuō)明 float (*f)(float) 是一致的。 運(yùn)行結(jié)果演示 函數(shù)作參數(shù)就是 “ 指向函數(shù)的指針 ” 作參數(shù),它的形式是: ? 形式參數(shù)表中函數(shù)形式參數(shù)以函數(shù)指針的函數(shù)原型形式說(shuō)明。其中,函數(shù)形式參數(shù)的函數(shù)名使用指針并用括號(hào)括上,函數(shù)形式參數(shù)的形式參數(shù)表使用函數(shù)原型形式的形式參數(shù)表,形式是 類型名 ( *函數(shù)形式參數(shù)的形式參數(shù)名)(函數(shù)原型形式的形式參數(shù)表) 例如: float integrate( float (*f)(float) , ... ) ? 函數(shù)調(diào)用中對(duì)應(yīng)函數(shù)指針形式參數(shù)的實(shí)在參數(shù)直接使用函數(shù)名或函數(shù)指針 ? 在函數(shù)內(nèi)部,調(diào)用函數(shù)指針形式參數(shù)表示的函數(shù),使用形式
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1