程序設(shè)計(jì)基礎(chǔ)(C語言)(第2版)(微課版)-教案 第7-10章 函數(shù)-文件_第1頁
程序設(shè)計(jì)基礎(chǔ)(C語言)(第2版)(微課版)-教案 第7-10章 函數(shù)-文件_第2頁
程序設(shè)計(jì)基礎(chǔ)(C語言)(第2版)(微課版)-教案 第7-10章 函數(shù)-文件_第3頁
程序設(shè)計(jì)基礎(chǔ)(C語言)(第2版)(微課版)-教案 第7-10章 函數(shù)-文件_第4頁
程序設(shè)計(jì)基礎(chǔ)(C語言)(第2版)(微課版)-教案 第7-10章 函數(shù)-文件_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

課程教案課程名稱:程序設(shè)計(jì)基礎(chǔ)(C語言)授課對(duì)象:本科一年級(jí)開課單位:教研室(教學(xué)系):課程負(fù)責(zé)人:2026年3月1日

授課單元教案課程單元函數(shù)學(xué)時(shí)8章節(jié)第七章專題教學(xué)目標(biāo)設(shè)計(jì)1、函數(shù)的概念2、作用及分類3、函數(shù)的定義及調(diào)用方法4、函數(shù)的參數(shù)傳遞5、函數(shù)的聲明6、變量的作用域和存儲(chǔ)類別7、編譯預(yù)處理8、智能控制項(xiàng)目實(shí)踐教學(xué)重點(diǎn)難點(diǎn)及處理1、函數(shù)的參數(shù)傳遞2、函數(shù)的遞歸調(diào)用3、變量的作用域和存儲(chǔ)類別教學(xué)媒體和資源選擇硬件環(huán)境:連接到Internet的多媒體網(wǎng)絡(luò)教室(每人一機(jī)),大屏幕投影儀,聯(lián)網(wǎng)智能手機(jī),耳麥,音響設(shè)備,激光投影筆等。軟件資源:PPT課件、網(wǎng)絡(luò)教學(xué)軟件、VC++軟件、學(xué)習(xí)通手機(jī)APP、Zoomit板書演示輔助軟件等。作業(yè)課前:線上平臺(tái)完成第七章視頻觀看,了解本章節(jié)學(xué)習(xí)內(nèi)容;2、實(shí)踐及課后:(1)完成課堂測驗(yàn)7與課后作業(yè)7(2)AI賦能,解鎖未來(3)雙向?qū)﹀e(cuò)演示視頻教學(xué)設(shè)計(jì)1、函數(shù)的概念與分類(1)將一個(gè)C程序分為若干模塊,每個(gè)模塊實(shí)現(xiàn)一個(gè)特定的功能,在C語言中用函數(shù)來實(shí)現(xiàn)模塊的功能。引例:從鍵盤輸入兩個(gè)整數(shù),輸出其較小的數(shù)。(2)從用戶使用的角度看,函數(shù)有兩種:①標(biāo)準(zhǔn)函數(shù)(庫函數(shù));②用戶自己定義的函數(shù)(3)從函數(shù)的參數(shù)形式看,函數(shù)可分為兩類:①無參函數(shù);②有參函數(shù)(4)從函數(shù)功能角度看,函數(shù)可分為兩類:①有返回值函數(shù);②無返回值函數(shù)2、函數(shù)定義與返回值(1)無參函數(shù)定義類型說明符函數(shù)名(){說明部分語句}例1、調(diào)用無參函數(shù)輸出菜單。(2)有參函數(shù)定義類型標(biāo)識(shí)符函數(shù)名(參數(shù)表){說明部分語句}例2、使用函數(shù)計(jì)算一個(gè)學(xué)生兩門課程的總分和平均分。隨堂練習(xí)1(3)函數(shù)參數(shù)和返回值形式參數(shù)和實(shí)際參數(shù)形式參數(shù):在定義函數(shù)時(shí)函數(shù)名后面括弧中的變量名,簡稱形參。實(shí)際參數(shù):在調(diào)用函數(shù)時(shí)函數(shù)名后面括弧中的表達(dá)式,簡稱實(shí)參。隨堂練習(xí)2函數(shù)的返回值通過函數(shù)中的return語句將被調(diào)用函數(shù)中的一個(gè)確定的值帶回到主調(diào)函數(shù)中去。3、函數(shù)調(diào)用(1)函數(shù)的聲明和函數(shù)調(diào)用函數(shù)聲明的一般格式:類型說明符函數(shù)名(形式參數(shù)表列);隨堂練習(xí)3所謂函數(shù)調(diào)用就是調(diào)用函數(shù)向被調(diào)函數(shù)傳送數(shù)據(jù)并將控制權(quán)交給被調(diào)用函數(shù),當(dāng)被調(diào)用函數(shù)執(zhí)行完后,將結(jié)果回傳給調(diào)用函數(shù)并交回控制權(quán)。調(diào)用方式函數(shù)表達(dá)式如:c=2*max(a,b);作為語句用(函數(shù)語句)如:printf(“****”);fun();作為函數(shù)參數(shù)如:m=max(a,max(b,c));printf(“%f\n”,max(a,b));隨堂練習(xí)4(2)函數(shù)的參數(shù)傳遞發(fā)生函數(shù)調(diào)用時(shí),主調(diào)函數(shù)把實(shí)參的值傳送給被調(diào)函數(shù)的形參從而實(shí)現(xiàn)主調(diào)函數(shù)向被調(diào)函數(shù)的數(shù)據(jù)傳送。(1)函數(shù)被調(diào)用時(shí),系統(tǒng)給形參變量分配內(nèi)存單元,調(diào)用結(jié)束時(shí),內(nèi)存單元就被釋放。(在內(nèi)存中實(shí)參單元和形參單元是不同的存儲(chǔ)單元。)(2)無論實(shí)參是何種類型的量,在進(jìn)行函數(shù)調(diào)用時(shí),它們都必須具有確定的值。(3)實(shí)參和形參在數(shù)量上,類型上,順序上應(yīng)相匹配(4)函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。即只能把實(shí)參的值傳送給形參,不能把形參值反向傳送給實(shí)參。因此,形參的值如發(fā)生改變,不會(huì)影響到調(diào)用函數(shù)中實(shí)參的值例3、調(diào)用函數(shù)時(shí)的參數(shù)傳遞。類型標(biāo)識(shí)符函數(shù)名()5、嵌套調(diào)用與遞歸調(diào)用(1)嵌套調(diào)用在C語言中,不能將函數(shù)定義放在另一個(gè)函數(shù)的函數(shù)體中,但允許在調(diào)用一個(gè)函數(shù)的過程中調(diào)用另一個(gè)函數(shù)。這稱為函數(shù)的嵌套調(diào)用。例4、用弦切法求方程x3-5x2+16x-80=0的根。(2)遞歸調(diào)用在調(diào)用一個(gè)函數(shù)的過程中直接或間接調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。遞歸調(diào)用簡稱遞歸。例5、編寫一個(gè)遞歸函數(shù),求n的階乘值n!隨堂練習(xí)5:有一只調(diào)皮的小猴子,摘了一堆水果,第一天吃了水果的一半,又多吃了一個(gè);第二天吃了剩下水果的一半,又多吃了一個(gè);依次類推….到第十天,發(fā)現(xiàn)只剩下了1個(gè)水果,請(qǐng)問這只猴子到底摘了多少個(gè)水果?6、數(shù)組作函數(shù)參數(shù)(1)數(shù)組元素作函數(shù)參數(shù)數(shù)組元素作函數(shù)的參數(shù)與普通變量作函數(shù)的參數(shù)本質(zhì)相同。數(shù)組元素作函數(shù)實(shí)參時(shí),僅僅是將其代表的值作為實(shí)參處理。數(shù)組中元素作為函數(shù)的實(shí)參,與簡單變量作為實(shí)參一樣,結(jié)合的方式是單向的值傳遞。(2)數(shù)組名作函數(shù)參數(shù)例6、求數(shù)組中的最大元素。用數(shù)組名作函數(shù)的參數(shù)可以解決函數(shù)只能有一個(gè)返回值的問題。數(shù)組名代表數(shù)組的首地址,在數(shù)組名作為函數(shù)的參數(shù)時(shí),形參和實(shí)參都應(yīng)該是數(shù)組名。在函數(shù)調(diào)用時(shí),實(shí)參給形參傳遞的數(shù)據(jù)是實(shí)參數(shù)組的首地址,即實(shí)參數(shù)組和形參數(shù)組完全等同,是存放在同一存儲(chǔ)空間的同一個(gè)數(shù)組,形參數(shù)組和實(shí)參數(shù)組共享存儲(chǔ)單元。如果在函數(shù)調(diào)用過程中形參數(shù)組的內(nèi)容被修改了,實(shí)際上也修改了實(shí)參數(shù)組的內(nèi)容。例7、求數(shù)組中的最大元素。隨堂練習(xí)6隨堂練習(xí)7(3)二維數(shù)組作函數(shù)參數(shù)多維數(shù)組名也可以作為函數(shù)的實(shí)參和形參。在定義函數(shù)時(shí),對(duì)形參數(shù)組的說明可以指定每一維的大小,也可以省略第一維的大小。但是不能把多維數(shù)組的第二維及其他高維的大小說明省略。因?yàn)閺膶?shí)參傳來的是數(shù)組起始地址,如果在形參中不說明列數(shù),則系統(tǒng)無法決定應(yīng)為多少行多少列,也就無法確定數(shù)組元素在內(nèi)存中的位置。例8、利用函數(shù)求兩個(gè)矩陣的和并輸出。7、變量作用域與存儲(chǔ)類別(1)變量作用域變量的作用域是指變量的可見范圍或可使用的有效范圍。變量的作用域可為一個(gè)函數(shù),也可為整個(gè)程序。C語言中變量說明的方式不同,其作用域也不同。C語言中的變量,按作用域范圍可分為兩種:局部變量和全局變量。局部變量概念:在一個(gè)函數(shù)內(nèi)部定義的變量是內(nèi)部變量,它只在本函數(shù)范圍內(nèi)有效,即其作用域是有限的、局部的,稱為局部變量。例:不同函數(shù)中可以使用相同名字的變量,它們代表不同的對(duì)象,互不干擾。floatf1(inta){intb,c;:}charf2(intx,inty){inti,j,b;:}intmain(){intm,n,j;:}例9、復(fù)合語句中的局部變量全局變量概念:在函數(shù)外面定義的變量稱為全局變量(外部變量)。全局變量可以被本文件中的其他函數(shù)所共有。其作用域?yàn)閺亩x處開始至本文件的結(jié)束。例:輸入4個(gè)數(shù),編一個(gè)函數(shù)求這些數(shù)的平均值,最大數(shù)、最小數(shù)例9、遠(yuǎn)水救不了近火(全局變量與局部變量同名的實(shí)例)。(2)變量存儲(chǔ)類別靜態(tài)存儲(chǔ)方式是指在程序的運(yùn)行期間分配固定的存儲(chǔ)空間的方式。動(dòng)態(tài)存儲(chǔ)方式是指在程序運(yùn)行期間根據(jù)需要進(jìn)行動(dòng)態(tài)的分配存儲(chǔ)空間的方式。四種存儲(chǔ)類別:自動(dòng)的(auto)、靜態(tài)的(static)、寄存器的(register)、外部的(extern)。自動(dòng)存儲(chǔ)變量的定義格式為:[auto]類型說明符變量名[=初值表達(dá)式],......;寄存器存儲(chǔ)變量的定義格式為:register類型說明符變量名局部靜態(tài)存儲(chǔ)變量的定義格式:static類型說明符變量名[=初始化常量表達(dá)式],......;隨堂練習(xí)8:外部變量默認(rèn)是靜態(tài)存儲(chǔ)類別,auto只能用于函數(shù)內(nèi)部的變量外部變量是指定義在文件中的所有函數(shù)之外的變量。在定義時(shí),不必加關(guān)鍵字“extern”,但在聲明時(shí)必須加“extern”關(guān)鍵字。隨堂練習(xí)98、編譯預(yù)處理(1)C提供的預(yù)處理功能主要有三種:宏定義;文件包含;條件編譯(2)宏定義無參的宏定義#define標(biāo)識(shí)符字符串例:輸入圓的半徑,求圓的周長、面積和球的體積(要求使用無參宏定義圓周率)。帶參數(shù)的宏定義#define宏名(形參表)字符串帶參宏調(diào)用宏名(實(shí)參表)取消宏定義#undef標(biāo)識(shí)符隨堂練習(xí)10隨堂練習(xí)11隨堂練習(xí)12(3)文件包含一個(gè)源文件可以將另一個(gè)源文件的全部內(nèi)容包含進(jìn)來,即將另外的文件包含到本文件之中。#include"包含文件名"(4)條件編譯所謂“條件編譯”,是對(duì)部分內(nèi)容指定編譯的條件,使其只在滿足一定條件才進(jìn)行編譯形式一:#ifdef標(biāo)識(shí)符程序段1#else程序段2#endif形式二:#ifndef標(biāo)識(shí)符程序段1#else程序段2#endif形式三:#if常量表達(dá)式程序段1#else程序段2#endif例:輸入一行字母字符,根據(jù)需要設(shè)置條件編譯,使之能將字母全改為大寫輸出,或全改為小寫字母輸出。9、智能控制項(xiàng)目實(shí)踐例:模擬單片機(jī)LED燈控制:用戶輸入閃爍次數(shù)(n)和閃爍間隔(秒),程序輸出LED的“亮”“滅”狀態(tài),模擬循環(huán)閃爍效果(用延時(shí)函數(shù)模擬硬件延時(shí))。AI實(shí)踐:(1)模擬恒溫箱控制設(shè)定目標(biāo)溫度(如25℃),程序隨機(jī)生成當(dāng)前環(huán)境溫度(10-40℃),通過“加熱”“制冷”“待機(jī)”三種動(dòng)作調(diào)節(jié)溫度,直到接近目標(biāo)溫度(誤差≤0.5℃),輸出調(diào)節(jié)過程。(2)電機(jī)轉(zhuǎn)速調(diào)節(jié)(PWM脈沖模擬)模擬電機(jī)PWM(脈沖寬度調(diào)制)調(diào)速:用戶輸入目標(biāo)轉(zhuǎn)速(0-100%),程序輸出PWM波形的“高電平”“低電平”序列(占空比=轉(zhuǎn)速百分比),模擬電機(jī)轉(zhuǎn)速控制(占空比越高,轉(zhuǎn)速越快)。10、AI賦能:解鎖未來用函數(shù)實(shí)現(xiàn)輸入一個(gè)3位正整數(shù),求各位數(shù)之和,完成思考、糾錯(cuò)與優(yōu)化過程。教學(xué)反思概念的提出采用啟發(fā)式教學(xué)方法,函數(shù)的定義及調(diào)用主要通過對(duì)實(shí)際例子分析、現(xiàn)場程序編制等方法加以說明、理解和鞏固,突出重點(diǎn);整個(gè)內(nèi)容的安排采用由淺入深的方法,例題的選用采用三個(gè)難度等級(jí),逐步加深,將教學(xué)的難點(diǎn)分散到整個(gè)教學(xué)過程中,前后呼應(yīng)。對(duì)于作用域和存儲(chǔ)類別問題的講解采有圖示法幫助學(xué)生理解相對(duì)抽象的存儲(chǔ)概念。授課單元教案課程單元指針學(xué)時(shí)8章節(jié)第八章專題教學(xué)目標(biāo)設(shè)計(jì)1、指針與指針變量2、指針的運(yùn)算3、指針與數(shù)組4、指針與字符串5、指針與函數(shù)教學(xué)重點(diǎn)難點(diǎn)及處理1、指針的運(yùn)算2、指針與數(shù)組3、指針與字符串教學(xué)媒體和資源選擇硬件環(huán)境:連接到Internet的多媒體網(wǎng)絡(luò)教室(每人一機(jī)),大屏幕投影儀,聯(lián)網(wǎng)智能手機(jī),耳麥,音響設(shè)備,激光投影筆等。軟件資源:PPT課件、網(wǎng)絡(luò)教學(xué)軟件、VC++軟件、學(xué)習(xí)通手機(jī)APP、Zoomit板書演示輔助軟件等。作業(yè)課前:預(yù)習(xí)本章節(jié)學(xué)習(xí)內(nèi)容;2、實(shí)踐及課后:(1)完成課堂測驗(yàn)8與課后作業(yè)8(2)AI賦能,解鎖未來(3)雙向?qū)﹀e(cuò)演示視頻教學(xué)設(shè)計(jì)1、指針與指針變量(1)指針概念內(nèi)存單元:在計(jì)算機(jī)中所有的數(shù)據(jù)都是存放在存儲(chǔ)器中的。一般把存儲(chǔ)器中的一個(gè)字節(jié)稱為一個(gè)內(nèi)存單元。指針:為了方便管理,為每個(gè)內(nèi)存單元編號(hào)。根據(jù)內(nèi)存單元的編號(hào)就可以找到所需的內(nèi)存單元。內(nèi)存單元編號(hào)也叫地址,通常也把這個(gè)地址稱為指針。指針變量:存放指針的變量指針變量的值:某個(gè)內(nèi)存單元的地址(2)指針變量的定義類型說明符*指針變量名;2、指針的運(yùn)算(1)有關(guān)指針的兩個(gè)運(yùn)算符取地址運(yùn)算符&:&變量名;取內(nèi)容運(yùn)算符*:intb=3,*p;p=&b; 我們稱*p得到的是變量b(或3)。(2)賦值運(yùn)算把一個(gè)變量的地址賦予指向相同數(shù)據(jù)類型的指針變量。 inta,*pa; pa=&a;/*把整型變量a的地址賦予整型指針變量pa*/把一個(gè)指針變量的值賦予指向相同類型變量的另一個(gè)指針變量。 inta,*pa,*pb;pa=&a;pb=pa;/*把a(bǔ)的地址賦予指針變量pb*/把數(shù)組的首地址賦予指向數(shù)組的指針變量。 inta[5],*pa; pa=a; 也可寫為:pa=&a[0];把字符串的首地址賦予指向字符類型的指針變量。 char*pc; pc="clanguage"; 或用初始化賦值的方法寫為: char*pc="cLanguage";(3)指針的算術(shù)運(yùn)算對(duì)指針變量,可以加上或減去一個(gè)整型量,也可以進(jìn)行自增、自減運(yùn)算。即下面的運(yùn)算是合法的(p是指針變量)。 p+n,p-n,p++,++p,p--,--p(4)兩個(gè)指針變量之間的運(yùn)算只有指向同一數(shù)組的兩個(gè)指針變量之間才能進(jìn)行運(yùn)算,否則運(yùn)算毫無意義。兩指針變量相減所得之差是兩個(gè)指針?biāo)笖?shù)組元素之間相差的元素個(gè)數(shù)。 如:inta[10],*p=&a[1],*q=&a[5];則q-p的值為4。注意:兩個(gè)指針變量不能進(jìn)行加法運(yùn)算。兩指針變量進(jìn)行關(guān)系運(yùn)算 指向同一數(shù)組的兩指針變量進(jìn)行關(guān)系運(yùn)算可表示它們所指數(shù)組元素之間的關(guān)系。3、指針與數(shù)組(1)一維數(shù)組的指針表示一個(gè)數(shù)組的元素在內(nèi)存中是連續(xù)存放的,數(shù)組第一個(gè)元素的地址稱為數(shù)組的首地址。C語言規(guī)定數(shù)組名是該數(shù)組的首地址。例如,有如下定義語句: inta[10],*p;則語句p=a;和p=&a[0]是等價(jià)的,都表示指針p指向數(shù)組a的首地址。注意:*C語言規(guī)定,數(shù)組首地址即數(shù)組名是一個(gè)地址常量,是不能改變的,a++;是非法的。由于a+i為a[i]的地址,因此用指針給出數(shù)組元素的地址和內(nèi)容有以下幾種表示形式:p+i和a+i都表示a[i]的地址,它們都指向a[i]。*(p+i)和*(a+i)都表示p+i或者a+i所指向?qū)ο蟮膬?nèi)容,即a[i]。指向數(shù)組元素的指針,也可以表示成數(shù)組的形式,也就是說指針變量也可以帶有下標(biāo),如p[i]與*(p+i)等價(jià)。例1、利用指針實(shí)現(xiàn)數(shù)組中的元素輸入和輸出。(2)二維數(shù)組的指針表示二維數(shù)組元素的地址 對(duì)于一個(gè)具有n行m列的二維數(shù)組a,可以將a看成是一個(gè)長度為n的一維數(shù)組,數(shù)組中的每一個(gè)元素又是一個(gè)長度為m的一維數(shù)組。 從二維數(shù)組的角度來看,a代表二維數(shù)組的首地址,當(dāng)然也可看成是二維數(shù)組第0行的首地址。a+1就代表第1行的首地址,a+2就代表第2行的首地址。 a[i]是一個(gè)一維數(shù)組名,即a[i]代表第i行的首地址,a[i]+j即代表第i行第j列元素的地址,即&a[i][j]。 可用指針的形式來表示二維數(shù)組各元素的地址。如前所述,a[0]與*(a+0)等價(jià),a[1]與*(a+1)等價(jià),因此a[i]+j就與*(a+i)+j等價(jià),它表示數(shù)組元素a[i][j]的地址。 二維數(shù)組元素a[i][j]可表示成*(a[i]+j)或*(*(a+i)+j),它們都與a[i][j]等價(jià),或者還可寫成(*(a+i))[j]。即有如下關(guān)系成立。 a+i?a[i]?*(a+i)?&a[i][0] *(*(a+i)+j)=a[i][j]用一級(jí)指針引用二維數(shù)組元素由于二維數(shù)組在存儲(chǔ)時(shí)是線性存儲(chǔ)的,因而可以用一級(jí)指針來引用二維數(shù)組的元素。其一般形式為: 設(shè)有如下定義(其中M和N是已經(jīng)定義了的符號(hào)常量): inta[M][N],*p=a[0]; 則有:p+i*N+j表示了數(shù)組元素a[i][j]的地址;*(p+i*N+j)表示了數(shù)組元素a[i][j]。即有:p+i*N+j?&a[i][j] *(p+i*N+j)?a[i][j]例2、求5階方陣的主對(duì)角元素之和。用指向由n個(gè)元素構(gòu)成的一維數(shù)組的指針表示二維數(shù)組的元素 指向一個(gè)由n個(gè)元素所組成的數(shù)組指針的定義格式為: 類型說明符(*指針變量名)[大小];此指針也稱為行指針。例如: int(*p)[5]; 指針p為指向一個(gè)由5個(gè)元素所組成的整型數(shù)組指針。用行指針表示二維數(shù)組的一般形式為: 設(shè)有如下定義(其中M和N是已經(jīng)定義了的符號(hào)常量): inta[M][N],(*p)[N]=a;則有: p+i?a+i?a[i] *(p+i)+j?&a[i][j] *(*(p+i)+j)?a[i][j]例3、用行指針方式求5階方陣的主對(duì)角元素之和。(3)指針數(shù)組一個(gè)數(shù)組的若干元素均為指針型數(shù)據(jù)類型,稱為指針數(shù)組。即每個(gè)元素都是指針類型的數(shù)組。 指針數(shù)組的定義形式為: 類型名*數(shù)組名[數(shù)組長度]; 例如:int*p[6]; p是數(shù)組名,這個(gè)數(shù)組包括6個(gè)元素,p[0]-p[5],每個(gè)元素都是指向整型數(shù)據(jù)的指針,及p可以用于保存6個(gè)整型數(shù)據(jù)的地址。4、指針與字符串對(duì)字符串的操作有兩種方法:一種方法是使用字符數(shù)組,另一種是使用字符指針。在字符串處理中,使用字符指針往往比使用字符數(shù)組更方便。 將字符串的指向數(shù)組名賦給一個(gè)字符串指針變量,讓字符串指針變量指向字符串的首地址,這樣就可以通過指向字符串的指針變量操作字符串,例如:charstr[]="WelcomeToChina“,*p;p=str;printf("%s\n",p);也可以不定義字符數(shù)組,而定義一個(gè)字符指針,用字符指針指向字符串中的字符。例如: char*p="WelcomeToChina"; printf("%s\n",p);還可以按以下形式賦值: char*p; p="WelcomeToChina";例4、利用字符指針變量的方法,完成字符串的復(fù)制。5、指針與函數(shù)(1)指針作函數(shù)參數(shù)指針變量既可以作為函數(shù)的形參,也可以作函數(shù)的實(shí)參。指針變量作參數(shù)時(shí),參數(shù)傳遞是“地址傳遞”,即將實(shí)參(一個(gè)地址)傳遞給被調(diào)用函數(shù)的形參(必須是一個(gè)指針變量)。特點(diǎn):共享內(nèi)存,“雙向”傳遞例5、從鍵盤輸入兩個(gè)數(shù),再從大到小輸出。例6、從鍵盤輸入10個(gè)數(shù),按從小到大的順序輸出。(2)返回指針的函數(shù)一個(gè)函數(shù)可以返回一個(gè)整型值,實(shí)型值等,在有的情況下,我們希望通過函數(shù)返回一個(gè)指針值。返回指針值的函數(shù)稱為返回指針的函數(shù)(或稱指針函數(shù))。定義返回指針的函數(shù)形式為: 類型說明符*函數(shù)名(類型形參1,類型形參2,…) { 函數(shù)體 } 函數(shù)名前面的“*”表示該函數(shù)是返回指針的函數(shù),“類型說明符”是函數(shù)返回的指針?biāo)赶虻臄?shù)據(jù)類型。 返回指針的函數(shù)在被調(diào)用的時(shí)候必須注意:調(diào)用該函數(shù)給指針變量賦值,該指針變量的基類型必須與該函數(shù)返回的指針的基類型相同。例7、有若干學(xué)生的成績(每個(gè)學(xué)生有5門成績),要求在用戶在輸入學(xué)生序號(hào)以后,能輸出該學(xué)生的全部成績(要求用指針函數(shù)來實(shí)現(xiàn))。(3)指向函數(shù)的指針函數(shù)指針變量定義的一般形式為: 類型說明符(*指針變量名)(); 其中“類型說明符”表示被指向的函數(shù)的返回值的類型?!?*指針變量名)”表示“*”后面的變量是定義的指針變量。最后的空括號(hào)表示指針變量所指的是一個(gè)函數(shù)。 例如:int(*pf)(); 表示pf是一個(gè)指向函數(shù)入口的指針變量,該函數(shù)的返回值(函數(shù)值)是整型。指向函數(shù)的指針變量的賦值 指向函數(shù)的指針變量名=函數(shù)名; 如:intfunc(inta,intb); int(*p)(inta,intb); p=func;通過指向函數(shù)的指針變量調(diào)用函數(shù)(*指針變量名)(實(shí)參表);例7、用指向函數(shù)的指針的方法求兩個(gè)數(shù)的最大值。指向函數(shù)的指針作函數(shù)參數(shù)指向函數(shù)的指針變量調(diào)用函數(shù)主要用在多次調(diào)用一些同類型的函數(shù)的情形。此外指向函數(shù)的指針變量可以作函數(shù)參數(shù)。例8、編寫一個(gè)函數(shù),每次在調(diào)用它時(shí)實(shí)現(xiàn)不同的功能。輸入兩個(gè)整數(shù),利用前面編寫的函數(shù)求出它們的之和、之差、之積。6、AI賦能:解鎖未來按教材P152步驟完成,并掌握用AI輔助改進(jìn)程序的方法。教學(xué)反思指針教學(xué)的核心,并非讓學(xué)生死記硬背語法規(guī)則,而是幫助學(xué)生建立內(nèi)存思維——讓學(xué)生能從內(nèi)存地址的角度,理解代碼的執(zhí)行過程。作為C語言的“分水嶺”,指針的學(xué)習(xí)需要一個(gè)循序漸進(jìn)的過程,不能急于求成。后續(xù)教學(xué)中,需更注重“從學(xué)生的視角出發(fā)”,站在學(xué)生的認(rèn)知層面設(shè)計(jì)教學(xué)環(huán)節(jié),多借助直觀的演示、針對(duì)性的練習(xí)、及時(shí)的錯(cuò)誤反饋,化解指針的抽象性,讓學(xué)生不僅“會(huì)用指針”,更“理解指針”,為后續(xù)學(xué)習(xí)結(jié)構(gòu)體、鏈表等進(jìn)階內(nèi)容打下堅(jiān)實(shí)的基礎(chǔ)。同時(shí),指針的學(xué)習(xí)離不開大量的實(shí)操,課后需鼓勵(lì)學(xué)生多編寫代碼、多調(diào)試錯(cuò)誤,讓學(xué)生在實(shí)踐中感受指針的用法、規(guī)避指針的陷阱,真正實(shí)現(xiàn)“概念理解”與“實(shí)操能力”的雙重提升。授課單元教案課程單元結(jié)構(gòu)體、共用體和枚舉學(xué)時(shí)6章節(jié)第九章專題教學(xué)目標(biāo)設(shè)計(jì)1、結(jié)構(gòu)體類型與變量2、結(jié)構(gòu)體數(shù)組3、指針與結(jié)構(gòu)體4、結(jié)構(gòu)體應(yīng)用5、共用體類型與變量6、枚舉類型與變量7、自定義數(shù)據(jù)類型8、綜合應(yīng)用教學(xué)重點(diǎn)難點(diǎn)及處理1、結(jié)構(gòu)體類型2、共用體類型3、枚舉類型教學(xué)媒體和資源選擇硬件環(huán)境:連接到Internet的多媒體網(wǎng)絡(luò)教室(每人一機(jī)),大屏幕投影儀,聯(lián)網(wǎng)智能手機(jī),耳麥,音響設(shè)備,激光投影筆等。軟件資源:PPT課件、網(wǎng)絡(luò)教學(xué)軟件、VC++軟件、學(xué)習(xí)通手機(jī)APP、Zoomit板書演示輔助軟件等。作業(yè)1、課前:預(yù)習(xí)本章節(jié)學(xué)習(xí)內(nèi)容;2、實(shí)踐及課后:(1)完成課堂測驗(yàn)9與課后作業(yè)9(2)AI賦能,解鎖未來(3)雙向?qū)﹀e(cuò)演示視頻教學(xué)設(shè)計(jì)1、結(jié)構(gòu)體類型與變量(1)結(jié)構(gòu)體類型與結(jié)構(gòu)體變量的定義結(jié)構(gòu)體類型:結(jié)構(gòu)體是一種構(gòu)造數(shù)據(jù)類型用途:把不同類型的數(shù)據(jù)組合成一個(gè)整體—自定義數(shù)據(jù)類型struct[結(jié)構(gòu)體名]{類型標(biāo)識(shí)符成員名1;類型標(biāo)識(shí)符成員名2;…………….};成員列表的格式為:類型成員名;定義結(jié)構(gòu)體變量3種方法:先定義結(jié)構(gòu),再說明結(jié)構(gòu)體變量。在定義結(jié)構(gòu)體類型的同時(shí)說明結(jié)構(gòu)體變量。直接說明結(jié)構(gòu)體變量。(2)結(jié)構(gòu)體變量的引用由結(jié)構(gòu)體變量名引用其成員結(jié)構(gòu)體變量不能整體引用,只能引用變量成員引用方式:結(jié)構(gòu)體變量名.成員名(3)結(jié)構(gòu)體變量的初始化形式一:struct結(jié)構(gòu)體名{類型標(biāo)識(shí)符成員名;類型標(biāo)識(shí)符成員名;…………….};struct結(jié)構(gòu)體名結(jié)構(gòu)體變量={初始數(shù)據(jù)};形式二:struct結(jié)構(gòu)體名{類型標(biāo)識(shí)符成員名;類型標(biāo)識(shí)符成員名;…………….}結(jié)構(gòu)體變量={初始數(shù)據(jù)};形式三:struct{類型標(biāo)識(shí)符成員名;類型標(biāo)識(shí)符成員名;…………….}結(jié)構(gòu)體變量={初始數(shù)據(jù)};例1、在定義結(jié)構(gòu)體變量時(shí)進(jìn)行初始化。2、結(jié)構(gòu)體數(shù)組(1)結(jié)構(gòu)體數(shù)組的定義結(jié)構(gòu)體數(shù)組定義一般形式為:struct結(jié)構(gòu)體類型名數(shù)組名[常量表達(dá)](2)結(jié)構(gòu)體數(shù)組的初始化structsd{intnum;char*name;charsex;floatscore;}boy[5]={{100,"HY",'M',75},{101,"ztp",'M',65},{102,"wyong",'F',95},{103,"wangwei",'F',85},{104,"jzhen",'M',45};}(3)結(jié)構(gòu)體數(shù)組元素引用舉例例2、建立同學(xué)通訊錄3、指針與結(jié)構(gòu)體(1)指向結(jié)構(gòu)體變量的指針定義形式:struct結(jié)構(gòu)體名*結(jié)構(gòu)體指針名;例3、結(jié)構(gòu)體變量成員的3種引用方式。(2)指向結(jié)構(gòu)體數(shù)組的指針structstudent{intnum;charname[20];charsex;intage;}stu[3]={{10101,"LiLin",'M',18},{10102,"ZhangFun",'M',19}, {10104,"WangMin",'F',20}};main(){structstudent*p;for(p=stu;p<stu+3;p++)printf("%d%s%c%d\n",p->num,p->name,p->sex,p->age);}(3)結(jié)構(gòu)體與函數(shù)參數(shù)將一個(gè)結(jié)構(gòu)體變量的值傳遞給函數(shù)作參數(shù),有以下3種方法。用結(jié)構(gòu)體變量的成員作參數(shù)----值傳遞用指向結(jié)構(gòu)體變量或數(shù)組的指針作參數(shù)----地址傳遞用結(jié)構(gòu)體變量作參數(shù)----多值傳遞,效率低例4、用結(jié)構(gòu)體變量作函數(shù)參數(shù)。4、結(jié)構(gòu)體應(yīng)用(1)順序表順序表的定義和創(chuàng)建定義順序表list:typedefstruct{intdata[1000];intlast;}LIST;LISTlist;創(chuàng)建順序表就是輸入數(shù)據(jù)元素,設(shè)置表的長度。voidcreate(){inti,n;printf("請(qǐng)輸入元素個(gè)數(shù):");scanf("%d",&n);printf("請(qǐng)輸入各元素的值:");for(i=0;i<n;i++)scanf("%d",&List.data[i]);List.last=n;}順序表的基本操作順序表元素的插入要在i的位置上插入一個(gè)新數(shù)據(jù)d,必須先將元素Di,…,Dn-1的位置向后移,然后在第i個(gè)位置上放入d的值。同時(shí),順序表的長度加1。例4、順序表元素插入函數(shù)順序表元素的刪除要在i的位置上刪除第i個(gè)元素,只要將元素Di+1,…,Dn-1的位置向前移一個(gè)位置。同時(shí),順序表的長度減1。例5、順序表元素刪除函數(shù)(2)鏈表鏈表概述指有若干個(gè)數(shù)據(jù)項(xiàng),每個(gè)數(shù)據(jù)項(xiàng)稱為一個(gè)“節(jié)點(diǎn)”,這些節(jié)點(diǎn)按一定的原則連接起來。每個(gè)數(shù)據(jù)項(xiàng)都包含若干個(gè)數(shù)據(jù)和一個(gè)指向下一個(gè)數(shù)據(jù)項(xiàng)的指針,依靠這些指針將所有的數(shù)據(jù)項(xiàng)連接起來。鏈表是一種常見的數(shù)據(jù)結(jié)構(gòu)。它是實(shí)現(xiàn)動(dòng)態(tài)存儲(chǔ)分配的一種結(jié)構(gòu)。鏈表的存儲(chǔ)分配C語言提供了管理內(nèi)存的函數(shù),這些內(nèi)存管理函數(shù)可以按需要?jiǎng)討B(tài)地分配內(nèi)存空間,可以將不再使用的內(nèi)存空間回收待用,為有效地利用內(nèi)存資源提供了手段。分配內(nèi)存空間函數(shù)malloc()調(diào)用形式:(類型說明符*)malloc(size)分配內(nèi)存空間函數(shù)calloc()調(diào)用形式:(類型說明符*)calloc(n,size)釋放內(nèi)存空間函數(shù)free()調(diào)用形式:free(void*ptr);鏈表的建立及輸出鏈表的建立所謂建立鏈表是指在程序執(zhí)行過程中從無到有地建立起一個(gè)鏈表,即一個(gè)個(gè)地開辟節(jié)點(diǎn)和輸入各節(jié)點(diǎn)數(shù)據(jù),并建立起前后相連的關(guān)系。通常用兩種方法建立鏈表。①從鏈頭到鏈尾:新節(jié)點(diǎn)插入鏈尾。②從鏈尾到鏈頭:新節(jié)點(diǎn)插入鏈頭。例6、建立一個(gè)N個(gè)節(jié)點(diǎn)的鏈表,存放學(xué)號(hào)和成績數(shù)據(jù)。編寫一個(gè)建立鏈表的函數(shù)creat()。鏈表的輸出將鏈表中各節(jié)點(diǎn)的數(shù)據(jù)依次輸出的操作很簡單,首先要知道表頭元素的地址,可由head得到,然后順著鏈表輸出各節(jié)點(diǎn)中的數(shù)據(jù),直到最后一個(gè)節(jié)點(diǎn)。鏈表的基本操作鏈表的插入例7、編寫一個(gè)在學(xué)生數(shù)據(jù)鏈表中按學(xué)號(hào)順序插入一個(gè)節(jié)點(diǎn)的函數(shù)。假設(shè)被插節(jié)點(diǎn)的指針為pi。鏈表的刪除例8、編寫一個(gè)刪除鏈表中指定節(jié)點(diǎn)的函數(shù)。鏈表的應(yīng)用intmain() { structstudent*head,*pnum; intn,num; printf("inputnumberofnode:"); scanf("%d",&n); head=creat(n); print(head); printf("Inputthedeletednumber:"); scanf("%d",&num); head=delete(head,num); print(head); printf("Inputtheinsertednumberandscore:"); pnum=(structstudent*)malloc(sizeof(structstudent)); scanf("%d%d",&pnum->num,&pnum->score); head=insert(head,pnum); print(head); return0;} 5、共用體類型與變量(1)共用體類型與共用體變量的定義定義一個(gè)共用體類型的一般形式為:union共用體名{成員表};與定義結(jié)構(gòu)體類型變量一樣,定義共用體類型變量也有3種方式。定義共用體類型后,再定義共用體類型變量。例如:uniondta;定義共用體類型的同時(shí),定義共用體類型變量。例如:uniondt { inti; charch; floatf; }a;如果定義的共用體類型只使用一次,共用體類型名可以省略。例如:union { inti; charch; floatf; }a;(2)共用體變量的引用方式與特點(diǎn)引用共用體類型變量的一般形式如下:共用體變量名.成員名枚舉類型與變量定義枚舉類型的一般形式是:enum枚舉類型名{枚舉值表}與其他數(shù)據(jù)類型一樣,定義枚舉類型后,能夠以下面3種方式定義枚舉變量。定義枚舉類型后,再定義枚舉類型變量。例如:enumweekdayw1,w2,w3;定義枚舉類型的同時(shí),定義枚舉類型變量。例如:enumweekday{sun,mon,tue,wed,thu,fri,sat}w1,w2,w3;如果定義的枚舉類型只使用一次,枚舉類型名可以省略。例如:enum{sun,mon,tue,wed,thu,fri,sat}w1,w2,w3;自定義數(shù)據(jù)類型自定義數(shù)據(jù)類型的一般形式為:typedef類型名新名稱;例如:typedefstructstudent{charname[25];intage;charsex;}STU;8、綜合應(yīng)用例9、用結(jié)構(gòu)體指針變量作函數(shù)參數(shù)。計(jì)算一組學(xué)生的平均成績和不及格人數(shù)。例10、設(shè)有一個(gè)經(jīng)理與工人通用的表格,經(jīng)理數(shù)據(jù)有姓名、年齡、職業(yè)、辦公室4項(xiàng)。工人數(shù)據(jù)有姓名、年齡、職業(yè)、車間號(hào)4項(xiàng)。編程輸入10個(gè)人員的數(shù)據(jù),再以表格輸出。9、AI賦能:解鎖未來(1)學(xué)會(huì)用AI輔助,完成選擇題同時(shí)知道每個(gè)答案為什么對(duì),為什么錯(cuò),鞏固知識(shí)點(diǎn),掌握學(xué)習(xí)方法。(2)見教材P177,按步驟完成,培養(yǎng)創(chuàng)新思維。教學(xué)反思本章教學(xué)中,重點(diǎn)講解了結(jié)構(gòu)體、共用體和枚舉的定義與使用,通過實(shí)例讓學(xué)生掌握自定義類型的核心用法,但仍存在不足:對(duì)三者內(nèi)存布局差異的講解偏理論,學(xué)生對(duì)共用體的內(nèi)存共享特性理解模糊;枚舉的實(shí)際應(yīng)用場景舉例較少,學(xué)生難以靈活運(yùn)用。后續(xù)教學(xué)需增加內(nèi)存分析實(shí)操題,結(jié)合編程案例對(duì)比三者適用場景,強(qiáng)化學(xué)生對(duì)語法規(guī)則和使用邏輯的結(jié)合理解,同時(shí)通過課堂小練及時(shí)檢測掌握情況,針對(duì)性補(bǔ)漏。授課單元教案課程單元文件學(xué)時(shí)4章節(jié)第十章專題教學(xué)目標(biāo)設(shè)計(jì)1、文件概述2、文件的操作3、文件的檢測與隨機(jī)讀寫4、綜合應(yīng)用教學(xué)重點(diǎn)難點(diǎn)及處理重點(diǎn):1、文件的操作2、文件的檢測與隨機(jī)讀寫難點(diǎn):綜合應(yīng)用教學(xué)媒體和資源選擇硬件環(huán)境:連接到Internet的多媒體網(wǎng)絡(luò)教室(每人一機(jī)),大屏幕投影儀,聯(lián)網(wǎng)智能手機(jī),耳麥,音響設(shè)備,激光投影筆等。軟件資源:PPT課件、網(wǎng)絡(luò)教學(xué)軟件、VC++軟件、學(xué)習(xí)通手機(jī)APP、Zoomit板書演示輔助軟件等。作業(yè)1、課前:預(yù)習(xí)本章節(jié)學(xué)習(xí)內(nèi)容;2、實(shí)踐及課后:(1)完成課堂測驗(yàn)10與課后作業(yè)10(2)AI賦能,解鎖未來(3)雙向?qū)﹀e(cuò)演示視頻教學(xué)設(shè)計(jì)1、文件概述(1)文件類型文件:在本章所講的文件是由數(shù)字和文字組成的數(shù)據(jù)文件。按文件編碼方式分類:ASCII文件(也稱文本文件):ASCII文件在磁盤中存放時(shí),每個(gè)字符對(duì)應(yīng)一個(gè)字節(jié),用于存放對(duì)應(yīng)的ASCII碼。如:整型十進(jìn)制數(shù)12345,按ASCII文件存放則需要占用5個(gè)字節(jié)??稍谄聊簧巷@示,但占用空間較大,讀寫操作要轉(zhuǎn)換。二進(jìn)制文件:是對(duì)不同的數(shù)據(jù)類型,按其實(shí)際占用內(nèi)存字節(jié)數(shù)存放。即內(nèi)存的存儲(chǔ)形式,原樣輸出到磁盤上存放。如:整型十進(jìn)制數(shù)12345,按二進(jìn)制文件存放只需要2個(gè)字節(jié)。屏幕顯示為亂碼,但占用空間小,讀寫操作效率高。對(duì)文件的處理方式的不同:分為緩沖文件系統(tǒng)(又稱標(biāo)準(zhǔn)I/O)和非緩沖文件系統(tǒng)(又稱系統(tǒng)I/O)(2)文件指針要調(diào)用磁盤上的一個(gè)文件時(shí),必須知道與該文件有關(guān)的信息。比如文件名、文件的當(dāng)前讀寫位置、文件緩沖區(qū)大小與位置、文件的操作方式等。這些信息被C語言系統(tǒng)保存在一個(gè)稱作FILE的結(jié)構(gòu)體中,它在stdio.h頭文件中定義內(nèi)。FILE結(jié)構(gòu)體的內(nèi)容為(在使用文件操作時(shí),

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論