C語言程序設計案例教程:結構體_第1頁
C語言程序設計案例教程:結構體_第2頁
C語言程序設計案例教程:結構體_第3頁
C語言程序設計案例教程:結構體_第4頁
C語言程序設計案例教程:結構體_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

結構體TeacherteachingdesignCONTENTS

目錄結構體的定義方式結構體變量的引用結構體數組案例分析仿真演練結構體的定義方式點PART01第一步:定義結構體類型的名稱和成員構成第二步:用結構體類型名定義結構體變量定義結構體類型變量struct<結構體類型名>{

<類型標識符><成員名1>;

<類型標識符><成員名n>;};定義結構體變量的格式是:struct<結構體類型名><結構體變量表>;(一)先定義(構造)結構體類型,再定義結構體類型變量structstudent{

charname[10];

charno[8];

charsex;

intage;

floatscore;};structstudentstud1,stud2;例如格式舉例structstudent{

charname[10];

charno[8];

charsex;

intage;

floatscore;}stud1,stud2;例如struct<結構體類型名>{<類型標識符><成員名1>;…<類型標識符><成員名n>;}<結構體變量表>;(二)在定義結構體類型的同時定義結構體變量struct{<類型標識符><成員名1>;

…<類型標識符><成員名n>;}<結構體變量表>;struct{charname[10];charno[8];charsex;intage;floatscore;}stud1,stud2;例如(三)在定義結構體類型時,不設置結構體名,而是直接定義結構體變量說明:這種形式一般不使用。這種定義格式一定要用大括號把初始化表括起來,不同的成員初值用逗號隔開,且字符要加單引號定界,字符串要加雙引號定界,數組加大括號定界。說明:staticstructstudent{charname[20];charsex;intage;floatscore;}stu1,stu2={“Wangwu”,’m’,20,88.5};(四)靜態(tài)變量的結構體變量定義格式例如:structstudent{intnum,age;charname[20],sex,addr[30];structstudy{floatChinese,Math,Physics,English;}score;};例如:(五)嵌套定義,即在結構體類型定義中又有結構體類型的成員不要把結構體類型名和結構體變量名混淆起來(2)花括號外的分號不能省略,它標示結構體定義語句的終止(4)struct是關鍵字,作為定義結構體類型的標志,后面緊跟的是結構體類型名,由用戶自行定義。(3)花括號內是結構體的成員說明表,也稱為數據項,也稱為成員或分量,用來說明該結構體有哪些成員及它們屬于哪種數據類型,占多少個字節(jié),按什么形式存儲,但不會為其分配存儲空間,只有在定義一個結構體變量時,才會為該變量分配內存空間。其中成員之間名稱不能相同,但數據類型可以相同。(1)補充說明結構體變量的引用PART02動態(tài)存儲的結構體變量,不能在定義時進行初始化,只能通過賦值語句,輸入函數等形式分別對其中的成員賦值。<結構體變量名>.<成員名>成員的引用格式“.”是成員運算符,表示對結構體變量的哪個成員進行引用,成員運算符的優(yōu)先級在所有運算中是最高的。結構體變量的引用

如:today.year=2012;如果成員本身又是一個結構體則必須逐級找到最低級的成員進行引用。

例如,today.time.second=15;單獨引用結構體變量的成員1如:nextday=today;結構體變量作為一個整體引用2structclock{inthour,minute,second;};structdate{intyear,month,day;structclocktime;}today,nextday;引用舉例stud2=stud1;要求具有相同的結構體數據類型。整體賦值把結構體變量stud1各成員的值分別賦值給結構體變量stud2的各成員成員分別賦值strcpy(,);stud2.score=stud1.score;成員賦值舉例結構體變量的賦值注意:字符數組之間賦值不能使用賦值運算符,必須使用字符串賦值函數strcpy。scanf("%d,%s,%c,%d,%f,%s\n",&student1);錯誤示例1scanf("%s",);scanf("%f",&stud2.score);正確示例2如果使用scanf函數接收結構體變量的值,不能直接針對結構體變量接收輸入,要將成員分開接收輸

入結構體變量的輸入和輸出結構體變量的輸出也是被分解到各成員的輸出上,以正確的引用方式和對應的類型輸出控制符對應即可。例:printf("%s\n",);輸

出sizeof(stud1)的字節(jié)數為25,sizeof(stud2)的字節(jié)數也為25。struct{charname[10];charno[8];charsex;intage;floatscore;}stud1,stud2;舉例感知結構體變量存儲空間的大小等于結構體類型各成員分量所占字節(jié)數之和存儲空間計算結構體變量存儲空間結構體數組PART03struct<結構體類型名><結構體數組名>[<長度>];定義格式要定義一個結構體數組,首先要定義一個結構體類型,然后再把數組定義為結構體類型。說明先定義結構體類型,再定義結構體數組格式一定義結構體類型的同時,定義結構體數組格式二結構體數組的定義structstudent{intnum;charname[20];charsex;

intage;floatscore;}stu[30];structstudentstud[10];格式一舉例structstudent{intnum;charname[20];charsex;intage;floatscore;}stu[30];格式二舉例結構體數組的定義先定義結構體類型再定義結構體數組定義結構體類型的同時,定義結構體數組structstudentstud[10];structstudent{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu[3]={{101,”WGJ”,’M’,28,88.5,“CS”},{102,”DYH”,’F’,26,88.0,”CS”},{103,”DYC”,’M’,24,78.5,”CZ”}};結構體數組中每個元素的初始化列表都要用一對花括號括起來以示區(qū)分,花括號之間用逗號相隔結構體數組的初始化每個元素的初始化表中的數據類型要與對一個成員的類型一致<數組名>[<下標號>].<成員名>引用格式在引用數組元素時,每個元素就是一個結構體變量,要把元素的引用和結構體變量成員的引用結合起來舉例感知結構體數組元素的引用stu[1].num=102;表示引用下標為1的元素的成員num。案例分析

交流提升PART04main(){structstu{

intnum;char*name;charsex;floatscore;}boy1,boy2;boy1.num=102;="Zhangping";printf("inputsexandscore\n");scanf("%c%f",&boy1.sex,&boy1.score);boy2=boy1;printf("Number=%d\nName=%s\n",boy2.num,);printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);}給結構變量賦值并輸出其值。main(){

structobject{

charname[16];floathigh;floatweight;};structobjectbox[3]={{“One”,1.7,33.25},{“Two”,2.9,56.92},{“Three”,0.32,19.78}};inti;for(i=0;i<3;i++)printf(“%-16s%8.2f%8.2f\n”,box[i].name,box[i].high,box[i].weight);}運行結果One1.7033.25Two2.9056.92Three0.3219.78分析以下結構體數組初始化程序運行后輸出結果源程序結構體數組的初始化就是將結構體數組的每個元素初始化后用“{}”括起來即可main(){structobject{charname[16];floathigh;floatweight;};structobjectbox[3]={{“One”,1.7,33.25},{“Two”,2.9,56.92},{“Three”,0.32,19.78}};inti;for(i=0;i<3;i++)printf(“%-16s%8.2f%8.2f\n”,box[i].name,box[i].high,box[i].weight);}One1.7033.25Two2.9056.92Three0.3219.78運行結果分析以下結構體數組初始化程序運行后輸出結果源程序main(){inti,c=0;floatave,s=0;for(i=0;i<5;i++){s+=boy[i].score;if(boy[i].score<60)c+=1;}printf("s=%f\n",s);ave=s/5;printf("average=%f\ncount=%d\n",ave,c);}主函數structstu{intnum;char*name;charsex;floatscore;}boy[5]={{101,"Liping",'M',45},{102,"Zhangping",'M',62.5},{103,"Hefang",'F',92.5},{104,"Chengling",'F',87},{105,"Wangming",'M',58},};定義結構體類型并初始化計算學生的平均成績和不及格的人數仿真演練

體驗探索PART05源程序選項A)20045537B)20041580C)20042580D)20041703答案B分析:主函數中定義并初始化了結構體數組,輸出為數組中第一個元素的num和第二個數組元素的TotalScore分析以下程序的運行后的輸出結果#include<string.h>structSTU{

intnum;

floatTotalScore;};main(){

structSTUs[2]={{20041,703},{20042,580}};

printf("%d%3.0f\n",s[0].num,s[1].TotalScore);}C答案structstu{inta;floatb;}stutype;說明語句stutype是定義的結構體類型變量名分析A)struct是結構體類型的關鍵字B)structstu是用戶定義結構體類型C)stutype是用戶定義的結構體類型名D)a和b都是結構體成員名選項如下說明語句,則下面敘述不正確的是A)1B)2C)8D)11選項若有定義:structdata{inti;charch;doublef;}b;則結構變量b占用內存的字節(jié)數是(

)題目分析結構體變量所占字節(jié)數√符合結

溫馨提示

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

評論

0/150

提交評論