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

正文內(nèi)容

c語(yǔ)言程序設(shè)計(jì)一體化案例教程中ppt-資料下載頁(yè)

2025-03-22 00:26本頁(yè)面
  

【正文】 at pi=。 endif? 文件 改為: includeif !defined(_MY2_H)define _MY2_Hfloat circum(float r){ return 2*pi*r。 }endif? 文件 改為: includeif !defined(_MY3_H)define _MY3_Hfloat area(float r){ return pi*r*r。 }endif條件編譯用于防止重復(fù)包含頭文件 ( 續(xù) 2) 程序的多文件組織*? 單文件組織程序: 一個(gè)程序放在一個(gè)源程序文件中。? 多文件組織程序: 一個(gè)程序放在一個(gè)以上的文件中。? 多文件組織程序的優(yōu)勢(shì):? 便于代碼的設(shè)計(jì)、調(diào)試以及重用? 便于多人協(xié)同編寫同一個(gè)程序等? 多文件組織程序涉及:? 編譯、鏈接? 一個(gè)文件中的函數(shù)調(diào)用另一個(gè)文件中的函數(shù)或使用另一個(gè)文件中的全局變量等。程序的多文件組織方法? 思路: 將程序按功能分成若干模塊,再將每個(gè)模塊的接口和實(shí)現(xiàn)分離,分別存于指定的頭文件 (. h) 和實(shí)現(xiàn)文件 (. c) 中。? 頭文件: 模塊的接口,提取的是模塊實(shí)現(xiàn) ( 對(duì)內(nèi) ) 和使用 ( 對(duì)外 ) 的關(guān)鍵信息,通常包含模塊中的全局類型定義、函數(shù)原型聲明、全局常量和變量的定義 、 編譯預(yù)處理命令、注釋等。? 實(shí)現(xiàn)文件: 模塊的實(shí)現(xiàn)。? 在文件開始,用包含命令包含本模塊的頭文件;? 本 模塊的函數(shù)定義、編譯預(yù)處理命令、注釋等。? 頭文件和實(shí)現(xiàn)文件都是文本文件。模塊 的 接口與實(shí)現(xiàn)分離 的 好處? 頭文件既是模塊實(shí)現(xiàn)的約定,又是模塊使用的約定,為模塊的實(shí)現(xiàn)和使用帶來(lái)便利;? 只要模塊的接口不變,模塊的實(shí)現(xiàn)細(xì)節(jié)發(fā)生改變不會(huì)影響使用該模塊的用戶,便于模塊的性能升級(jí);? 模塊的接口相對(duì)穩(wěn)定,便于建立函數(shù)庫(kù),是代碼重用的好辦法。? 便于模塊分別編譯,提高整個(gè)程序的編譯速度。若一個(gè)模塊的內(nèi)容需要修改,只需對(duì)該模塊重新編譯,而不必重新編譯所有模塊。? 便于用工程 化 方式組織多人協(xié)同完成規(guī)模 化 程序。多文件程序 舉例? 案例 輸入圓的半徑,計(jì)算并輸出該圓的面積。? 分析: 改寫案例 的源程序 2 。程序由 3 個(gè)文件組成:? 頭文件 : 聲明了函數(shù) area 的原型;? 實(shí)現(xiàn)文件 : 函數(shù) area 的定義;? 程序的主文件 : Circle 模塊的使用。? if !defined(_CIRCLE_H)define _CIRCLE_Hfloat area(float r)。endif? 頭文件 : 應(yīng)有避免其本身被重復(fù)包含的條件編譯命令。多文件程序 舉例 ( 續(xù) 1)? includeconst float pi=。float area(float r){ return pi*r*r。 }? includeincludeint main(void){ float r。printf( 輸入圓的半徑 :)。scanf(%f,amp。r)。printf( 半徑為 % g 的圓的面積 =% g \ n,r,area(r))。return 0。}? 頭文件 是 Circle 模塊的接口,對(duì)于 Circle 模塊的實(shí)現(xiàn)和使用至關(guān)重要。? 約束 Circle 模塊的實(shí)現(xiàn):若模塊的實(shí)現(xiàn)違反接口約定,則會(huì)在編譯時(shí)報(bào)錯(cuò)。? 規(guī)范 Circle 模塊的使用:一旦違規(guī)使用 Circle 模塊,也會(huì)在編譯時(shí)報(bào)錯(cuò)。多文件 程序的編譯和鏈接? 包含命令方式: 在定義 main 函數(shù)的文件中將同一程序的其他文件用包含命令包含進(jìn)來(lái),由編譯器自動(dòng)完成這些文件的編譯、鏈接。適合規(guī)模不大的程序。不足:? 對(duì)任一文件的微小修改,均要重新編譯所有文件。? 編譯預(yù)處理后,使所有文件都在同一個(gè)臨時(shí)文件中,導(dǎo)致全局標(biāo)識(shí)符的重名和干擾問(wèn)題。? 單獨(dú)編譯方式; 先將各個(gè)源程序文件單獨(dú)編譯,后再將這些目標(biāo)程序文件鏈接成一個(gè)可執(zhí)行程序文件。 但操作復(fù)雜,需記編譯、鏈接選項(xiàng)。? 項(xiàng)目文件方式: 將同一程序的所有文件加入項(xiàng)目文件,由編譯器自動(dòng)完成這些文件的編譯和鏈接。右圖為案例 在VC++IDE 中的項(xiàng)目文件結(jié)構(gòu)。 推薦使用。第 7 章 數(shù)組? 同類批量數(shù)據(jù) ( 如 50 位學(xué)生的課程成績(jī) ) 如何保存?? 用單變量保存:需定義多個(gè)變量。不足:? 定義變量多。? 不便于用循環(huán)處理。? 用數(shù)組保存:可克服上述不足。? 數(shù)組: 同類數(shù)據(jù)的有序集合。? 按維數(shù)分:一維數(shù)組、二維數(shù)組和多維數(shù)組。? 按類型分:整型數(shù)組、實(shí)型數(shù)組和字符型數(shù)組等。第 7 章 數(shù)組目錄 一維數(shù)組 多維數(shù)組 字符數(shù)組 字符串處理函數(shù)教學(xué)目標(biāo)? 掌握一維、二維數(shù)組的定義、初始化,及數(shù)組元素的引用;? 理解數(shù)組在內(nèi)存中的存儲(chǔ)形式;? 掌握數(shù)組做函數(shù)參數(shù)的方法;? 掌握字符數(shù)組的定義、初始化,理解字符串結(jié)束符 39。 \ 0 39。 的作用;? 掌握常用字符串庫(kù)函數(shù)的使用;? 掌握常用的排序和查找算法。 一維數(shù)組一維數(shù)組的定義? 定義格式:[ 存儲(chǔ)種類 ] 數(shù)據(jù)類型 數(shù)組名 [ 常量表達(dá)式 ]。? 為已定義數(shù)據(jù)類型? 說(shuō)明數(shù)組元素的類型? 正整型常量? 指定數(shù)組元素個(gè)數(shù)? 數(shù)組名用標(biāo)識(shí)符? 數(shù)組名代表該數(shù)組在內(nèi)存中的起始存放位置,即該數(shù)組的指針。? 例如: 在塊作用域有下列說(shuō)明int a[5]。? 又如:static float b[10]。? 再如: define MAX 5const int SIZE=10。char c[ MAX *2+ SIZE + 39。 a 39。 ]。/* 共 117 個(gè)字符元素 */? 注意: 不能用變量說(shuō)明數(shù)組的大小。例如:int n=10。int d[ n ]。 /* 編譯時(shí)出錯(cuò) */? 可以包含宏定義的標(biāo)識(shí)符常量或用 const說(shuō)明的常量? 表達(dá)式中不允許用變量一維數(shù)組的定義 ( 續(xù) )一維數(shù)組元素的引用? 因數(shù)組元素是依次連續(xù)存放的,且每個(gè)元素占用同樣的內(nèi)存,故 數(shù)組元素可用數(shù)組名和下標(biāo)表示 :數(shù)組名 [ 下標(biāo) ]? 下標(biāo):指明數(shù)組元素在本數(shù)組中的相對(duì)位置。下標(biāo)從 0開始,依次連續(xù)增加,最大為數(shù)組元素個(gè)數(shù) 1 。每個(gè)下標(biāo)唯一對(duì)應(yīng)一個(gè)元素。? 對(duì)于前面定義的數(shù)組 a 來(lái)說(shuō):? 下標(biāo)可取 0 、 1 、 2 、 3 、 4 , 5 個(gè)元素分別用 a[0] 、a[1] 、 a[2] 、 a[3] 和 a[4] 表示。? 數(shù)組元素的使用:for(j=0。j5。j++)a[ j ]=j+1。a[ j 2 ]=3。? 下標(biāo)變量? 下標(biāo)表達(dá)式:便于用循環(huán)訪問(wèn)數(shù)組元素,但其值不能超出下標(biāo)取值范圍。? 數(shù)組元素也可用指針表示: C 語(yǔ)言規(guī)定數(shù)組名是指向該數(shù)組首元素的 常量指針 ,下標(biāo)指明元素在數(shù)組中的相對(duì)位置。? 對(duì)于前面定義的數(shù)組 a 中的元素 a[2] 來(lái)說(shuō),因它在內(nèi)存中的存儲(chǔ)位置為 a+2 , 故可用 *( a+2) 來(lái)訪問(wèn) a[2] 。 即*( a+i) 就是 a[i ] 。? 下標(biāo)越界: 訪問(wèn)數(shù)組元素時(shí),下標(biāo)的取值超出該數(shù)組的取值范圍。輕則導(dǎo)致邏輯錯(cuò)誤,重則導(dǎo)致運(yùn)行錯(cuò)誤。? 例如: 對(duì)于前面定義的數(shù)組 a 來(lái)說(shuō),下標(biāo)范圍為 0 ~ 4 ,如用 a[5] 訪問(wèn)數(shù)組元素,就屬于下標(biāo)越界。? 數(shù)組編程應(yīng)注意下標(biāo)越界: 因檢查下標(biāo)越界既復(fù)雜又費(fèi)時(shí),即使發(fā)現(xiàn)仍需程序員解決,故 C 語(yǔ)言不做檢查,希望程序員把關(guān)。一維數(shù)組元素的引用 ( 續(xù) )一維數(shù)組的初始化? 數(shù)組的初始化: 定義數(shù)組時(shí),為其元素指定初值。? 初始化所有元素:int x[10] ={ 0,1,2,3,4,5,6,7,8, 9 } 。將 x[0] 、 … 、 x[9] 分別初始化為 0 、 … 、 9 。? 初始化所有元素時(shí),可省略數(shù)組大小:int x[]={0,1,2,3,4,5,6,7,8,9}。如何確定數(shù)組 x 的大?。? 數(shù)初值的個(gè)數(shù):不是好方法。? 計(jì)算:sizeof(x)/sizeof(x[0])sizeof(x) : 數(shù)組 x 占用內(nèi)存的字節(jié)數(shù)sizeof(x[0]) : 元素 x[0] 占用內(nèi)存的字節(jié)數(shù)? 初始化部分元素: 應(yīng)從第 0 個(gè)元素開始,依次列舉部分元素的值,未列舉初值的元素取默認(rèn)值 0 。int b[10]={0,2,3,4,5}。數(shù)組的大小 10 不可省,第 0 個(gè)元素的初值 0 也不可省。? 未初始化任何元素: 元素初值取決于存儲(chǔ)種類。? 若為全局或靜態(tài),則其所有元素取默認(rèn)值 0 。? 若局部的,則所有元素的初值是隨機(jī)的。? 同類型數(shù)組之間的賦值:int a[5]={1,2,3,4,5},b[5],j。b=a 。 /* 不允許: 因數(shù)組名是常量指針 */for(j=0。j5。j++) b[j]=a[j]。 /* 允許 */一維數(shù)組的初始化 ( 續(xù) )? 問(wèn)題描述: 輸入 10 名學(xué)生的成績(jī),并輸出其最高分、最低分和平均分。? 問(wèn)題分析:? 定義一維整型數(shù)組 score 來(lái)保存 10 名學(xué)生的成績(jī)。? 數(shù)組的輸入輸出:除字符數(shù)組外,數(shù)組不能整體輸入輸出。但數(shù)組為基本類型時(shí),其元素可直接輸入輸出。? 下列代碼可輸入輸出 10 名學(xué)生的成績(jī):int i, score[10] 。for(i=0。i10。i++) /* 輸入 10 名學(xué)生的成績(jī) */scanf(%d,amp。score[i]) 。for(i=0。i10。i++) /* 輸出 10 名學(xué)生的成績(jī) */printf(%5d,score[i]) 。? 學(xué)生成績(jī)的最高分、最低分和平均分分別存入變量 max 、min 和 ave 中,其初值取第一位學(xué)生的成績(jī)。案例 最大值、最小值和平均值? 程序?qū)崿F(xiàn): includeint main(void){ int i,score[10],max,min,ave。printf( 請(qǐng)輸入 10 名學(xué)生的成績(jī) : \ n)。scanf(%d,amp。score[0]) 。for( max=min=ave=score[0] ,i=1。i10。i++){ scanf(%d,amp。score[i]) 。if(score[i]max) max=score[i]。if(score[i]min) min=score[i]。ave+=score[i]。}printf( 最高分 :% d, 最低分 :% d, 平均分 :% f \ n,max,min,ave/)。return 0。}案例 最大值、最小值和平均值 ( 續(xù) 1)? 同類型的批量數(shù)據(jù)存入數(shù)組,便于用循環(huán)處理。? 問(wèn)題思考:? 上述程序的不足:未用模塊化方法組織程序。? 案例再分析:從模塊化編程角度? 功能分解:輸入成績(jī)、求最高分、求最低分、計(jì)算平均分。每個(gè)功能很適合用一個(gè)函數(shù)實(shí)現(xiàn)。? 問(wèn)題:這些函數(shù)如何訪問(wèn)保存 10 名學(xué)生成績(jī)的一維數(shù)組 score ?? 以輸入成績(jī)的函數(shù) Input 為例,介紹兩種解決方法。? 第一種方法:定義全局?jǐn)?shù)組 score 保存 10 名學(xué)生的成績(jī),使 Input 函數(shù)可以直接訪問(wèn)。案例 最大值、最小值和平均值 ( 續(xù) 2)? 第一種方法程序?qū)崿F(xiàn): includeint score[10]。void Input(void){ int i。for(i=0。i10。i++)scanf(%d,amp。score[i])。}int main(void){ printf( 請(qǐng)輸入 10 名學(xué)生的成績(jī) : \ n)。Input( )。return 0。}案例 最大值、最小值和平均值 ( 續(xù) 3)? 仍有不足:? 所有函數(shù)均可訪問(wèn)全局?jǐn)?shù)組 score , 較難保證數(shù)組score 中數(shù)據(jù)的安全性。? Input 函數(shù)沒(méi)有通用性:只能輸入 10 數(shù)據(jù)且只能存入 score 數(shù)組。? 第二種方法的思路: 針對(duì)第一種方法的不足。? 提高數(shù)據(jù)安全性:在主函數(shù)中定義局部數(shù)組 score? 提高函數(shù)通用性:為 Input 函數(shù)設(shè)置兩個(gè)形參? 數(shù)組形參 s : 指定輸入數(shù)據(jù)的存放位置? 整型形參 n : 指定輸入數(shù)據(jù)的個(gè)數(shù) includevoid Input(int s[],int n){ int i。for(i=0。in。i++) scanf(%d,amp。s[i])。}int main(void){ int score[10]。printf( 請(qǐng)輸入 10 名學(xué)生的成績(jī) : \ n)。Input(score,10)。 /* 調(diào)用分析參見(jiàn)下一頁(yè) */return 0。}案例 最大值、最小值和平均值 ( 續(xù) 4)? 故無(wú)法用 sizeof(s)/sizeof(s[0])計(jì)算數(shù)組 s 的元素個(gè)數(shù)。? 其實(shí)是 int *s? 實(shí)參用指針? Input(score,10) 函數(shù)調(diào)用分析:案例 最大值、最小值和平均值 ( 續(xù) 5)? 結(jié)論: 數(shù)組做函數(shù)參數(shù)就是指針做函數(shù)參數(shù),通過(guò)形參可訪問(wèn)實(shí)參所指內(nèi)存。? 使用第二種方法的完整程序參見(jiàn)教材。? 問(wèn)題描述: 用選擇排序法對(duì) 10 個(gè)整型數(shù)據(jù)做升序排序。? 問(wèn)題分析: 排序
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1