版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PAGE課題任務(wù)8.1一輛汽車的數(shù)據(jù)顯示(結(jié)構(gòu)體變量)課型講練授課班級授課時數(shù)2教學(xué)目標(biāo)1.熟悉結(jié)構(gòu)體變量定義2.能根據(jù)程序要求靈活應(yīng)用結(jié)構(gòu)體變量教學(xué)重點能根據(jù)程序要求靈活應(yīng)用結(jié)構(gòu)體變量教學(xué)難點能根據(jù)程序要求靈活應(yīng)用結(jié)構(gòu)體變量學(xué)情分析學(xué)生已經(jīng)有了整型、字符型、數(shù)組類型得基礎(chǔ)。教學(xué)效果教后記項目八汽車數(shù)據(jù)顯示(結(jié)構(gòu)體)學(xué)習(xí)目標(biāo)知識目標(biāo)理解結(jié)構(gòu)體的定義。理解結(jié)構(gòu)體變量的定義、引用、初始化。理解結(jié)構(gòu)體數(shù)組的定義、引用、初始化。理解指向結(jié)構(gòu)體變量的指針、結(jié)構(gòu)體數(shù)組的指針的使用。能力目標(biāo)能靈活運用結(jié)構(gòu)體類型。能靈活運用結(jié)構(gòu)體變量解決實際問題。能靈活運用結(jié)構(gòu)體數(shù)組解決實際問題。任務(wù)8.1一輛汽車的數(shù)據(jù)顯示(結(jié)構(gòu)體變量)圖8-1程序運行結(jié)果8.1.1圖8-1程序運行結(jié)果。程序運行結(jié)果如8-1所示。8.1.2知識儲備通過前文,我們學(xué)習(xí)了變量,數(shù)組,字符串等類型,但是我們不能利用這幾個類型解決所有的問題。當(dāng)我們遇到的數(shù)據(jù)需要包含多種不同的類型時,如包含整型、實型、字符型等,C語言中允許用戶建立由不同類型數(shù)據(jù)組成的組合型的數(shù)據(jù)結(jié)構(gòu),它被稱為“結(jié)構(gòu)體”。一、結(jié)構(gòu)體類型的定義結(jié)構(gòu)體是一種數(shù)據(jù)類型,它將互相聯(lián)系的不同類型的數(shù)據(jù)組合成了一個整體。定義結(jié)構(gòu)體的語法格式為:struct結(jié)構(gòu)體類型名{數(shù)據(jù)類型成員名1;數(shù)據(jù)類型成員名2;…數(shù)據(jù)類型成員n;};結(jié)構(gòu)體類型和基本類型的區(qū)別如下。(1)結(jié)構(gòu)體類型定義中的每一個成員項,表示該結(jié)構(gòu)體的分量(又被稱為“域”)。(2)基本數(shù)據(jù)類型(如double、int、char等)是一個具體的數(shù)據(jù)類型,一旦定義后,說明的變量就分配了固定的字節(jié),按指定的形式存放。而“結(jié)構(gòu)體類型”只是一個抽象的數(shù)據(jù)類型,它只表示“由若干個不同數(shù)據(jù)類型數(shù)據(jù)項組成的復(fù)合類型”,并且由哪些成員項組成,占多少字節(jié)等信息。(3)與基本數(shù)據(jù)類型不同,系統(tǒng)沒有預(yù)先定義結(jié)構(gòu)體類型,凡是需要使用結(jié)構(gòu)體類型數(shù)據(jù)的,都必須在程序中先定義后使用。示例1:定義一個結(jié)構(gòu)體類型為birthday,成員包含年、月、日。structbirthday{intyear;intmonth;intday;};示例2:定義一個結(jié)構(gòu)體為student,成員包含學(xué)號,姓名,性別,年齡,家庭住址,身高,體重。structstudent{intstuId;intname;charsex(3);intage;charaddress(30);doublehight;doubleweight;};示例3:定義一個結(jié)構(gòu)體為student,成員包含學(xué)號、姓名、性別、出生年月(結(jié)構(gòu)體包含年、月、日)、家庭住址。structbirthday{intyear;intmonth;intday;};structstudent{intstuId;intname;charsex(3);structbirthdaybir;charaddress(30);};二、結(jié)構(gòu)體類型變量的定義定義結(jié)構(gòu)體類型主要有以下的3種方法。方法一:先進(jìn)行結(jié)構(gòu)體類型的定義,再進(jìn)行結(jié)構(gòu)體變量的定義。示例4:定義兩個學(xué)生的結(jié)構(gòu)體變量。structstudent{intstuId;charname[9];charsex[3];intage;charaddress[30];doublehight;doubleweight;};studentstu1,stu2;方法二:在定義結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體變量。其語法格式為:truct結(jié)構(gòu)體類型名{數(shù)據(jù)類型成員名1;數(shù)據(jù)類型成員名2;…數(shù)據(jù)類型成員名n;}結(jié)構(gòu)體變量名表;示例5:定義兩個學(xué)生的結(jié)構(gòu)體變量。structstudent{intstuId;charname[9];charsex[3];intage;charaddress[30];doublehight;doubleweight;}stu1,stu2;方法三:直接定義結(jié)構(gòu)體類型變量。其語法格式為:struct{數(shù)據(jù)類型成員名1;數(shù)據(jù)類型成員名2;…數(shù)據(jù)類型成員名n;}結(jié)構(gòu)體變量名表示例6:定義兩個學(xué)生的結(jié)構(gòu)體變量。struct{intstuId;charname[8];charsex[3];intage;charaddress[30];doublehight;doubleweight;}stu1,stu2;注意:方法三與方法二相比較,只是省略了結(jié)構(gòu)體類型名student,因此就不能再定義其他變量的類型。三、結(jié)構(gòu)體類型變量的初始化方法一:structbirthday{intyear;intmonth;intday;};structstu1={1990,12,5};方法二:structbirthday{intyear;intmonth;intday;}stu1={1990,12,5};四、結(jié)構(gòu)體類型變量的引用給結(jié)構(gòu)體賦值有以下3種方法。方法一:當(dāng)定義結(jié)構(gòu)體時,直接賦值。#include"stdio.h"structbirthday{intyear;intmonth;intday;}stu1={2019,11,20};voidmain(){printf("出生年為%d,月為%d,日為%d",stu1.year,stu1.month,stu1.day);}方法二:先定義結(jié)構(gòu)體,再賦值。#include"stdio.h"structbirthday{intyear;intmonth;intday;};voidmain(){structbirthdaystu1={2019,11,20};printf("出生年為%d,月為%d,日為%d",stu1.year,stu1.month,stu1.day);}方法三:從鍵盤上輸入值。#include"stdio.h"structbirthday{intyear;intmonth;intday;};voidmain(){structbirthdaystu1;printf("請輸入出生的年");scanf("%d",&stu1.year);printf("請輸入出生的月");scanf("%d",&stu1.month);printf("請輸入出生的日");scanf("%d",&stu1.day);printf("出生年為%d,月為%d,日為%d",stu1.year,stu1.month,stu1.day);}方法三運行結(jié)果如圖8-2所示。圖8-2賦值方法三運行截圖注意:(1)不能將一個結(jié)構(gòu)體作為一個整體進(jìn)行輸入和輸出。(2)如果成員本身又屬于一個結(jié)構(gòu)體類型,則要用若干個成員運算符。8.1.3典型案例典型案例1:定義一個結(jié)構(gòu)體,名稱為發(fā)動機(jī)(DATA_ENGINE),包含3個成員,發(fā)動機(jī)狀態(tài)(Engine_Status)=0、曲軸轉(zhuǎn)速(Crankshaft_Speed)=1500r/min、燃料消耗率(Fuel_Consumption_Rate)=10L,輸出發(fā)動機(jī)的各項數(shù)據(jù)。代碼如下:#include"stdio.h"structDATA_ENGINE{charEngine_Status;intCrankshaft_Speed;doubleFuel_Consumption_Rate;};voidmain(){structDATA_ENGINEDATA_ENGINE01={'0',1500,10.5};printf("發(fā)動機(jī)的狀態(tài)為\n");printf("狀態(tài)%c,曲軸轉(zhuǎn)速%d,燃料消耗率%lf",DATA_ENGINE01.Engine_Status,DATA_ENGINE01.Crankshaft_Speed,DATA_ENGINE01.Fuel_Consumption_Rate);}典型案例1的運行結(jié)果如圖8-3所示。典型案例2:定義一個結(jié)構(gòu)體,名稱為車輛位置(Data_Location),包含3個成員,定位狀態(tài)(GPS_Status)、經(jīng)度(Longitude)、緯度(Latitude)。從鍵盤上輸入車輛位置的信息,并輸出。代碼如下:#include"stdio.h"structData_Location{charGPS_Status;intLongitude;intLatitude;};voidmain(){structData_LocationData_Location1={'0',150,52};printf("車輛位置為%c,經(jīng)度為%d,緯度為%d",Data_Location1.GPS_Status,Data_Location1.Longitude,Data_Location1.Latitude);}典型案例2的運行結(jié)果如圖8-4所示。 圖8-3典型案例1的運行結(jié)果 圖8-4典型案例2的運行結(jié)果8.1.4任務(wù)分析與實踐算法分析如下。(1)分析定義一個結(jié)構(gòu)體(Truct),包含了個成員車牌號(Plate_Number)、車輛識別碼(VIN)、載重噸數(shù)(Load)。(2)定義結(jié)構(gòu)體變量。(3)分別輸入成員信息。(4)輸出卡車信息。代碼如下:#include"stdio.h"structTruct{charPlate_Number[12];charVIN[18];intLoad;};#include"stdio.h"voidmain(){structTructinfo;printf("請輸入貨車的信息\n");printf("車牌號");scanf("%s",info.Plate_Number);printf("車輛識別碼");scanf("%s",info.VIN);printf("載重噸數(shù)");scanf("%d",&info.Load);printf("貨車的信息為\n");printf("車牌號%s\n",info.Plate_Number);printf("車輛識別碼%s\n",info.VIN);printf("載重噸數(shù)%d\n",info.Load);}8.1.5鞏固練習(xí)一、選擇題1.下面結(jié)構(gòu)體變量名定義正確的是()。A._ab1 B.1ab C.1_as D.*44ss2.下列說法正確的是()。structbirthday{intyear;intmonth;intday;};A.structbirthday是新創(chuàng)建的結(jié)構(gòu)體類型,但它不是類型名。B.bitthday是結(jié)構(gòu)體變量名。C.year、month、day都是成員名,它們的成員類型都是int類型。D.結(jié)構(gòu)體名和成員名的命名規(guī)則不一定遵循C語言標(biāo)識符的命名規(guī)則。3.以下下畫線正確的語句是()。structstudent{intnumber;charname[9];charsex[3];inthight;intweight;structbirthdaydate_of_birth;charphone[12];charaddress[30];}________;A.stu1 B.stu C.stu3 D.stu1,stu2,stu34.以下下畫線正確的語句是()。________birthday{intyear;intmonth;intday;};A.struct B.strucv C.strcde D.stract5.下列說法錯誤的是()。structstudent{intnum;charname[20];intscore;};A.struct為結(jié)構(gòu)體關(guān)鍵字 B.student就是結(jié)構(gòu)體的類型名C.num、name、score就是結(jié)構(gòu)體的成員,它們不能是不同類型D.struct、student都為結(jié)構(gòu)體關(guān)鍵字6.下列語句正確的是()。A.printf("%d,%d\n",A);B.scanf("%d,%d\n",&A);C..printf("%d,%d\n",A.num,A.score);D.scanf("%d,%d\n",Lucy.num,&Lucy.sex);7.在定義完結(jié)構(gòu)體后需添加()。A.; B." C."" D.}二、編程題1.定義一個結(jié)構(gòu)體,成員包含職工號、姓名、性別、年齡、工資、地址。按結(jié)構(gòu)體類型輸入一個職工的信息并輸出。2.定義一個結(jié)構(gòu)體類型來表示日期,日期包含年、月、日。將該結(jié)構(gòu)體添加到上一題所定義的結(jié)構(gòu)體中,輸入一個職工的信息并輸出。課題任務(wù)8.2多輛汽車的數(shù)據(jù)顯示(結(jié)構(gòu)體數(shù)組)課型講練授課班級授課時數(shù)2教學(xué)目標(biāo)1.掌握結(jié)構(gòu)體數(shù)組定義2.靈活應(yīng)用結(jié)構(gòu)體數(shù)組教學(xué)重點靈活應(yīng)用結(jié)構(gòu)體數(shù)組教學(xué)難點靈活應(yīng)用結(jié)構(gòu)體數(shù)組學(xué)情分析學(xué)生已經(jīng)有了數(shù)組得基礎(chǔ),也已經(jīng)學(xué)過結(jié)構(gòu)體變量。教學(xué)效果教后記任務(wù)8.2多輛汽車的數(shù)據(jù)顯示(結(jié)構(gòu)體數(shù)組)8.2.1任務(wù)目標(biāo)從鍵盤上輸入3輛貨車的信息,包含車牌號、車輛識別碼、載重噸數(shù),并輸出。程序運行結(jié)果如圖8-5所示。圖8-5程序運行結(jié)果8.2.2知識儲備當(dāng)需要的同類型的結(jié)構(gòu)體變量超過2個及以上時,C語言可以與引入數(shù)組類似,此時引入的就是結(jié)構(gòu)體數(shù)組。結(jié)構(gòu)體數(shù)組在實際定義時,可以采用以下3種方法。方法一:先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體數(shù)組。其語法格式為:struct結(jié)構(gòu)體名{成員類型成員名1;成員類型成員名2;成員類型成員名3;…成員類型成員名n;};struct結(jié)構(gòu)體名數(shù)組[容量];例如:structstudent{intnumber;charname[9];charsex[3];};structstudentstu[5]; //定義結(jié)構(gòu)體數(shù)組方法二:定義結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體數(shù)組。例如:structstudent{intnumber;charname[9];charsex[3];}stu[10];方法三:定義無名結(jié)構(gòu)體類型的同時定義結(jié)構(gòu)體數(shù)組。例如:struct{intnumber;charname[9];charsex[3];inthight;intweight;structbirthdaydate_of_birth;charphone[12];charaddress[30];}stu[10];結(jié)構(gòu)體數(shù)組中各元素在內(nèi)存中也是連續(xù)存放的,如圖8-6所示。圖8-6結(jié)構(gòu)體數(shù)組各元素在內(nèi)存中的存儲情況8.2.3典型案例典型案例1:定義一個結(jié)構(gòu)體,名稱為發(fā)動機(jī)(DATA_ENGINE),包含3個成員,發(fā)動機(jī)狀態(tài)(Engine_Status)=0、曲軸轉(zhuǎn)速(Crankshaft_Speed)=1500r/min、燃料消耗率(Fuel_Consumption_Rate)=10L,輸出3輛汽車發(fā)動機(jī)的各項數(shù)據(jù)。代碼如下:#include"stdio.h"structDATA_ENGINE{charEngine_Status;intCrankshaft_Speed;doubleFuel_Consumption_Rate;}DATA_ENGINE[3];voidmain(){structDATA_ENGINEDATA_ENGINE[3]={{'0',1500,150},{'1',1800,200},{'2',1200,225}};inti;for(i=0;i<3;i++)printf("發(fā)動機(jī)狀態(tài)為%c\n曲軸轉(zhuǎn)速為%d,燃料消耗率為%lf\n",DATA_ENGINE[i].Engine_Status,DATA_ENGINE[i].Crankshaft_Speed,DATA_ENGINE[i].Fuel_Consumption_Rate);}典型案例1的運行結(jié)果如圖8-7所示。典型案例2:定義一個結(jié)構(gòu)體,名稱為車輛位置(Data_Location),包含3個成員,定位狀態(tài)(GPS_Status)、經(jīng)度(Longitude)、緯度(Latitude)、從鍵盤上輸入三輛汽車位置的信息,并輸出。代碼如下:#include"stdio.h"structData_Location{charGPS_Status;intLongitude;intLatitude;}Data_Location[3];voidmain(){structData_LocationData_Location[3];inti;for(i=0;i<3;i++){printf("請輸入車輛狀態(tài)、經(jīng)度、緯度信息\n");scanf("%c,%d,%d",&Data_Location[i].GPS_Status,&Data_Location[i].Longitude,&Data_Location[i].Latitude);}for(i=0;i<3;i++)printf("車輛狀態(tài)為%c,經(jīng)度%d,緯度%d\n",Data_Location[i].GPS_Status,Data_Location[i].Longitude,Data_Location[i].Latitude);}典型案例2的運行結(jié)果為8-8所示。 圖8-7典型案例1的運行結(jié)果 圖8-8典型案例2的運行結(jié)果8.2.4任務(wù)目標(biāo)與實現(xiàn)代碼如下:#include"stdio.h"structTruct{charPlate_Number[12];charVIN[18];intLoad;}Truct[3];voidmain(){structTructTruct[3];inti;printf("請輸入貨車的信息\n");for(i=0;i<3;i++){printf("第%d輛貨車的信息\n",i+1);printf("車牌號");scanf("%s",Truct[i].Plate_Number);printf("車輛識別碼");scanf("%s",Truct[i].VIN);printf("載重噸數(shù)");scanf("%d",&Truct[i].Load);}printf("貨車的信息為\n");for(i=0;i<3;i++){printf("車牌號%s\n",Truct[i].Plate_Number);printf("車輛識別碼%s\n",Truct[i].VIN);printf("載重噸數(shù)%d\n",Truct[i].Load);}}8.2.5鞏固練習(xí)一、選擇題1.以下各選項用于說明一種新的類型名,其中正確的是()。A.typedefv1int; B.typedefv2=int;C.typedefintv3; D.typedefv4:int;C2.以下變量a占用的內(nèi)存字節(jié)數(shù)是()。(假設(shè)int類型為4字節(jié))。structstu{charname[20];longintn;intscore[4];}a;A.28 B.30 C.32 D.46C3.以下程序的輸出結(jié)果是()。structabc{inta,b,c;};main()t=s[0].a+s[1].b;printf("%d\n",t);}A.5 B.6 C.7 D.84.已知有如下定義:structperson{charname[9];intage;};structpersoncalss[4]={"Johu",17,"Paul",19,"Mary",18,"Adam",16,};根據(jù)以上定義,能輸出字母M的語句是()。A.printf("%c\n",class[3].name); B..printf("%c\n",class[3].name[1]);C.printf("%c\n",class[2].name[1]); D.printf("%c\n",class[2].name[0]);5.假設(shè)有以下結(jié)構(gòu)類型說明和變量定義,則變量a在內(nèi)存中所占字節(jié)數(shù)是()。structstud{charnum[6];ints[4];doubleave;}a;A.22 B.18 C.14 D.286.已知有以下定義:structex{intx;floaty;charz;}example;下面的敘述中不正確的是()。A.structex是結(jié)構(gòu)體類型 B.example是結(jié)構(gòu)體類型名C.x、y、z都是結(jié)構(gòu)體成員名 D.struct是結(jié)構(gòu)體類型的關(guān)鍵字二、填空題使用structstudent結(jié)構(gòu)體類型,存儲10個學(xué)生的信息,請?zhí)羁铡?include<stdio.h>struct________{intyear;intmonth;intday;};________{intnumber;charname[9];charsex[3];inthight;intweight;str
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《硫酸工藝學(xué)》課件
- 二尿素裝置安全課課件
- 《燒傷基礎(chǔ)知識》課件
- 《湖南鄉(xiāng)土地理》課件
- 《孕婦學(xué)校講課》課件
- 單位管理制度集合大合集職工管理
- 單位管理制度集粹匯編人員管理篇十篇
- 單位管理制度分享匯編【人力資源管理篇】十篇
- 單位管理制度分享大全職員管理篇十篇
- 2024教師安全責(zé)任協(xié)議書(28篇)
- 2025年國家圖書館招聘筆試參考題庫含答案解析
- 機(jī)器人課程課程設(shè)計
- 南充市市級事業(yè)單位2024年公招人員擬聘人員歷年管理單位遴選500模擬題附帶答案詳解
- 9.2溶解度(第2課時)-2024-2025學(xué)年九年級化學(xué)人教版(2024)下冊
- 安全知識考試題庫500題(含答案)
- 2024-2025學(xué)年上學(xué)期南京小學(xué)數(shù)學(xué)六年級期末模擬試卷
- 中國重癥患者腸外營養(yǎng)治療臨床實踐專家共識(2024)解讀
- 我的專業(yè)成長故事
- 公司管理制度-公司管理制度
- 井用潛水泵的安裝
- 疫情索賠公式及相應(yīng)表格模板Excel
評論
0/150
提交評論