




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、模塊六模塊六 構造數據類型應用訓練構造數據類型應用訓練能力目標掌握結構體類型定義、變量的聲明及其引用;理解共用體類型的定義、變量的聲明及其引用;了解枚舉類型及其變量的定義和引用。知識準備知識準備 任務引例-輸入一條學生成績,并顯示。輸入一條學生成績,并顯示。include #define N 5float aver(int b,int n);void main() int i,a5; float ave; printf(請輸入5個整型數據:n); for(i=0;iN;i+) scanf(%d,&ai); ave=aver(a,N); printf(n平均值為:%4.2fn,ave);floa
2、t aver(int b,int n) int i; float s=0; for(i=0;in;i+) s+=bi; return s/n; 程程序序清清單單程序運行程序運行 請輸入學生姓名及三門課的成績:請輸入學生姓名及三門課的成績:楊甜楊甜 80 90 70 80 90 70學生:楊甜的三門課成績分別為:學生:楊甜的三門課成績分別為:80.00,90.00,70.0080.00,90.00,70.00程程序序清清單單#include struct birthday int year; int month; int day; ;struct exam char name30; char s
3、ex; int age; char addr40; int number; float score3; struct birthday birth; ;做中學做中學6-1 6-1 結構體變量的定義、引用和初始化。結構體變量的定義、引用和初始化。6.1 結構體類型及其變量程程序序清清單單void main( ) struct exam exame1=張申,M,23,山丹街1號,301,98,67,87,1982,9,3; struct exam exame2=李淼,F,24,小北街2號,304,82,89,97,1981,5,14; printf(%s %c %d ,,ex
4、ame1.sex,exame1.age); printf(%4d.%2d.%2d ,exame1.birth.year,exame1.birth.month,exame1.birth.day); printf(%s %d ,exame1.addr,exame1.number); printf(%3.0f %3.0f %3.0fn,exame1.score0,exame1.score1,exame1.score2); printf(%s %c %d ,,exame2.sex,exame2.age); printf(%4d.%2d.%2d ,exame2.birth.year
5、,exame2.birth.month,exame2.birth.day); printf(%s %d ,exame2.addr,exame2.number); printf(%3.0f %3.0f %3.0fn,exame2.score0,exame2.score1,exame2.score2);輸出結果輸出結果 張申 M 23 1982. 9. 3 山丹街1號 301 98 6 87李淼 F 24 1981. 5.14 小北街2號 304 82 89 97 張申 M 23 山丹街 1 號 301 98 67 87 1982 9 3 圖 6-1 exam1 的初始化 知識點結構體類型的定義
6、結構體類型的一般語法格式: struct 結構體類型名 類型名1 成員變量名1; 類型名2 成員變量名2; 類型名n 成員變量名n; ; 結構體變量的定義、引用和初始化v 結構體變量的定義 結構體變量的定義方法有3種:l 用已定義的結構體類型來定義結構體變量。如: struct exam exam1,exam2; 在這種結構體變量語法格式中,struct關鍵字和結構體名(如本例的exam)都不能省略。l 定義結構體類型的同時定義結構體變量。如: struct exam char name30; char sex; int age; char addr40; exam1,exam2; l 直接定
7、義結構體變量。例如: struct char name30; char sex; int age; char addr40; exam1,exam2; v 結構體變量的引用 引用結構體變量的一般格式為: 結構體變量.成員 exam1.age=18; strcpy(, 王帆); “.”是成員運算符,也稱為分量運算符,它的優先級在所有的運算符中最高,因此將作為一個整體等同于一個變量名來參與各種運算,其運算規則與同類型的變量相同。注 意 當使用上例中的birth成員時,需要用成員運算符逐級地找到最低一級的成員,如: exam1.birth.year=1983;
8、 寫成下面的格式是不對的: exam1.birth=1980,04,20;v 結構體變量的初始化 同其它類型的變量一樣,結構體變量的初始化可以在定義時完成。如果需要在程序中進行初始化,則需要逐個成員逐級對最低一級的成員賦初值。做中學做中學6-2 6-2 輸入輸入5 5個考生的姓名及考試成績,并統計各科的平均個考生的姓名及考試成績,并統計各科的平均 成績。成績。算法設計算法設計 每個考生的信息包括姓名以及多門課程考試成績,定義一個結構體類型stu包括字符數組name30和實型數組score3成員,N個考生的信息通過已定義的結構體類型stu數組stu1N來實現。將每個考生的對應成績相加后求平均成績
9、,即為各科的平均成績。6.2 結構體數組 將若干個相同結構體類型的數據組合在一起構成的集合,就成為結構體數組。結構體數組與一般數組不同的是,每個數組元素都是結構體類型的數據。程程序序清清單單#include #define N 5struct stu char name30; float score3;stu1N;void main( ) int i,j; float aver3=0; printf(請輸入考生姓名及三門課的成績:n); for (i=0;iN;i+) printf(第%d名學生:,i+1); scanf(%s %f,,&stu1i.score0); sca
10、nf( %f %f,&stu1i.score1,&stu1i.score2); 程程序序清清單單for (i=0;i3;i+) /*計算每科的總成績*/ for (j=0;jN;j+) averi=averi+stu1j.scorei; printf(平均成績:n第一科:%3.1f ,aver0/N); printf(第二科:%3.1f 第三科:%3.1fn,aver1/N,aver2/N);程序運行程序運行 請輸入考生姓名及三門課的成績:請輸入考生姓名及三門課的成績:第第1 1名學生:名學生:mark 60 70 80 mark 60 70 80 第第2 2名學生:名學生:sumnsumn
11、75 85 95 75 85 95第第3 3名學生:名學生:yang 85 95 65yang 85 95 65第第4 4名學生:名學生:ningning 45 78 96 45 78 96第第5 5名學生:名學生:chenchen 87 67 92 87 67 92平均成績:平均成績:第一科:第一科:70.4 70.4 第二科:第二科:79.0 79.0 第三科:第三科:85.685.6知識點結構體數組的定義和初始化 定義結構體數組與定義結構體變量一樣,可以在定義結構體類型的同時定義,也可以在定義結構體類型之后定義,也可以直接定義。如:struct stu char name30; char
12、 sex2; int age; char addr40; int number; float score;stu12=“張文”,“男”,21,“上海路2#”,301,80,“賈麗”,“女”,18,“建設路123#”,302,92; 知識點結構體數組的成員變量v 同一般數組一樣,結構體數組的引用也是通過數組名和下標來引用的。v 其引用格式為: 數組名下標.成員變量名做中學做中學6-3 6-3 共用體類型變量的定義及使用。共用體類型變量的定義及使用。6.3 共用體類型變量#include #include union un /*定義共用體類型*/ int b23; char c21; double
13、 d;void main( ) union un u; /*定義共用體變量*/ int i,j,k; strcpy(u.c,歡迎使用共用體變量!); /*共用體變量成員賦值*/ printf(%sn,u.c); k=0; for (i=0;i2;i+)程程序序清清單單 k=0; for (i=0;i2;i+) for (j=0;j3;j+) k+; u.bij=k; /*共用體變量成員賦值*/ for (i=0;i2;i+) for (j=0;j3;j+) printf(%2d ,u.bij); printf(n); u.d=9.1256; /*共用體變量成員賦值*/ printf(%6.3f
14、n,u.d);程程序序清清單單輸出結果輸出結果 歡迎使用共用體變量1 2 34 5 69.126知識點共用體類型及共用體變量的定義v 共用體類型的語法格式與結構體定義相同,如下: union共用體名 類型名1 成員名1; 類型名2 成員名2; 類型名n 成員名n; ;v union為定義共用體的關鍵字,共用體名的命名應該符合C語言中標識符的命名規則。如: union stu char name8; float spend; int class; ; 定義了一個stu類型的共用體,它包含有name、spend和class 3個成員。這3個成員在內存中的存儲如上圖所示(若為VC+環境,整型為4B)
15、。 stu類型的變量共占8B,共用體變量所占存儲空間字節數為占用空間最多的那個成員占用空間的字節數,所有成員共享空間。共用體變量的引用v 同定義結構體類型的變量一樣,不能整體引用共用體變量來進行輸入和輸出,只能引用共用體變量的成員。v 如果共用體的成員為構造類型,那么就需要逐級引用,直至最低一級的成員為止。注 意 共用體變量的各個成員共同使用同一段內存空間。邊學邊練邊學邊練設計一個程序,對某個學校或某系的學生信息進行輸入、顯示和修改處理。拓展提升拓展提升6.4 枚舉類型 6.4.1 枚舉類型的定義v 定義枚舉類型的一般格式為: enum 枚舉類型名 枚舉元素1,枚舉元素2,枚舉元素n;v C語
16、言將枚舉元素作為整型常量處理 如:enum weekSun=7,Mon=1,Tue,Wed,Thu,Fri,Sat; C語言將第一個枚舉元素的值指定為7,第二個元素的值指定為1,對于后面沒有指定值的枚舉元素,自動按照前一個元素的值加1的原則定義它的值,即Tue=2,Wed=3,Thu=4,Fri=5,Sat=6。各個枚舉元素為常量,程序中不能對枚舉元素賦值。如語句Sat=4;是不對的。 6.4.2 枚舉類型變量v 枚舉變量的定義l 定義枚舉類型之后定義枚舉變量: enum weekSun=7,Mon=1,Tue,Wed,Thu,Fri,Sat; enum week day1,day231;l
17、在定義枚舉類型的同時定義枚舉變量: enum weekSun=7,Mon=1,Tue,Wed,Thu,Fri,Satday1,day231;l 直接定義枚舉變量; enum Sun=7,Mon=1,Tue,Wed,Thu,Fri,Satday1,day231;枚舉類型變量的定義和引用v 枚舉類型變量的引用 枚舉變量的引用方法同普通類型的變量一樣。但是枚舉變量的取值只能在該枚舉類型定義的取值范圍內。做中學做中學6-4 6-4 輸出一個星期的英文名稱。輸出一個星期的英文名稱。#include enum weekSun=7,Mon=1,Tue,Wed,Thu,Fri,Sat; /*定義枚舉類型*/v
18、oid main( )enum week day; /*定義枚舉類型變量*/int i=2;char* name=Monday,Tuesday,Wednesday,Thursday,Friday,Satday,Sunday;for (day=Mon;day=Sun;day=(enum week)i+) /*用枚舉類型變量控制循環輸出*/printf(%2d: %sn,day,nameday-1); 程程序序清清單單輸出結果輸出結果 1: Monday 2: Tuesday 3: Wednesday 4: Thursday 5: Friday 6: Satday 7: Sunday6.5 自定義數據類型 簡單的名字替換v 例如:typedef int INTEGER;v 功能:是將int型定義為INTEGER,這二者等價,在程序中就可以用INTEGER作為類型名
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東省臨沂市河東區、費縣2024-2025學年高二下學期期中聯考歷史試題(含答案)
- 關于農作物種子繁育的常識及試題及答案
- 2024年裁判員考試交流平臺試題及答案
- 模具設計師資格認證之復習計劃與試題答案
- 2024年籃球裁判員考試流程介紹試題及答案
- 預算管理相關內容試題及答案
- 2025年天津市公務員考試省考行測B類歷年真題試卷試題答案解析
- 農業植保員在社會服務中的角色與貢獻試題及答案
- 條理分明游泳救生員職業試題及答案
- 模具設計項目中的溝通技巧試題及答案
- 比例尺單元測試卷及答案
- 工程造價咨詢服務投標方案(專家團隊版-)
- 2024年廣東省中考生物+地理試卷(含答案)
- AVL-CRUISE-2019-整車經濟性動力性分析操作指導書
- 《新概念英語》第三冊課文詳解及課后答案
- 全尺寸測量報告FAI
- 05S502閥門井圖集
- 光電子學(第三章2)
- 【課件】第9課 美在民間——中國民間美術——剪紙課件-高中美術人教版(2019)美術鑒賞
- 幼兒園幼兒花名冊
- 動畫設計3ds max基礎—4-1-7創建復合對象—布爾教案
評論
0/150
提交評論