C語言程序設(shè)計 教案 8-1結(jié)構(gòu)體_第1頁
C語言程序設(shè)計 教案 8-1結(jié)構(gòu)體_第2頁
C語言程序設(shè)計 教案 8-1結(jié)構(gòu)體_第3頁
C語言程序設(shè)計 教案 8-1結(jié)構(gòu)體_第4頁
C語言程序設(shè)計 教案 8-1結(jié)構(gòu)體_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《C語言程序設(shè)計》教案課程名稱C語言程序設(shè)計任課教師總課時64教學(xué)課題用結(jié)構(gòu)體實現(xiàn)數(shù)據(jù)的增加、刪除、修改和顯示授課班級授課日期課時2教學(xué)目標(biāo)知識目標(biāo):掌握結(jié)構(gòu)體的使用方法能力目標(biāo):能夠能夠使用結(jié)構(gòu)體實現(xiàn)項目素質(zhì)目標(biāo):團隊合作能力、團隊互助,自我學(xué)習(xí)的習(xí)慣、愛好和能力重點難點結(jié)構(gòu)體的使用教學(xué)方法演示、講解、啟發(fā)教學(xué)資源教材《C語言程序設(shè)計》設(shè)備準(zhǔn)備VC++6.0,極域電子教室軟件,分發(fā)工作任務(wù)單教學(xué)環(huán)節(jié)(教學(xué)過程)教學(xué)內(nèi)容教師活動學(xué)生活動教學(xué)目標(biāo)課時1發(fā)布任務(wù)進行任務(wù)的問題描述和分析傾聽、思考讓學(xué)生理解任務(wù)要求和思路10分鐘2理論講解講授函數(shù)調(diào)用傾聽、思考預(yù)備需要的理論知識15分鐘3舉例通過一個案例進一步講解函數(shù)的調(diào)用傾聽、思考通過實際應(yīng)用幫助學(xué)生理解理論知識20分鐘4應(yīng)用布置兩個相關(guān)題目思考、解答通過做相關(guān)練習(xí)題幫助學(xué)生更好的理解相關(guān)知識45分鐘教學(xué)內(nèi)容(詳細):一.結(jié)構(gòu)體概述結(jié)構(gòu)體是一種構(gòu)造類型,它是由若干成員組成,每個成員可以具有不同的數(shù)據(jù)類型。所以說,結(jié)構(gòu)體是若干個類型相同或不同數(shù)據(jù)項的集合。例如,學(xué)生的基本信息包含以下數(shù)據(jù)項:學(xué)號(no)、姓名(name)、數(shù)學(xué)(math)、語文(yw)、英語(eng)和總分(sum)。那么這個類型就應(yīng)該如圖8-1所示。結(jié)構(gòu)體類型結(jié)構(gòu)體類型,是將該結(jié)構(gòu)體的所有成員的類型說明按約定的方法結(jié)合在一起,結(jié)構(gòu)體的各個元素(常稱之為成員)可以是不同的數(shù)據(jù)類型。1.結(jié)構(gòu)體類型的形式定義結(jié)構(gòu)體類型的一般形式為:struct結(jié)構(gòu)類型名{類型名成員名1;類型名成員名2;…類型名成員名n;};例如:structStudent{char*name;//姓名intnum;//學(xué)號floatmath;//數(shù)學(xué)floatyw;//語文floateng;//英語說明};說明(1)成員聲明語法同變量,示例:數(shù)據(jù)類型成員名;(2)字段的類型可以為:基本類型、數(shù)組或指針、結(jié)構(gòu)體等2.結(jié)構(gòu)體變量的定義結(jié)構(gòu)體類型定義后,就可以用它來定義相應(yīng)的結(jié)構(gòu)體變量。定義結(jié)構(gòu)體類型變量有以下兩種方法:(1)間接定義法先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體變量.struct結(jié)構(gòu)類型名{成員列表;};結(jié)構(gòu)體變量的定義:struct結(jié)構(gòu)類型名變量名;例如,使用8.1.1定義的結(jié)構(gòu)體類型student來定義學(xué)生結(jié)構(gòu)體變量,語句: structstudentstu1; structstudentstu2;(2)直接定義法在定義結(jié)構(gòu)體類型的同時定義變量。定義的一般形式為:struct[結(jié)構(gòu)類型名] /*結(jié)構(gòu)類型名可缺省*/{類型名成員名1;類型名成員名2;…類型名成員名n;}變量名表;例如:structStudent{char*name;//姓名intnum;//學(xué)號floatmath;//數(shù)學(xué)floatyw;//語文floateng;//英語}stu1,stu2;3.結(jié)構(gòu)體變量的引用(1)簡單結(jié)構(gòu)變量的引用結(jié)構(gòu)體變量的使用是通過對其每個成員的引用來實現(xiàn)的,一般形式如下: 結(jié)構(gòu)體變量名.成員名其中,“.”是結(jié)構(gòu)體的成員運算符,它在所有運算符中優(yōu)先級最高,因此,上述引用結(jié)構(gòu)體成員的寫法可以作為一個整體看待。結(jié)構(gòu)體變量中的每個成員都可以象同類型的普通變量一樣進行各種運算。同類型結(jié)構(gòu)變量間的引用ANSIC新標(biāo)準(zhǔn)允許將一個結(jié)構(gòu)類型的變量,作為一個整體賦給另一個具有相同結(jié)構(gòu)類型的變量。如有定義:structstudentstud1,stud2;4.結(jié)構(gòu)體變量的初始化在定義結(jié)構(gòu)變量的同時,允許對結(jié)構(gòu)變量初始化,但要注意結(jié)構(gòu)成員的數(shù)據(jù)類型與初值一致。例如:structCStudent{ longno;/*學(xué)號*/ charname[16];/*姓名*/ intage; /*年齡*/ intscore;/*成績*/}stu={2013001,"ZhanSan",17,80};三.結(jié)構(gòu)體數(shù)組1.結(jié)構(gòu)體數(shù)組的定義結(jié)構(gòu)體數(shù)組的定義與結(jié)構(gòu)體變量類似,只是結(jié)構(gòu)體變量替換成數(shù)組。定義結(jié)構(gòu)體數(shù)組的一般形式如下:struct結(jié)構(gòu)體名{成員列表;}數(shù)組名[元素個數(shù)];或:struct結(jié)構(gòu)體名數(shù)組名[元素個數(shù)];2.結(jié)構(gòu)體數(shù)組的引用結(jié)構(gòu)體數(shù)組元素也是通過數(shù)組名和下標(biāo)來引用的,但其元素是結(jié)構(gòu)體類型的數(shù)據(jù),因此,對結(jié)構(gòu)體數(shù)組元素的引用與對結(jié)構(gòu)體變量的引用一樣,也是逐級引用,只能對最低級的成員進行存取和運算。結(jié)構(gòu)體數(shù)組的引用的一般形式為: 數(shù)組名[下標(biāo)].成員名3.結(jié)構(gòu)體數(shù)組的初始化結(jié)構(gòu)數(shù)組也可以在定義時進行初始化,其方法是在定義結(jié)構(gòu)數(shù)組的之后緊跟等號和初始化數(shù)據(jù)。 其一般形式是:struct結(jié)構(gòu)體類型結(jié)構(gòu)數(shù)組名[n]={{初值表1},{初值表2},…,{初值表n}};四.結(jié)構(gòu)體和函數(shù)參數(shù)的傳遞1.結(jié)構(gòu)體變量作為函數(shù)參數(shù)結(jié)構(gòu)體變量作為一個整體可以傳遞給函數(shù)以及由函數(shù)返回,作為函數(shù)參數(shù)時形參實參都應(yīng)是結(jié)構(gòu)體類型,返回值為結(jié)構(gòu)體類型時,函數(shù)應(yīng)定義為結(jié)構(gòu)體類型,聲明方式如下:struct結(jié)構(gòu)體類型函數(shù)名(結(jié)構(gòu)體類型參數(shù),結(jié)構(gòu)體類型參數(shù)2);如無返回值則函數(shù)定義為void類型。算法設(shè)計【例8-3】修改例8-1,要求在函數(shù)中實現(xiàn)計算、比較平均分并且顯示平均分數(shù)較高的學(xué)生信息的功能。算法設(shè)計(1)定義外部結(jié)構(gòu)體類型;(2)聲明用戶自定義函數(shù);程序代碼(3)在主函數(shù)中輸入數(shù)據(jù)并且調(diào)用函數(shù)。程序代碼#include"stdio.h"structstudent{charcName[8];intiMiddle,iFinal;floatfAve;};/*由于在多個函數(shù)中應(yīng)用,所以結(jié)構(gòu)體類型定義為外部*/voidfnBest(structstudentstS1,structstudentstS2);/*顯示平均分較高學(xué)生信息的函數(shù)*/voidfnBest(structstudentstS1,structstudentstS2){stS1.fAve=(stS1.iMiddle+stS1.iFinal)/2.0;stS2.fAve=(stS2.iMiddle+stS2.iFinal)/2.0;if(stS1.fAve>stS2.fAve)printf("%s:%d%d%0.1f",stS1.cName,stS1.iMiddle,stS1.iFinal,stS1.fAve);elseprintf("%s:%d%d%0.1f",stS2.cName,stS2.iMiddle,stS2.iFinal,stS2.fAve);}voidmain(){structstudentstA,stB;scanf("%s%d%d",stA.cName,&stA.iMiddle,&stA.iFinal);scanf("%s%d%d",stB.cName,&stB.iMiddle,&stB.iFinal);fnBest(stA,stB);/*以結(jié)構(gòu)體變量為實參調(diào)用函數(shù)*/getch();}2.結(jié)構(gòu)體數(shù)組作為函數(shù)參數(shù)結(jié)構(gòu)數(shù)組作為函數(shù)參數(shù),與數(shù)組作為函數(shù)參數(shù)的處理方式完全相同。即采用“地址傳遞”方式,形參結(jié)構(gòu)變量中各成員值的改變,對相應(yīng)實參結(jié)構(gòu)變量產(chǎn)生影響。算法設(shè)計【例8-4】修改例8-2,在函數(shù)中將N個學(xué)生的數(shù)據(jù)輸入并統(tǒng)計總分和求出最高分的學(xué)生并顯示。算法設(shè)計(1)定義全局結(jié)構(gòu)體類型structstudent;(2)聲明用戶函數(shù)fnInput和fnDisp;(3)編寫fnInput程序?qū)崿F(xiàn)輸入N個學(xué)生信息并計算總分;(4)編寫函數(shù)fnDisp求N個學(xué)生中總分最高的并且顯示;(5)編寫主函數(shù)定義結(jié)構(gòu)體類型數(shù)組,調(diào)用函數(shù)實現(xiàn)輸入題目要求。程序代碼程序代碼#include"stdio.h"#include"stdio.h"#defineN3/*表示學(xué)生人數(shù)*/structstudent{charcNo[15];/*存放學(xué)號*/charcName[15];/*存放姓名*/intiChinese,iMath,iEnglish;/*存放語文、數(shù)學(xué)、英語成績*/intiTotal;/*存放總分*/};voidfnInput(structstudentstStud[],intn);/*輸入學(xué)生信息并計算總分*/voidfnDisp(structstudentstStud[],intn);/*求總分最高的學(xué)生并顯示其信息*/voidfnInput(structstudentstStud[],intn)/*輸入學(xué)生信息并計算總分*/{inti;printf("pleaseinputthreestudents'information\n");for(i=0;i<n;i++){scanf("%s%s%d%d%d",stStud[i].cNo,stStud[i].cName,&stStud[i].iChinese,&stStud[i].iMath,&stStud[i].iEnglish);stStud[i].iTotal=stStud[i].iChinese+stStud[i].iMath+stStud[i].iEnglish;}}voidfnDisp(structstudentstStud[],intn)/*求總分最高的學(xué)生并顯示其信息*/{inti=0,iMax=0;for(i=1;i<n;i++)if(stStud[i].iTotal>stStud[iMax].iTotal)iMax=i;printf("\nThebeststudent'sinformation:\n");printf("%s,%s,%d,%d,%d,%d",stStud[iMax].cNo,stStud[iMax].cName,stStud[iMax].iChinese,stStud[iMax].iMath,stStud[iMax].iEnglish,stStud[iMax].iTotal);}voidmain(){structstudentstPerson[N];/*定義結(jié)構(gòu)體數(shù)組*/fnInput(stPerson,N);/*調(diào)用函數(shù),循環(huán)輸入N個學(xué)生的信息并且計算其總分*/fnDisp(stPerson,N);/*調(diào)用函數(shù),求出總分最高的學(xué)生的下標(biāo)并顯示*/getch();}3.函數(shù)的返回值是結(jié)構(gòu)體類型變量結(jié)構(gòu)體變量也可以作為函數(shù)的返回值,這時在函數(shù)定義時,需要說明返回值的類型為相應(yīng)的結(jié)構(gòu)類型。如:struct

溫馨提示

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

評論

0/150

提交評論