在C程序中使用結(jié)構(gòu)體_第1頁(yè)
在C程序中使用結(jié)構(gòu)體_第2頁(yè)
在C程序中使用結(jié)構(gòu)體_第3頁(yè)
在C程序中使用結(jié)構(gòu)體_第4頁(yè)
在C程序中使用結(jié)構(gòu)體_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、結(jié)構(gòu)體徐秋紅徐秋紅辦公地點(diǎn):辦公地點(diǎn):主樓四層(信息學(xué)院)主樓四層(信息學(xué)院)411411室室辦公電話(huà):辦公電話(huà):0100106233651662336516e-mail:主要內(nèi)容 什么是結(jié)構(gòu)體什么是結(jié)構(gòu)體 如何定義一個(gè)結(jié)構(gòu)體如何定義一個(gè)結(jié)構(gòu)體 如何聲明結(jié)構(gòu)體變量如何聲明結(jié)構(gòu)體變量 如何引用結(jié)構(gòu)體變量:結(jié)構(gòu)體的輸入、如何引用結(jié)構(gòu)體變量:結(jié)構(gòu)體的輸入、輸出操作、結(jié)構(gòu)體成員操作等輸出操作、結(jié)構(gòu)體成員操作等 結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組什么是結(jié)構(gòu)體 除數(shù)組以外的又一個(gè)構(gòu)造類(lèi)型除數(shù)組以外的又一個(gè)構(gòu)造類(lèi)型 為什么引入結(jié)構(gòu)體的概念為什么引入結(jié)構(gòu)體的概念例如:體檢表例如:體檢表姓名性別出生日期身高體重年月日(字符串

2、) (字符) (整型)(整型)(整型)(實(shí)型)(實(shí)型)王利男19898201.8171什么是結(jié)構(gòu)體例如:學(xué)生的成績(jī)單例如:學(xué)生的成績(jī)單這些表格中數(shù)據(jù)的特點(diǎn)是什么?這些表格中數(shù)據(jù)的特點(diǎn)是什么?含義上具有相關(guān)性含義上具有相關(guān)性表現(xiàn)的形式上不完全相同表現(xiàn)的形式上不完全相同序號(hào)序號(hào)班級(jí)班級(jí)學(xué)號(hào)學(xué)號(hào)姓名姓名總評(píng)總評(píng)期末期末平時(shí)平時(shí)備注備注(整型整型) (字符串字符串) (字符串字符串) (字符串字符串) (實(shí)型實(shí)型)(實(shí)型實(shí)型)(實(shí)型實(shí)型)(字符串字符串)什么是結(jié)構(gòu)體 表表格格的數(shù)據(jù)特點(diǎn)的數(shù)據(jù)特點(diǎn):表:表格中格中集合了集合了各各種類(lèi)型種類(lèi)型的數(shù)據(jù),無(wú)法用前面學(xué)過(guò)的的數(shù)據(jù),無(wú)法用前面學(xué)過(guò)的任何單一種類(lèi)的數(shù)

3、據(jù)類(lèi)型來(lái)完全描任何單一種類(lèi)的數(shù)據(jù)類(lèi)型來(lái)完全描述述因此因此c c語(yǔ)言語(yǔ)言引入引入了了一種能集中不同的一種能集中不同的數(shù)據(jù)類(lèi)型于一體的構(gòu)造類(lèi)型數(shù)據(jù)類(lèi)型于一體的構(gòu)造類(lèi)型 -結(jié)構(gòu)體結(jié)構(gòu)體什么是結(jié)構(gòu)體 結(jié)構(gòu)體是一個(gè)新的構(gòu)造類(lèi)型結(jié)構(gòu)體是一個(gè)新的構(gòu)造類(lèi)型 是由編程者根據(jù)自己的需求而設(shè)計(jì)的一種是由編程者根據(jù)自己的需求而設(shè)計(jì)的一種結(jié)構(gòu)形式結(jié)構(gòu)形式(或稱(chēng)為由編程者自己設(shè)計(jì)的(或稱(chēng)為由編程者自己設(shè)計(jì)的數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型)例如:例如:學(xué)號(hào)學(xué)號(hào)姓名姓名英語(yǔ)成績(jī)英語(yǔ)成績(jī)數(shù)學(xué)成績(jī)數(shù)學(xué)成績(jī)(字符串字符串)(字符串字符串)(整型整型)(整型整型)通過(guò)分析和整理要處理的數(shù)據(jù)內(nèi)容,歸納需要哪些數(shù)據(jù)項(xiàng),并通過(guò)分析和整理要處理的數(shù)據(jù)內(nèi)容

4、,歸納需要哪些數(shù)據(jù)項(xiàng),并指出每個(gè)數(shù)據(jù)項(xiàng)的表現(xiàn)形式(即它屬于哪種數(shù)據(jù)類(lèi)型)。指出每個(gè)數(shù)據(jù)項(xiàng)的表現(xiàn)形式(即它屬于哪種數(shù)據(jù)類(lèi)型)。然后準(zhǔn)備定義新的數(shù)據(jù)類(lèi)型:結(jié)構(gòu)體然后準(zhǔn)備定義新的數(shù)據(jù)類(lèi)型:結(jié)構(gòu)體定義結(jié)構(gòu)體 定義結(jié)構(gòu)體定義結(jié)構(gòu)體 定義兩個(gè)內(nèi)容結(jié)構(gòu)體的名字結(jié)構(gòu)體的內(nèi)容學(xué)號(hào)學(xué)號(hào)姓名姓名英語(yǔ)成績(jī)英語(yǔ)成績(jī)數(shù)學(xué)成績(jī)數(shù)學(xué)成績(jī)(字符串字符串)(字符串字符串)(整型整型)(整型整型)struct scorechar num10;char name20;int english;int math;自定義了一個(gè)數(shù)據(jù)類(lèi)型,自定義了一個(gè)數(shù)據(jù)類(lèi)型,它的名字為它的名字為score結(jié)構(gòu)體的內(nèi)容是由多結(jié)構(gòu)體的內(nèi)容是由多個(gè)數(shù)據(jù)項(xiàng)組成,個(gè)

5、數(shù)據(jù)項(xiàng)組成,每個(gè)每個(gè)數(shù)據(jù)項(xiàng)被稱(chēng)為該結(jié)構(gòu)數(shù)據(jù)項(xiàng)被稱(chēng)為該結(jié)構(gòu)體的體的結(jié)構(gòu)體成員結(jié)構(gòu)體成員定義結(jié)構(gòu)體 每個(gè)結(jié)構(gòu)體必須先定義,后引用每個(gè)結(jié)構(gòu)體必須先定義,后引用 定義結(jié)構(gòu)體其實(shí)是對(duì)定義結(jié)構(gòu)體其實(shí)是對(duì)結(jié)構(gòu)體內(nèi)部構(gòu)成形式進(jìn)結(jié)構(gòu)體內(nèi)部構(gòu)成形式進(jìn)行描述行描述,即對(duì)其成員的聲明,包括每個(gè)成員,即對(duì)其成員的聲明,包括每個(gè)成員所具有的數(shù)據(jù)類(lèi)型的描述。所具有的數(shù)據(jù)類(lèi)型的描述。 定義結(jié)構(gòu)體類(lèi)型的語(yǔ)句格式:定義結(jié)構(gòu)體類(lèi)型的語(yǔ)句格式:structstruct 結(jié)構(gòu)體類(lèi)型名結(jié)構(gòu)體類(lèi)型名 結(jié)構(gòu)體的結(jié)構(gòu)體的成員列表;成員列表; ;struct coordinate double x;double y;對(duì)每個(gè)成員必須分別聲明,無(wú)論

6、對(duì)每個(gè)成員必須分別聲明,無(wú)論他們是否具有相同的數(shù)據(jù)類(lèi)型他們是否具有相同的數(shù)據(jù)類(lèi)型通訊錄每條記錄的描述通訊錄每條記錄的描述:定義結(jié)構(gòu)體類(lèi)型姓名工作單位家庭住址郵編固定電話(huà)e-mail(字符串)(字符串)(字符串)(整型)(字符串)(字符串)王麗北醫(yī)三院花園路3號(hào)于戰(zhàn)海交通大隊(duì)新源里52號(hào)struct addr char name20; char depart30; /* 工作單位工作單位 */ char address30; /* 住址住址 */ int postcode; /* 郵編郵編 */ char phone9; /* 電話(huà)號(hào)碼電話(huà)號(hào)碼 */ char email30; /* e-mai

7、l */;聲明結(jié)構(gòu)體變量 1)1)定義了結(jié)構(gòu)體類(lèi)型后,再聲明結(jié)構(gòu)體類(lèi)定義了結(jié)構(gòu)體類(lèi)型后,再聲明結(jié)構(gòu)體類(lèi)型的變量型的變量struct 結(jié)構(gòu)體類(lèi)型名結(jié)構(gòu)體類(lèi)型名結(jié)構(gòu)體成員表結(jié)構(gòu)體成員表;struct 結(jié)構(gòu)體結(jié)構(gòu)體類(lèi)型名類(lèi)型名結(jié)構(gòu)體變量名;先定義結(jié)構(gòu)體類(lèi)型先定義結(jié)構(gòu)體類(lèi)型再聲明結(jié)構(gòu)體再聲明結(jié)構(gòu)體類(lèi)型的變量類(lèi)型的變量聲明結(jié)構(gòu)體變量struct singer int s_id; double s1; /* 參賽歌曲得分 */ double s2; /* 知識(shí)問(wèn)答得分 */ double sum; /* 該選手的總得分 */ ;struct singer a1, a2, a3, a4, a5, a6;類(lèi)型

8、名類(lèi)型名變量名變量名聲明結(jié)構(gòu)體變量 2) 2) 在定義結(jié)構(gòu)體類(lèi)型的同時(shí)聲明結(jié)構(gòu)體變?cè)诙x結(jié)構(gòu)體類(lèi)型的同時(shí)聲明結(jié)構(gòu)體變量。即將結(jié)構(gòu)體類(lèi)型的定義和聲明結(jié)構(gòu)體量。即將結(jié)構(gòu)體類(lèi)型的定義和聲明結(jié)構(gòu)體變量放在同一個(gè)語(yǔ)句中變量放在同一個(gè)語(yǔ)句中. . 其一般形式如下:其一般形式如下:struct struct 結(jié)構(gòu)體類(lèi)型名結(jié)構(gòu)體類(lèi)型名 結(jié)構(gòu)體成員表;結(jié)構(gòu)體成員表; 結(jié)構(gòu)體變量名表;struct singer int s_id; double s1; double s2; double sum; a1,a2,a3,a4,a5,a6; 聲明結(jié)構(gòu)體變量 3)3)在定義結(jié)構(gòu)體類(lèi)型時(shí)省略結(jié)構(gòu)體類(lèi)型在定義結(jié)構(gòu)體類(lèi)型時(shí)省略

9、結(jié)構(gòu)體類(lèi)型名,并直接聲明結(jié)構(gòu)體變量。名,并直接聲明結(jié)構(gòu)體變量。 一般形式如下:一般形式如下:struct 結(jié)構(gòu)體成員表; 結(jié)構(gòu)體變量名表;即即定義定義的的結(jié)構(gòu)體結(jié)構(gòu)體沒(méi)有沒(méi)有結(jié)構(gòu)體類(lèi)型名。結(jié)構(gòu)體類(lèi)型名。 如果省略結(jié)構(gòu)體類(lèi)型名如果省略結(jié)構(gòu)體類(lèi)型名, , 則稱(chēng)之為則稱(chēng)之為無(wú)名結(jié)構(gòu)體無(wú)名結(jié)構(gòu)體, , 這種情況常常出現(xiàn)在函這種情況常常出現(xiàn)在函數(shù)內(nèi)部。使用這種結(jié)構(gòu)數(shù)內(nèi)部。使用這種結(jié)構(gòu)體定義形式時(shí),一定是體定義形式時(shí),一定是在定義結(jié)構(gòu)體類(lèi)型的同在定義結(jié)構(gòu)體類(lèi)型的同時(shí),就聲明結(jié)構(gòu)體變量時(shí),就聲明結(jié)構(gòu)體變量struct singer int s_id; double s1; double s2; double

10、 sum; a1,a2,a3,a4,a5,a6;結(jié)構(gòu)體的長(zhǎng)度 結(jié)構(gòu)體類(lèi)型的長(zhǎng)度結(jié)構(gòu)體類(lèi)型的長(zhǎng)度一旦通過(guò)結(jié)構(gòu)體類(lèi)型定義語(yǔ)句定義了一個(gè)結(jié)構(gòu)體類(lèi)型,則這個(gè)結(jié)構(gòu)體類(lèi)型的長(zhǎng)度也就被固定下來(lái),. 一個(gè)一個(gè)結(jié)構(gòu)體類(lèi)型長(zhǎng)度結(jié)構(gòu)體類(lèi)型長(zhǎng)度的的計(jì)算計(jì)算sizeofsizeof( (結(jié)構(gòu)體類(lèi)型名結(jié)構(gòu)體類(lèi)型名) ) 一個(gè)一個(gè)結(jié)構(gòu)體結(jié)構(gòu)體變量變量長(zhǎng)度長(zhǎng)度的的計(jì)算計(jì)算sizeofsizeof( (結(jié)構(gòu)體變量名結(jié)構(gòu)體變量名) )定義結(jié)構(gòu)體類(lèi)型如 struct singer int s_id; double s1; double s2; stud1;則結(jié)構(gòu)體變量stud1的長(zhǎng)度是多少?sizeofsizeof( (數(shù)據(jù)類(lèi)型名

11、數(shù)據(jù)類(lèi)型名) )返回返回“數(shù)據(jù)類(lèi)型名數(shù)據(jù)類(lèi)型名”的類(lèi)型長(zhǎng)度。的類(lèi)型長(zhǎng)度。sizeofsizeof( (變量名變量名) )返回返回“結(jié)構(gòu)體變量結(jié)構(gòu)體變量”的長(zhǎng)度。的長(zhǎng)度。定義結(jié)構(gòu)體類(lèi)型#include struct singer int s_id; double s1; double s2; stud1stud1;int main(void) printf(nnt 長(zhǎng)度: %d %d, sizeof(struct singer); printf(nnt 長(zhǎng)度: %d %d, sizeof(stud1); return 0;s_long.c結(jié)構(gòu)體變量的初始化結(jié)構(gòu)體變量初始化的一般形式為:結(jié)構(gòu)體變量

12、初始化的一般形式為:方式方式1:struct 結(jié)構(gòu)體類(lèi)型名結(jié)構(gòu)體類(lèi)型名結(jié)構(gòu)體變量名結(jié)構(gòu)體變量名 = 初始化數(shù)據(jù)初始化數(shù)據(jù);方式方式2:struct 結(jié)構(gòu)體類(lèi)型名結(jié)構(gòu)體類(lèi)型名結(jié)構(gòu)體成員表;結(jié)構(gòu)體成員表; 結(jié)構(gòu)體變量名結(jié)構(gòu)體變量名 = 初始化數(shù)據(jù)初始化數(shù)據(jù) ;方式方式3:struct 結(jié)構(gòu)體成員表;結(jié)構(gòu)體成員表; 結(jié)構(gòu)體變量名結(jié)構(gòu)體變量名 = 初始化數(shù)據(jù)初始化數(shù)據(jù) ;結(jié)構(gòu)體變量的初始化由于結(jié)構(gòu)體類(lèi)型變量匯集了各類(lèi)不同數(shù)據(jù)類(lèi)型的成員,由于結(jié)構(gòu)體類(lèi)型變量匯集了各類(lèi)不同數(shù)據(jù)類(lèi)型的成員,所以結(jié)構(gòu)體類(lèi)型變量的初始化就略顯復(fù)雜。所以結(jié)構(gòu)體類(lèi)型變量的初始化就略顯復(fù)雜。struct ach /*定義學(xué)生結(jié)構(gòu)體類(lèi)型

13、*/ char name20; /* 學(xué)生姓名*/ char sex; /* 性別*/ int num; /* 學(xué)號(hào)*/ float score3; /* 三科考試成績(jī)*/ stu1= frank, m, 206110, 78.5, 91.5, 95.0 , stu2;結(jié)構(gòu)體變量的引用 c c語(yǔ)言對(duì)結(jié)構(gòu)體變量的處理是通過(guò)對(duì)其語(yǔ)言對(duì)結(jié)構(gòu)體變量的處理是通過(guò)對(duì)其成員成員的引用實(shí)現(xiàn)的。的引用實(shí)現(xiàn)的。 “. .”被稱(chēng)為被稱(chēng)為成員成員( (分量分量) )運(yùn)算符運(yùn)算符它在所有的運(yùn)算符中優(yōu)先級(jí)最高。它在所有的運(yùn)算符中優(yōu)先級(jí)最高。引用結(jié)構(gòu)體變量的成員的一般方式為: 結(jié)構(gòu)體變量名.成員名一個(gè)整體一個(gè)整體結(jié)構(gòu)體變量

14、的引用 從鍵盤(pán)給從鍵盤(pán)給a4a4賦值,然后輸出:賦值,然后輸出: scanf(%d, ); scanf(%d, ); scanf(%lf%lf, ); scanf(%lf%lf, ); printf( n %d n, ); printf( n %d n, ); printf( %f, %f n, ); printf( %f, %f n, ); printf( %f n, printf( %f n, ); );struct singer int s_id; double s1; double s2; double sum; a1, a2 = 113045, 80, 78, 0, a3, a4;&

15、amp;a4.s_id&a4.s1, &a4.s2a4.s_ida4.s1, a4.s2a4.sum=a4.s1+a4.s2給a3賦值:將a2的值賦給a3a3=a2;例如:給變量a1賦值 a1.s_id = 102011; a1.s1 = 88.5; a1.s2 = 89; a1.sum = a1.s1+a1.s2;聲明結(jié)構(gòu)體變量例如:例如:struct ach /* 定義學(xué)生結(jié)構(gòu)體類(lèi)型定義學(xué)生結(jié)構(gòu)體類(lèi)型 */char name20; /* 學(xué)生姓名學(xué)生姓名 */ char sex; /* 性別性別 */ int num; /* 學(xué)號(hào)學(xué)號(hào) */ float score3; /*

16、 三門(mén)課程的考試成績(jī)?nèi)T(mén)課程的考試成績(jī) */;struct ach stu1=jonh,m,310,75,96,63, stu2=lili,f,217,92,87,70; 姓名姓名性別性別學(xué)號(hào)學(xué)號(hào)s1s2s3johnm310759663lilif217928770類(lèi)型名類(lèi)型名聲明聲明變量名變量名和賦初值和賦初值(stu1.score0+ stu1.score1+ stu1.score2)/3int i;float avg_2, sum=0.0; avg_2= sum/3;求每一位學(xué)生求每一位學(xué)生的平均成績(jī)的平均成績(jī)avg_1=for( i=0; i3; i+) sum=sum+stu2.sco

17、rei;結(jié)構(gòu)體數(shù)組struct ach /* 定義學(xué)生結(jié)構(gòu)體類(lèi)型定義學(xué)生結(jié)構(gòu)體類(lèi)型 */char name20; /* 學(xué)生姓名學(xué)生姓名 */ char sex; /* 性別性別 */ int num; /* 編號(hào)編號(hào) */ float score3; /* 三門(mén)課程的考試成績(jī)?nèi)T(mén)課程的考試成績(jī) */ stu0, stu1 ;struct achchar name20; char sex; int num; float score3; stu2 ;stu2=john,m,310,75 96,63, lili,f,217,92,78,70 ; printf(n %s, %f , );stu0.n

18、ame, stu0.score2如果要輸出第一位學(xué)生的名字和其最后一科的成績(jī)?如何初始化數(shù)組?對(duì)結(jié)構(gòu)體做一個(gè)說(shuō)明 結(jié)構(gòu)體類(lèi)型是人們制造的一種類(lèi)型,它結(jié)構(gòu)體類(lèi)型是人們制造的一種類(lèi)型,它與其他與其他c的基本類(lèi)型的特性一樣的基本類(lèi)型的特性一樣 結(jié)構(gòu)體變量是由結(jié)構(gòu)體聲明的變量。它結(jié)構(gòu)體變量是由結(jié)構(gòu)體聲明的變量。它與與c的其他基本變量的特性一樣的其他基本變量的特性一樣 結(jié)構(gòu)體的成員是由結(jié)構(gòu)體的成員是由c的其他類(lèi)型來(lái)定義的其他類(lèi)型來(lái)定義的,為什么結(jié)構(gòu)體的成員不能由其他已的,為什么結(jié)構(gòu)體的成員不能由其他已經(jīng)定義的結(jié)構(gòu)體來(lái)定義呢?!經(jīng)定義的結(jié)構(gòu)體來(lái)定義呢?!結(jié)構(gòu)體定義 namesexheightweights

19、ightcommentleftright再來(lái)看一張學(xué)生體檢表:frank m 1.78 67.51.0 0.9恐高癥mary f 1.61 58.50.7 0.8青霉素過(guò)敏結(jié)構(gòu)體的嵌套 struct sight_table float left; float right; struct case_table char name20; char sex; float height; float weight; struct sight_table sight; char comment30; health2;結(jié)構(gòu)體的嵌套 對(duì)嵌套的結(jié)構(gòu)體變量成員的引用:對(duì)嵌套的結(jié)構(gòu)體變量成員的引用:strcpy(

20、, frank);health0.sex = m;health0.sight.left = 1.2;health0.sight.right = 1.0;printf(%.2f, %.2f n,health0.sight.left, health0.sight.right); health0health0:是結(jié)構(gòu)體數(shù)組是結(jié)構(gòu)體數(shù)組healthhealth的第的第1 1個(gè)元素個(gè)元素frank舉例#include struct date int year; int month; int day; ; struct good char name20; char place20; int number; float price; struct date deadline; ; 現(xiàn)有庫(kù)存信息表,包括商品現(xiàn)有庫(kù)存

溫馨提示

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

評(píng)論

0/150

提交評(píng)論