C語言程序設計譚浩強教案_第1頁
C語言程序設計譚浩強教案_第2頁
C語言程序設計譚浩強教案_第3頁
C語言程序設計譚浩強教案_第4頁
C語言程序設計譚浩強教案_第5頁
已閱讀5頁,還剩24頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C語言程序設計教案課程名稱C語言程序設計教材C語言程序設計(第四版) 作者:譚浩強 清華大學出版社考核方式考試課程??偝煽儯赫n堂參與占10%;試驗報告占20%;期末考試占70%(閉卷考試)。教學基本目的和要求 C語言是近年來國內外得到迅速推廣使用的一種計算機語言。C語言程序設計課程是計算機專業和信息管理專業的核心專業基礎課,它功能豐富,表達能力強,使用靈活方便,應用面廣,目標程序效率高,可移植性好,既具有高級語言的優點,又具有低級語言的優點。既適用于應用軟件編寫,又適用于系統軟件的編寫。在現代的工業機器人的眾多語言中,大多編程風格以C語言非常類似,學生學好C語言,對將來的工作中,從事工業機器人

2、現場編程是非常有幫助的。課程的性質和任務 語言程序設計這門課是我校工業機器人、分布式發電與微電網專業的專業必修課。作為計算機系的數據結構、c+、單片機編程等課程的前導課程,也是一門實踐性很強的課程,既要掌握概念,又要動手編程,還要上機調試運行。對工業機器人專業來說是一門必修的課程。同時,這門課程也是“湖南省非計算機專業學生計算機應用能力水平考試”二級考試的主要語種之一。課程的教學目標 本課程的教學目標是:通過理論和實踐教學,使學生較好地掌握C語言各方面的知識,掌握基本的程序設計過程和技巧,具備初步的高級語言程序設計能力,并能熟練應用VC+6.0集成環境進行C語言的編寫、編譯與調試,能應用C語言

3、解決一般編程問題的水平。 教學重點和難點一、程序設計和C語言重點:計算機程序、計算機語言、C語言編譯軟件的安裝、最簡單的C語言程序二、算法:程序的靈魂      重點:簡單的算法舉例、算法的特性、用流程圖表示算法。三、順序結構程序設計      重點: C語言的數據類型、C語句的種類、賦值語句、數據的輸入輸出及輸入輸出中最常用的控制格式。四、選擇結構程序設計      重點:關系運算符與邏輯運算符及其組成的具有邏輯值的表達式、二條分支語

4、句的格式及基本應用、多分支的選擇語句。五、循環結構程序設計       重點:C構成循環的四種方法,尤其是后三種方法、break與continue語句的基本作用。難點:while語句;do-while語句;for語句;循環的嵌套;break與continue語句。六、數組重點:一維數組、二維數組的定義與引用;字符數組的定義與引用、常用字符串處理函數及字符處理函數;數組的應用難點:二維數組的定義與引用;字符數組;數組的應用七、函數    重點:函數的定義;函數的參數和函數的值;函數的調用;函數的嵌套調用;函

5、數的遞歸調用;數組作為函數參數;變量作用域;量存儲類別; 難點:函數定義、函數調用、函數聲明等基本基本概念;函數的嵌套調用與遞歸調用; 數組作為函數的參數、變量的存儲類別與作用域。八、指針重點和難點:指針與地址的基本概念、指針與變量的關系;指針與數組;指針與字符串、指針數組與二級指針;指針的應用九、建立自己的數據類型  重點和難點:定義和使用結構體變量、用指針處理鏈表、共用體類型十、文件   重點:文件的基本知識、fopen、fclose函數打開與關閉文件、順序讀寫數據文件、隨機讀寫數據文件 難點:用二進制方式向文件讀寫一組數據。十一、常見錯誤分析 &#

6、160;  重點和難點:文件的基本概念;文件的打開、關閉、常用讀寫方法。 十二、數組高級應用重點:不定長數組與二維數組的應用難點:不定長數組與二維數組的應用十三、綜合應用重點:數組、if語句、 循環語句、函數知識的綜合應用難點:二維數組、指針教材、參考書教材:C程序設計(第四版) 譚浩強著 清華大學出版社 2010年6月參考書:C程序設計語言Kernighan&Ritchie 機械工業出版社C語言程序設計教案第 1-2課時 授課內容第1章 C語言概述教學目的和要求了解C歷史,名稱來源、C特點,掌握C程序基本結構;C語言的版本、C語言的關鍵字;重點難點C語言

7、的關鍵字;教學安排引言語言:人人語言交流;聾啞人手勢語;人機計算機語言C語言是一種流行的計算機高級語言,C語言適合于編寫系統軟件,也可以編寫應用程序。講授一、語言出現的歷史背景(1)C語言的發展源于人們希望用高級語言編寫操作系統。(C-BCPL第二字母)ALGOL60(高級語言)->CPL(硬件支持)- BCPC->B->C->標準C-> ANSI C -> ISO C(2) 語言既具有高級語言特性,又具有低級語言特性-中級語言。二、C語言的特點C語言既具有一般高級語言特性,又具有低級語言特性。8個特點。1、C語言簡潔、緊湊。2、運算符豐富。3、數據結構類型

8、豐富。4、具有結構化的控制語句。5、語法限制不太嚴格,程序設計自由度大。6、C語言允許直接訪問物理地址,能實現匯編語言的大部分功能,可以直接對硬件進行操作。7、生成目標代碼質量高,程序執行效率高。8、與匯編語言相比,用C語言寫的程序可移植性好。三、C語言的關鍵字附錄C(書本378頁)四、C語言的版本和關鍵字auto、inline、restrict、_bool、_Complex、_Imaginary是后來擴充的,有些編譯器也擴充了關鍵詞。五、Turbo C編譯器的安裝與使用課后自我總結分析備注C語言程序設計教案第 3-4 課時 授課內容第1章 VC+6.0、VS2015的安裝和使用教學目的和要求

9、了解C語言常用的編譯器;掌握VC+6.0、VS2015的下載與安裝;掌握VC+6.0、VS2015的使用重點難點重點:VC+6.0、VS2015的使用難點:VC+6.0、VS2015的使用教學安排講授一、C語言常用的編譯器(1)32位的WINDOWS操作系統與64位的WINDOWS操作系統(2)VC+6.0 (2)VS2015二、文件夾與壓縮包1、文件夾2、文件的壓縮與解壓3、軟件的下載4、軟件安裝的一般流程5、產品id號、序列號與破解補丁三、VC+6.0、VS2015的下載與安裝7、生成目標代碼質量高,程序執行效率高。8、與匯編語言相比,用C語言寫的程序可移植性好。四、VC+6.0、VS20

10、15的使用VC+6.0、VS2015的使用五、c4droid編譯器的使用1、基于安卓手機操作系統的C語言編譯器2、c4droid編譯器的安裝3、c4droid編譯器的使用六、上機演示及實踐操作在win7電腦上示范VC+6.0、VS2015的編譯器的安裝和使用課后自我總結分析同學們對計算機基礎知識比較缺乏,安裝VC+6.0時,不知道如何解壓,也不知道如何下載和計算機操作系統版本匹配的VC+6.0或VS2015備注C語言程序設計教案第 5-6 課時 授課內容第2章 算法的基本概念和簡單算法舉例教學目的和要求了解算法的基本概念、程序設計的一般流程、掌握書寫簡單的算法流程、了解算法的特性重點難點掌握書

11、寫簡單的算法流程。教學安排引言(5分鐘)什么是算法?菜譜、拳譜、歌譜都是廣義的算法。以湘潭去北京開會為例解釋算法的優劣。1+2+3+100的常規算法和高斯的首尾相加快遞算法講授一、簡單算法舉例(37分鐘)(1)求5!(10分鐘)常規求解方式的煩瑣引出用循環方式求解的方法。分析用循環方式求5!的C語言代碼(2)求1×3×4×5×7×9×11(10分鐘)詢問同學此題與5!的異同,引每項是2n-1的通項,在上題的基礎上改動少量代碼可實現本題的C語言編程。(3)求2000-2500年間的閏年(10分鐘)圖示方式給學生解說閏年要滿足的條件,引出

12、要做多次判斷的較復雜流程提問:能被4整除,也能被100整除,是不是等同能被400整除這一認識誤區再次提問:2000年是不是閏年,為什么?2060年是不是閏年,為什么?檢測學生是否了解閏年判斷流程。(4)素數的求法(7分鐘)根據素數的定義來循環判斷是否能被一系列數整除,最后判斷是不是素數,請學生嘗試寫出求解流程。二、算法的特性(3分鐘)1、有窮性。2、確定性。3、0個或多少輸入。4、1個或多個輸出。5、有效性。三、上機演示及實踐操作在講課的同時切換軟件界面調試代碼課后自我總結分析通過提問可以了解同學們對知識的掌握程序,互動性的教學設計更有益于教學備注C語言程序設計教案第 7-8 課時 授課內容第

13、2章 算法的表示教學目的和要求掌握用流程圖表示算法;了解傳統流程圖的弊端;掌握N-S流程圖表示方法。重點難點重點:掌握用流程圖表示算法;掌握N-S流程圖表示方法難點:掌握用流程圖表示算法;掌握N-S流程圖表示方法教學安排講授一、用流程圖表示算法(15分鐘)1、介紹流程圖的圖框及含義起止框、輸入輸出框、判斷框、處理框、流程線、連接點、注釋框2、示范用流程圖表示兩個分支的if語句3、將例2.1的算法用流程圖表示并分析4、將例2.2的算法用流程圖表示并分析5、將例2.3的算法用流程圖表示并分析總結:流程圖表示算法比較直觀2、將例2.4多項式求和用流程圖表示(1)、書本求解本題算法的流程圖表示(2)、

14、其它算法的流程圖表示二、三種基本結構和改進的流程圖 (15分鐘)1、統流程圖的弊端2、三種基本結構(1)順序(2)選擇(3)循環 分當型和直到型兩種二、用NS流程圖表示算法(15分鐘)1、N-S流程圖的符號2、將例2.1的算法用N-S流程圖表示并分析3、將例2.2的算法用N-S流程圖表示并分析4、將例2.3的算法用N-S流程圖表示并分析三、實踐環節對“分時問候”的算法繪制N-S流程圖課后自我總結分析備注C語言程序設計教案第 9-10課時 授課內容第3章 最簡單的C程序設計順序程序設計教學目的和要求舉例說明順序程序調序的基本流程、整型數據類型、整型數據的溢出。重點難點重點:整型數據類型;整型數據

15、的溢出難點:整型數據類型;整型數據的溢出教學安排講授一、順序程序設計舉例 (10分鐘)1、繪制例3.1算法的N-S流程圖2、根據N-S流程圖編寫代碼并調試二、常量與變量 (15分鐘)1、常量概念。 (1)整型常量、整型常量、字符常量、字符串常量(2)ASCII字符(3)轉義字符2、變量概念、變量名(1)先定義,后使用(2)變量名與變量值概念的異同三、數據類型概述 (5分鐘)1、不同類型的數據在內存中占用的存儲單位長度是不同的VC+6.0為字符型數據分配一個字節長度;為int型(基本型)分配4個字節的長度。2、存儲不同數據類型的方法也是不同的。四、整型數據 (15分鐘)1、整型數據的分類:(1)

16、基本整型(int 型) (2)短整型(short int); (3)長整型(long int)2、整型變量的符號屬性 (1)有符號型和無符號型 (2)整型數據常見的存儲空間和值的范圍3、整型數據的溢出五、上機演示及實踐操作在講課的同時切換編譯界面調試整型數據溢出課后自我總結分析備注C語言程序設計教案第11-12 課時 授課內容第3章 最簡單的C程序設計順序程序設計教學目的和要求舉例說明順序程序調序的基本流程、數據的表現形式及運算、不同數據類型的混合運算。重點難點整型數據類型long int和short int數據類型、運算符的優級先級、不同數據類型的混合運算教學安排講授一、浮點型數據1、浮點型

17、數據的存儲方式2、浮點型數據的表現形式 浮點數據的指數形式3、浮點型數據的類型(1)單精度 (2)雙精度 (3)長雙精度二、字符型數據1、 字符常量表示。直接表示/轉義表示(特殊的轉義字符,一般字符也可以轉義表示)。特殊轉義字符對顯示/打印的控制作用2、 字符變量1個字節,char關鍵詞。3、 字符數據的存儲ASCII碼/二進制存儲C語言可以將字符看做很短的整數處理。例2-7A,例2-8A可以看出字符數據的具有整數特性。三、怎樣確定常量的類型1、從常量的表示形式,如精度2、只要看到單撇號括起來的單個字符或轉義字符即字符常量四、運算符與表達式1、基本的算術運算符 2、自增、自減運算符3、算術表達

18、式和運算符的優先級與結合性五、數值型數據混合運算1、自動隱式轉換。2、強制類型轉換。六、C語句 1、控制語句 2、函數調用語句 3、表達式語句4、空語句 5、復合語句七、上機演示及實踐操作在講課的同時切換編譯界面調試整型數據溢出課后自我總結分析備注C語言程序設計教案第 13-14 課時 授課內容第4章(1) 選擇結構程序設計教學目的和要求理解條件-產生邏輯值的表達式; 熟練繪制選擇語句算術的流程圖掌握關系運算符、關系表達式;邏輯運算符、邏輯表達式重點難點重點:關系運算符、關系表達式;邏輯運算符、關系表達式難點:熟練繪制選擇語句算術的流程圖教學安排講授一、選擇結構的條件判斷1、理解條件-產生邏輯

19、值的表達式2、選擇結構的流程圖繪制3、二元二次方程求根的算法及程序編寫二、關系運算符與關系表達式“關系運算”(比較運算)即,將兩個值進行比較,判斷是否符合或滿足給定的條件。1、 關系運算符及其優先次序a) C語言提供6種關系運算符。表5-1。b) 關于優先次序:前4種高于后兩種;關系低于算術;關系高于賦值例5-2。2、 關系表達式關系表達式的值是邏輯值,即“真”“假”。C語言沒有邏輯型數據,1“真”,0“假”。例5-3。三、邏輯運算符和邏輯表達式“關系運算”(比較運算)即,兩個邏輯值的運算。1、 邏輯運算符。(1)&& 邏輯與,(2)| 邏輯或,(3)! 邏輯非2、 邏輯運算符

20、的優先順序: 3、 邏輯表達式四、條件運算符與條件表達式1、單目運算符、雙目運算符、三目運算符的概念2、C語言唯一的三目運算符構成的條件表達式 課后自我總結分析備注C語言程序設計教案第15-16 課時 授課內容第4章(2) 選擇結構程序設計教學目的和要求選擇結構的嵌套;switch語句實現多分支選擇結構重點難點重點:選擇結構的嵌套;switch語句實現多分支選擇結構難點:選擇結構的嵌套;switch語句實現多分支選擇結構教學安排講授一、if語句的嵌套1、在if語句中又包含一個或多個if語句稱為if語句的嵌套。2、如果if與else的數目不一致,為了體現程序設計者的思想,可加花括號來確定配對的關

21、系。3、利用代碼縮進增強代碼的可讀性,養成良好的編程風格4、例4.5階躍函數用if語句的嵌套實現(1)繪制流程圖 (2)將流程圖編寫成程序二、用switch語句實現多分支選擇結構如果條件分支較多,利用if語句顯得程序冗長,且可讀性降低。因此,C語言設計了switch語句。1、switch語句的一般形式2、例4.6 輸出考試成績的ABCD段等級(1)繪制流程圖 (2)將流程圖編寫成程序3、例4.7 用switch語句處理菜單命令三、選擇結構程序設計綜合舉例例4.8 判斷某一年是否是閏年例4.9 求二元二次方程的實根四、上機演示及實踐操作在講課的同時切換軟件界面調試代碼課后自我總結分析備注C語言程

22、序設計教案第 17-18 課時 授課內容第5章(1) 循環結構程序設計教學目的和要求掌握while當型循環、do while直到型循環、for循環重點難點while當型循環、do while直到型循環、for循環的形式、執行過程、使用注意問題教學安排引言重復執行就是循環。重復工作是計算機特別擅長工作之一。重復執行不是簡單地重復,每次重復,操作的數據(狀態、條件)都可能發生變化。重復的動作是受控制的,C語言提供三種循環控制語句,構成了三種基本的循環結構。講授一、while語句(當型循環)1、while語句的一般形式是:2、執行過程是:(流程圖、N-S圖)3、使用while注意的問題。例5-1:利

23、用while語句,編寫程序計算1+2+3+100。二、do-while語句(直到型循環)1、do-while語句的一般形式2、do-while執行過程(流程圖)3、do-while說明:例5-4:利用do-while語句計算機1+1/2+1/4+1/50。三、for語句(當型循環)1、 for語句的一般形式(給出while循環的對應結構)2、 for循環執行過程(流程圖)例5-6:寫一個程序,計算半徑為0.5,1.5,2.5,3.5,4.5,5.5mm時圓的半徑。例5-7:求正整數n的階乘n!,其中n由用戶輸入。3、 for語句最容易理解、最常用的形式4、 for語句說明(6點)。C語言的fo

24、r語句功能強大,使用靈活。四、上機演示及實踐操作在講課的同時切換軟件界面調試代碼課后自我總結分析備注C語言程序設計教案第19-20 課時 授課內容第5章(2) 循環結構程序設計教學目的和要求掌握條件運算符、條件表達式掌握switch-case語句重點難點switch-case語句教學安排引言a) 復習關系運算、邏輯運算、if語句b) 引入簡單的條件運算符及表達式、以及開關語句講授一、條件運算符、條件表達式在if語句中,在表達式為“真”和“假”時,都只執行一個賦值語句給同一個變量賦值時,可以使用簡單的條件運算符來處理。例如:if(a>b)max=a;else max=b; <=>

25、; max=a>b?a:b;(1) 條件表達式的一般形式:表達式1?表達式2:表達式3(2) 條件表達式說明(5點)例5-4.二、switch-case語句(多分支選擇語句/開關語句)3、 switch一般形式4、 switch語句說明。(1)-(7)三、分支程序例子例5.5 寫程序,判斷某一年是否是閏年。例5.6 求一元二次方程ax2+bx+c=0的根。例5.7 運輸公司對用戶計算運費。六、應用舉例例6-14:從鍵盤輸入一個大于2的整數n,判斷是不是素數。例6-15:求100-200之間的所有素數。例6-16:輸出下三角99乘法表七、上機演示及學生操作在講課的同時切換軟件界面調試代碼課

26、后自我總結分析備注C語言程序設計教案第21-22課時 授課內容第6章(1) 一維組的應用教學目的和要求數組的基本概念;一維數組定義、初始化、引用;最大值、冒泡排序、選擇排序算法。重點難點重點:一維數組定義、初始化、引用;求最大值、冒泡排序、選擇排序算法;矩陣操作難點:冒泡排序、選擇排序算法教學安排引言基本數據類型構造類型的數據數組數組、數組元素、數組的下標、數組的維數例如:int a10; 一維數組可以看作一個數列,向量。例如:float b33; 二維數組可以看作一個矩陣。講授一、定義和引用一維數組1、一維數組的定義 類型說明 數組名整型常量表達式2、一維數組定義說明 下標從0開始3、數組元

27、素的引用例6.1 利用數組輸出1-10(1)循環語句 (2) 數組下標越界4、一維數組的初始化的幾種形式(1)定義時賦初值 (2)部分賦初值(3)數組元素全部置0 (4)數組元素如全部賦值可不指定長度5、給數組元素賦初值和給數組集合賦初值的異同(1) 給數組元素賦初值 int temp1=9;(2) 給數組集合賦初值 int temp10=(1,2,3);二、一維數組的應用例子例6-2:用數組來處理斐波那契數列例6-3:采用“冒泡法”對任意輸入的10個整數按由小到大的順序排序。例6-4:采用“選擇法” 對任意輸入的10個整數按由大到小的順序排序。三、動態內存分配法實現不定長一維數組某些情境需要

28、定義一個數組,但數組的長度不定,因為這個長度是根據某些其他條件確定的,這時我們需要定義一個長度不定的數組。如讀取不同聲音的語音數據序列。課后自我總結分析備注C語言程序設計教案第23-24 課時 授課內容第6章(2) 二維數組和多維數組的應用教學目的和要求二維數組定義、初始化、引用;多維數組重點難點重點:二維數組定義、初始化、;雙重for循環讀取二維數組;二維數組1維和2維的分辨;難點:雙重for循環讀取二維數組、二維數組1維和2維的分辨教學安排二、二維數組(注意:類比一維數組)1、二維數組的應用場景2、二維數組的定義3、二維數組元素的內存分布二、二維數組元素的引用例6-5:二維數組元素的引用的

29、例子(自學)-構造、打印單位矩陣。思考:下標是從1開始使用的,哪些元素在此例子中未使用?它們的值是多少?(隨機值)三、二維數組的初始化的幾種形式(1)分行給二維數組賦值(2)將所有數組寫在一個花括號內(3)對部分元素賦值(4)對全部元素賦初值,二維數組的1維長度可以省略,2維長度不能省略四、雙重for循環法讀取二維數組比較抽象,圖解較直觀五、二維數組應用舉例例6-4:將二維數組的行和列互換,存到另一個數組里。例6-5:找出矩陣所有元素中的最大值。例6-附加 分別計算矩陣的兩條對角線(主、輔對角線)上的元素之和。六、多維數組的應用1、多維數組的定義2、多維數組元素的引用3、多維數組的初始化七、不

30、定長二維數組的實現某些情境需要定義一個二維數組,但二維數組的長度不定,因為這個長度是根據某些其他條件確定的,這時我們需要定義一個長度不定的二維數組。如讀取不同尺寸圖像點的像素值。八、上機演示及學生操作在講課的同時切換軟件界面調試代碼課后自我總結分析備注C語言程序設計教案第25-26 課時 授課內容第6章(3) 字符數組教學目的和要求字符數組定義、初始化、引用;字符串與字符數組;字符串處理函數;字符數組應用重點難點重點:字符串與字符數組;字符串處理函數難點:字符串與字符數組;字符串處理函數教學安排引言復習數組概念,數組定義、初始化、元素引用方法。引入字符數組(元素為字符)。講授一、字符數組1、字

31、符數組的定義2、字符數組的初始化3、字符數組的引用4、二維字符數組的應用舉例二、字符和字符串結束標志1、字符串與字符數組的區別 2、字符串結束標記志系統對字符串常量也自動加一個'0'作為結束符。例如"C Program”共有9個字符,但在內存中占10個字節,最后一個字節'0'是系統自動加上的。(通過sizeof()函數可驗證)三、字符數組的輸入和輸出(1)逐個字符輸入輸出(2)將整個字符串輸出(3)利用字符串的結束符批量輸出四、字符串概述1、字符串的輸出(1)“%s”格式符(2)print語句的輸出項參數用字符數組名,而非數組元素名2、字符串的引用五、

32、由字符數組來構造字符串根據定義,可由字符數組添加一個'0'符形成字符串。六、二維字符數組1、二維字符數組的定義2、二維字符數組的初始化3、二維字符數組的引用課后自我總結分析備注C語言程序設計教案第27-28 課時 授課內容第6章(4) 字符串函數的應用教學目的和要求字符數組定義、初始化、引用;字符串與字符數組;字符串處理函數;字符數組應用重點難點重點:字符串與字符數組;字符串處理函數難點:字符串與字符數組;字符串處理函數教學安排講授一、使用字符串處理函數1、puts函數2、gets函數3、strcat函數:字符串截取函數4、strcopy和strncopy函數:字符串復制函數5

33、、strcmp函數:字符串比較函數6、strlen測試字符串長度函數7、strlwr函數:轉換為小寫的函數8、strupr函數:轉換為大寫的函數二、字符數組應用舉例例6.8:由鍵盤任意輸入一個字符串和一個字符,要求從該字符串中刪除所指定的字符。例6.9:由鍵盤輸入三個字符串,找出其中的最大串。(字符串庫函數的應用)三、學會閱讀C標準函數手冊附錄F C庫函數1、引用預編譯頭文件 include(包含頭文件)2、學會閱讀函數庫函數的函數類型和參數四、字符數組函數的綜合練習1、打印楊輝三角形2、有一個已排好序的數組,要求輸入一個數后,按原來排序的規律將它插入數組中。3、魔方陣,要求輸出1n24、找出

34、二維數組的鞍點,即該位置上的元素在該行上最在、在該列上最小,也可能沒有鞍點。5、編一程序,將兩個字符串連接起來,不要用strcat函數。四、上機演示及學實踐操作在講課的同時切換軟件界面調試代碼課后自我總結分析備注C語言程序設計教案第29-30 課時 授課內容第7章(1) 函數及函數的調用教學目的和要求掌握函數定義、調用、聲明;函數參數傳遞方式;了解函數遞歸調用重點難點重點: 函數定義、調用、聲明; 函數參數傳遞方式難點:函數參數傳遞方式傳址(尚未學習指針,用數組舉例)教學安排講授一、函數概述1、C語言的函數。C語言的函數是子程序的總稱,包括函數和過程。C語言函數可以分為庫函數、用戶自定義函數2

35、、C語言的程序由函數組成,函數是C語言程序的基本單位,程序的總體功能通過函數的調用來實現。其中,main起點(圖)3、函數的一些概念:主函數、其它函數;主調函數、被調函數;庫函數、用戶自定義函數;無參函數、有參函數;無返回值函數、有返回值函數二、函數的一般形式函數應當先定義,后調用。函數定義的一般形式及說明 (1)(2)例7-1:輸入三個整數,求三個整數中的最大值,打印。思考問題。三、函數的參數和返回值1、 形式參數 2、實際參數 3、參數的傳遞。2、 函數返回值。return語句及說明。四、函數的調用1、 函數調用的一般形式及說明(單獨語句/表達式中、參數相容)例7-3:以表達式的形式進行函

36、數的調用。(自學)2、 函數調用時數據的傳遞-參數傳遞、函數的返回值、全局變量例7-4:求學生平均成績。P110.(注意參數傳遞的是數組的地址)3、 函數的聲明例7-5:函數聲明例子。P112.五、函數的嵌套調用和遞歸調用函數允許嵌套調用和遞歸調用。遞歸調用是嵌套調用的特例。(1)函數的嵌套調用例7-6:計算兩整數的最小公倍數。P113.(2)函數的遞歸調用例7-7:用遞歸法求n!(P.114)課后自我總結分析備注C語言程序設計教案第31-32 課時 授課內容第7章(2) 函數變量的作用域和生命周期教學目的和要求掌握變量作用域、生命期掌握插入排序重點難點重點:變量作用域、生命期;插入排序難點:

37、變量作用域、生命期;插入排序教學安排講授六、變量的作用域(有效范圍、可見性)變量的作用域:變量的有效范圍或者變量的可見性。變量定義的位置決定了變量的作用域。變量從作用域(變量的有效范圍,可見性)的角度可以分為:局部變量,全局變量。1、局部變量(函數體內變量、形參變量、復合語句內變量)互不干預、動態分配例7-8:各函數局部變量同名的應用示例。P116-117.2、全局變量(所有函數之外文件作用域、程序作用域)全局變量可以和局部變量同名坐井觀天例7-9:全局變量、局部變量同名的應用示例。P118。例7-10:全局變量、局部變量的應用示例。P118。七、變量的存儲類別(生存期、生命期)變量從空間上分

38、為局部變量、全局變量。從變量存在的時間的長短(即變量生存期)來劃分,變量還可以分為:動態存儲變量、靜態存儲變量。變量的存儲方式決定了變量的生存期。C語言變量的存儲方式可以分為:動態存儲方式、靜態存儲方式。全局變量全部是靜態的;局部變量可以是靜態,也可以是動態(auto,register)。例7-11:寄存器局部變量的應用.P120.(完成n+(n-1)+(n-2)+.+1)例7-12:靜態局部變量的應用示例。P121.八、內部函數和外部函數默認是外部函數九、函數應用舉例例7-14:字符串逆序。P124.例7-15:求矩陣最大元素。P124-125.例7-16:利用插入法將10個字符從小到大進行

39、排序。P125-126.課后自我總結分析備注C語言程序設計教案第33-34 課時 授課內容第8章(1) 指針概述及指針作為函數參數教學目的和要求指針的基本概念,變量訪問方式;指針變量定義、賦值、引用。指針作為函數參數。重點難點重點:指針的基本概念;指針變量定義、賦值、引用;指針作為函數參數難點:指針的基本概念教學安排講授指針基礎一、指針變量的定義(變量先定義后使用)1、 定義格式:2、 說明: (1)指針變量基類型-指針變量指向數據的類型(2)指針變量存放地址值,本身占用空間2字節二、指針變量的賦值(使用未賦值指針等同于向一個隨機的內存中寫入數據)1、 將地址直接賦值給指針變量。例如,floa

40、t *f=malloc(4);2、 將變量地址賦值給指針變量。例如:float a,*p;p=&a;三、指針變量的引用1、&運算符(取地址運算符) 2、*運算符(指針運算符、間接訪問運算符)例9-1,P137.指針變量定義、賦值、引用例子。四、指針變量作為函數的參數變量可以作為函數參數,指針變量同樣可以作為函數參數。使用指針作為函數參數,可以在函數中對指針所指向變量的值進行處理(修改)。指針作為函數參數,本質上同樣是單向傳值,但是由于傳遞的是地址值,所以可以通過地址值間接修改形參、實參共同指向的變量。例9-2:輸入a,b兩個數交換后輸出。在swap函數中使用兩個指針作為函數參數

41、,對兩個指針所指向變量值進行交換。結論:1、要在被調用函數中,修改主調函數的變量值應當:(1) 將主調函數變量的地址傳遞給被調用函數,就是說函數應當傳遞的是變量的地址。(2) 被調用函數的形參應當使用指針變量接受主調函數的地址值。(3) 在被調用函數中通過形參指針變量間接訪問,修改實參、形參地址所共同指向的變量。本例的操作是交換兩個指針變量所指向的變量。2、函數使用指針作為參數,可以增加主調函數與被調函數之間數據溝通的渠道。課后自我總結分析備注C語言程序設計教案第35-36 課時 授課內容第8章(2) 通過指針引用數組教學目的和要求通過指針引用數組元素;數組的指針變量”作為函數參數;通過指針指

42、向多維數組重點難點重點:數組的指針變量”作為函數參數;通過指針指向多維數組難點:數組的指針變量”作為函數參數;通過指針指向多維數組教學安排講授一、數組元素的指針每個數組元素都在內存中占有存儲單元,它們都有相應的地址,所謂數組元素的指針就是數組元素的地址。二、在引用指針元素時指針的運算1、在一定條件下允許對指針進行加和減的運算。2、在指針指向數組元素時,可以對指針進行加和自加,減和自減運算。三、通過指針引用數組元素1、下標法2、指針法例8.7 通過指針變量輸出整型數組a的10個元素。四、用數組名和“數組的指針變量”作為函數參數例8.8 將數組a中n個整數按相反順序存放。例8.9 將例8.8寫成指

43、針變量作實參例8.10 用指針法對10個整數按從大到小順序排序五、通過指針指向多維數組1、多維數組的地址2、指向多維數組元素的指針(1)指向數組元素的指針變量例8.12 有一個3×4的二維數組,要求用指向元素的指針變量輸出二維數組各元素的值。(2)指向由m個元素組成的一維數組的指針變量3、用指向數組的指針作函數參數例8.14 有一個班,3個學生,各學4門課程,計算總平均分數以及第n個學生的成績。例8.15 在例8.14的基礎上,查找有1 門以上課程不及格的學生,輸出他們全部課程的成績。課后自我總結分析備注C語言程序設計教案第37-38 課時 授課內容第8章(3) 通過指針引用字符串教

44、學目的和要求掌握字符指針作為函數參數;理解使用字符指針變量和字符數組的異同重點難點重點:字符指針作為函數參數;理解使用字符指針變量和字符數組的異同難點:字符指針作為函數參數;理解使用字符指針變量和字符數組的異同教學安排講授一、字符串的引用方式1、可通過字符數組名和下標引用字符串中的一個字符。2、也可以通過數組名和格式聲明%s輸出該字符串例8.16 定義一個字符數組,在其中存放字符串“I love China!”,輸出該字符串和第8個字符。C語言中只有字符變量,沒有字符串變量。例8.18 將字符串a復制為字符串b,然后輸出字符串b。例8.19 例8.18改用指針變量來處理二、字符指針作為函數參數

45、例8.20 用函數調用實現字符串的復制(1)用字符數組名作為函數的參數(2)用字符指針變量作為函數的參數其實編譯系統把字符數組名按指針變量處理的,只是表示形式不同。三、使用字符指針變量和字符數組的比較1、字符數組由若干個元素組成,每個元素中放一個字符,而字符指針變量中存放的是地址。2、賦值方式??梢詫ψ址羔樧兞抠x值,但不能對數組名賦值3、初始化含義4、存儲單元內容5、指針變量的值是可以改變的,而數組名代表一個固定的值6、字符數組中各元素的值是可以改變的。7、引用數組元素四、隨堂練習寫一函數,實現兩個字符串的比較。int strcmp(char *p1,char*p2)五、上機演示及學實踐操作

46、在講課的同時切換到編譯器界面調試代碼課后自我總結分析備注C語言程序設計教案第39-40 課時 授課內容第8章(4) 動態內存管理與指向它的指針變量教學目的和要求掌握用函數指針變量調用函數;掌握用指向函數的指針作函數參數重點難點重點:用函數指針變量調用函數;用指向函數的指針作函數參數難點:用函數指針變量調用函數;用指向函數的指針作函數參數教學安排講授一、指向函數的指針編譯系統為函數代碼分配一段存儲空間,這段存儲空間的起始地址,稱為這個函數的指針二、用函數指針變量調用函數例8.22 求兩個整數的最大值講解通過函數名調用函數與通過指針變量訪問它所指向的函數的異同。三、怎樣定義和使用指向函數的指針變量

47、類型名 (*指針變量名)(函數參數表列)例8.23 講解四、用指向函數的指針作函數參數指向函數指針變量的一個重要用途是把函數的地址作為參數傳遞到其它函數。例8.24 講解五、返回指針值的函數一個函數可以返回一個整型值、字符值、實型值等,也可以返回指針型的數據,即地址。定義返回指針值函數的一般形式為:類型名 *函數名(參數表列)例8.25 講解六、指針數組和多重指針1、什么是指針數組2、指向指針數據的指針例8.28 講解3、指針數組作主函數的形參七、上機演示及學實踐操作在講課的同時切換到編譯器界面調試代碼課后自我總結分析備注C語言程序設計教案第41-42 課時 授課內容第8章(5) 動態內存分配

48、教學目的和要求掌握指針數組和多重指針;掌握動態內存分配的技巧重點難點重點:指針數組和多重指針;動態內存分配的技巧難點:指針數組和多重指針;動態內存分配的技巧教學安排講授C定義了4個內存區間:代碼區,全局變量與靜態變量區,局部變量區即棧區,動態存儲區,即堆(heap)區或自由存儲區(free store)。一、堆棧和隊列1、堆棧 堆棧是一種特殊的線性表。(1)棧頂和棧底2、隊列 堆棧也是一種特殊的線性表。(1)隊頭與隊尾二、堆與動態內存分配有些操作對象只在程序運行時才能確定,這樣編譯時就無法為他們預定存儲空間,只能在程序運行時,系統根據運行時的要求進行內存分配,這種方法稱為動態內存分配。所有動態

49、內存分配都在堆區中進行。三、動態內存分配1、什么是內存的動態分配2、建立內存分配的動態分配(1)malloc函數malloc是一個函數,專門用來從堆上分配內存。使用malloc函數需要幾個要求:內存分配給誰? 分配多大內存? 是否還有足夠內存分配?內存的將用來存儲什么格式的數據,即內存用來做什么?分配好的內存在哪里?如果這五點都確定,那內存就能分配。下面先看malloc函數的原型void * malloc(uint size) (2)calloc函數 (3)free函數 (4)realloc函數四、什么是野指針1、野雞指針的形成 2、野指針的危害五、void指針類型指向空類型指針,而非指向任意

50、類型的指針課后自我總結分析備注C語言程序設計教案第43-44 課時 授課內容第9章(1) 結構體概述及應用教學目的和要求結構體類型、變量的定義及初始化;結構體變量的引用;結構體數組,結構體指針重點難點結構體類型、變量的定義及初始化;結構體變量的引用;結構體數組,結構體指針教學安排引言例子:學生信息管理系統講授一、結構體類型1、結構體類型和結構體變量(1) 結構體類型定義的一般形式 例如:定義關于學生信息的結構體類型。(2) 結構體變量的定義(三種方法)l 先定義結構體類型,再定義結構體變量(概念、含義相當清晰)l 定義結構體類型的同時定義結構體變量l 直接定義結構體變量(不給出結構體類型名,匿

51、名的結構體類型)2、結構體變量的引用(1) 引用結構體變量中的一個成員。結構體變量名.成員名(2) 成員本身又是結構體類型時的子成員的訪問-使用成員運算符逐級訪問(3) 同一種類型的結構體變量之間可以直接賦值(4) 不允許將一個結構體變量整體輸入/輸出1、 結構體變量的初始化二、結構體數組結構體數組-數組元素的類型為結構體類型的數組1、 結構體數組的定義類似結構體變量定義,只是將“變量名”用“數組名長度”代替),也有3種方式。2、結構體數組的初始化三、結構體指針變量1、結構體指針變量(1) 結構體指針變量的定義(2) 通過結構體指針變量訪問結構體變量的成員:(*結構體指針變量名).成員名 結構

52、體指針變量名->成員名2、結構體變量、結構體指針變量作函數參數課后自我總結分析備注C語言程序設計教案第45-46 課時 授課內容第9章(2) 鏈表教學目的和要求掌握鏈表的使用;重點難點重點:掌握鏈表的使用;掌握共同體類型的使用;理解枚舉類型的概念難點:掌握鏈表的使用;掌握共同體類型的使用;理解枚舉類型的概念教學安排講授一、鏈表概述1、什么是鏈表(1)鏈表中節點的定義(2)鏈表的基本操作2、建立簡單的靜態鏈表二、建立動態鏈表1、動態鏈表(1)處理動態鏈表所需要的函數 malloc()、calloc()、free()(2)結點的動態分配2、輸出鏈表例9.10 編寫一個輸出鏈表的函數print3、對鏈表的刪除操作4、對鏈表的插入操作二、雙向鏈表1、雙向鏈表的存儲結構2、建立雙向鏈表3、雙向鏈表的操作三、環形鏈表1、兒時玩的丟手絹的游戲 環形約瑟夫問題2、解決環形情況的問題比較方便3、構造環形鏈表4、環形鏈表的特點四、上機演示及實踐操作在講課的同時切換到編譯器界面調試代碼課后自我總結分析備注C語言程序設計教案第47-48 課時 授課內容第9章(3) 共用體及枚舉教學目的和要求掌握鏈表的使用;掌握共用體類型的使用;理解枚舉類型的概念重點難點

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論