第10章自定义数据类型_第1页
第10章自定义数据类型_第2页
第10章自定义数据类型_第3页
第10章自定义数据类型_第4页
第10章自定义数据类型_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序设计基础程序设计基础第第 10 章章 自定义数据类型自定义数据类型可枚举数据的组织可枚举数据的组织枚举类型枚举类型 不同类型数据的组织不同类型数据的组织结构体类型结构体类型 批量不同类型数据的组织批量不同类型数据的组织结构体数组结构体数组 为自定义数据类型定义别名为自定义数据类型定义别名 本章的基本内容是:本章的基本内容是:程序设计基础程序设计基础【任务【任务10.1】荷兰国旗问题】荷兰国旗问题【问题问题】要求重新排列一个由要求重新排列一个由Red、White和和Blue(这是荷兰国(这是荷兰国旗的颜色)构成的数组,使得所有的旗的颜色)构成的数组,使得所有的Red都排在最前面,都排在最前面

2、,White排在其次,排在其次,Blue排在最后。排在最后。 【想法想法】设数组设数组an 存储存储Red、White和和Blue三种元素,设置三三种元素,设置三个参数个参数i、j、k,其中,其中i之前的元素(不包括之前的元素(不包括ai)全部为红色;)全部为红色;k之后的元素(不包括之后的元素(不包括ak)全部为蓝色;)全部为蓝色;j表示当前元素。则表示当前元素。则i初初始化为始化为0,k初始化为初始化为n-1,j初始化为初始化为0。j从前向后扫描,在扫描从前向后扫描,在扫描过程中根据过程中根据aj的颜色,将其交换到序列的前面或后面,当的颜色,将其交换到序列的前面或后面,当j等等于于k时,算

3、法结束。荷兰国旗问题的求解思想如图时,算法结束。荷兰国旗问题的求解思想如图10.1所示。所示。图10.1 荷兰国旗的求解思想Red Red Red White White ? ? ? Blue Bluei j k程序设计基础程序设计基础【任务【任务10.1】荷兰国旗问题】荷兰国旗问题注意到当注意到当j扫描到扫描到Red时,将时,将ai和和aj交换,只有当前面出现连交换,只有当前面出现连续个续个Red时,交换到位置时,交换到位置j的元素是的元素是Red,否则交换到位置,否则交换到位置j的元素的元素一定是一定是White,因此交换后,因此交换后j应该加应该加1;当;当j扫描到扫描到Blue时,将时

4、,将ak和和aj交换,交换,Red、White和和Blue均有可能交换到位置均有可能交换到位置j,则,则aj需要再需要再次判断,因此交换后不能改变次判断,因此交换后不能改变j。【算法算法】设函数设函数Sort实现荷兰国旗问题,其算法描述如下:实现荷兰国旗问题,其算法描述如下:输入:数组输入:数组an,有,有Red、White和和Blue三种元素三种元素功能:荷兰国旗功能:荷兰国旗输出:有序数组输出:有序数组anstep1: step1: 初始化初始化i = 0; k = n 1; j = 0; 1; j = 0;step2: step2: 当当j = k时,依次考查元素时,依次考查元素aj:

5、step2.1 step2.1 如果如果aj是是Red,则交换,则交换ai和和aj;i+; j+; 否则,如果否则,如果aj是是Blue,则交换,则交换ak和和aj;k-; 否则否则aj是是White,则,则j+;程序设计基础程序设计基础10.1 可枚举数据的组织可枚举数据的组织枚举类型枚举类型【语法语法】定义枚举类型的一般形式如下:定义枚举类型的一般形式如下:枚举类型的定义枚举类型的定义enum 枚举类型名枚举类型名 枚举元素表枚举元素表 ;新类型名新类型名以分号结尾以分号结尾【语义语义】定义了一个枚举类型,该类型的取值集合是枚举元定义了一个枚举类型,该类型的取值集合是枚举元素表。素表。例例

6、10.1 定义枚举类型表示一周的七天定义枚举类型表示一周的七天enum WeekType Mon, Tue, Wed, Thu, Fri, Sat, Sun ; 枚举元素的默认值按照定义的顺序依次为枚举元素的默认值按照定义的顺序依次为0、1、2、, 在定义时指定某个枚举元素的值,其后面的枚举元素值依次加在定义时指定某个枚举元素的值,其后面的枚举元素值依次加1。 enum WeekType Mon = 1, Tue, Wed, Thu, Fri, Sat, Sun ; 程序设计基础程序设计基础10.1 可枚举数据的组织可枚举数据的组织枚举类型枚举类型1. 枚举变量的定义枚举变量的定义 【语法语法

7、】声明枚举变量的一般形式如下:声明枚举变量的一般形式如下: 枚举变量的定义与初始化枚举变量的定义与初始化【语义语义】声明变量名列表中的各变量是枚举类型,并为各枚声明变量名列表中的各变量是枚举类型,并为各枚举变量分配存储空间。举变量分配存储空间。enum 枚举类型名枚举类型名枚举元素表枚举元素表 变量名列表变量名列表 ;enum 枚举类型名枚举类型名 变量名列表变量名列表 ; 程序设计基础程序设计基础10.1 可枚举数据的组织可枚举数据的组织枚举类型枚举类型枚举变量的定义与初始化枚举变量的定义与初始化例例10.2 10.2 假定一周从星期一开始,定义枚举类型表示一周的七假定一周从星期一开始,定义

8、枚举类型表示一周的七天,定义变量天,定义变量todaytoday、nextdaynextday是该枚举类型。是该枚举类型。enum WeekType Mon, Tue, Wed, Thu, Fri, Sat, Sun ; /定义枚举类型定义枚举类型enum WeekType today, nextday ; /声明枚举变量声明枚举变量enum WeekType Mon, Tue, Wed, Thu, Fri, Sat, Sun today, nextday ; /定义枚举类型同时声明枚举变量定义枚举类型同时声明枚举变量程序设计基础程序设计基础10.1可枚举数据的组织可枚举数据的组织枚举类型枚举

9、类型2. 枚举变量的初始化枚举变量的初始化 【语法语法】初始化枚举变量一般形式如下:初始化枚举变量一般形式如下: 枚举变量的定义与初始化枚举变量的定义与初始化【语义语义】声明变量名列表中的各变量是枚举类型,并为各枚声明变量名列表中的各变量是枚举类型,并为各枚举变量分配存储空间。举变量分配存储空间。enum 枚举类型名枚举类型名 变量名变量名 = 初值初值 ; enum 枚举类型名枚举类型名枚举元素表枚举元素表 变量名变量名 = 初值初值;程序设计基础程序设计基础10.1 可枚举数据的组织可枚举数据的组织枚举类型枚举类型枚举变量的定义与初始化枚举变量的定义与初始化enum WeekType Mo

10、n, Tue, Wed, Thu, Fri, Sat, Sun ; /定义枚举类型定义枚举类型enum WeekType today = Mon ; /声明枚举变量并初始化声明枚举变量并初始化enum WeekType Mon, Tue, Wed, Thu, Fri, Sat, Sun today = Mon ; /定义枚举类型同时声明枚举变量定义枚举类型同时声明枚举变量程序设计基础程序设计基础10.1 可枚举数据的组织可枚举数据的组织枚举类型枚举类型C/C+语言规定:在为枚举变量赋值时,只能将枚举元素赋给语言规定:在为枚举变量赋值时,只能将枚举元素赋给枚举变量,不能直接把枚举值赋给枚举变量,

11、但是,当枚举元枚举变量,不能直接把枚举值赋给枚举变量,但是,当枚举元素赋给一个枚举变量时,该变量实际得到的是该枚举元素的枚素赋给一个枚举变量时,该变量实际得到的是该枚举元素的枚举值。举值。 枚举变量的操作枚举变量的操作today = Mon;today = Mon;today = (enum WeekType)1;程序设计基础程序设计基础10.1 可枚举数据的组织可枚举数据的组织枚举类型枚举类型例例10.3根据输入的数字在屏幕上输出相应的星期名和下一天根据输入的数字在屏幕上输出相应的星期名和下一天的星期名。的星期名。2 #include 2 #include 3 enum WeekType 3

12、 enum WeekType Mon = 1, on = 1, Tue, ue, Wed, , Thu, , Fri, ri, Sat, , Sun ; ; 4 void PrintDay(enum WeekType day); 4 void PrintDay(enum WeekType day); 5 5 6 int main( )6 int main( )7 7 8 enum WeekType today, nextday; 8 enum WeekType today, nextday; 9 int index;9 int index;10 printf(10 printf(请输入今天是星

13、期几,输入对应数字:请输入今天是星期几,输入对应数字:); 11 scanf(%d, &index);11 scanf(%d, &index);12 today = (enum WeekType)index; 12 today = (enum WeekType)index; 13 printf(Today is );13 printf(Today is );14 PrintDay(today); 14 PrintDay(today); 15 nextday = (enum WeekType)(Mon + (today - Mon + 1) % 7); 16 printf(Nextday is

14、);17 PrintDay(nextday); 程序设计基础程序设计基础 18 return 0; 19 20 21 void PrintDay(enum WeekType day) 22 23 switch (day) 24 25 case Mon : printf(Monday); break;26 case Tue : printf(Tuesday); break;27 case Wed : printf(Wednesday); break;28 case Thu : printf(Thursday); break;29 case Fri : printf(Friday); break;

15、30 case Sat : printf(Saturday); break;31 case Sun : printf(Sunday); break;32 default : break;33 34 printf(n); 35 return; 36 10.1 可枚举数据的组织可枚举数据的组织枚举类型枚举类型程序设计基础程序设计基础解决任务解决任务10.110.1的程序的程序2 2 #include 3 3 #include 4 4 #include 5 5 #define N N 1 10 6 6 enum Color Red, White, Blue; 7 void CreatIn(7 voi

16、d CreatIn(enum Color a , int n); a , int n); 8 void Sort(8 void Sort(enum Color a , int n); a , int n); 9 void PrintOut(9 void PrintOut(enum Color a , int n); a , int n); 10 0 11 1 int main( )12 213 3 enum Color aN N; 14 CreatIn (a, N); 14 CreatIn (a, N); 15 printf(15 printf(初始序列为:初始序列为:);16 PrintOu

17、t(a, N); 16 PrintOut(a, N); 17 Sort(a, N); 17 Sort(a, N); 18 printf(18 printf(荷兰国旗是:荷兰国旗是:);19 PrintOut(a, N); 19 PrintOut(a, N); 20 20 return 0; 21 1 程序设计基础程序设计基础解决任务解决任务10.110.1的程序的程序22 22 23 23 void CreatICreatIn(enum Color a , int n) 24 24 25 25 int temptemp;26 srand(time(NULL); 26 srand(time(NU

18、LL); 27 27 for (int int i = 0; i n; i+)28 28 29 29 temp = rand( ) % 3; 30 ai = (30 ai = (enum Color)temp; )temp; 31 31 32 return; 32 return; 33 33 34 34 void Sort(enum Color a , int n) 35 35 36 36 int i = 0, , k = n - 1, j = 0; 37 37 enum Color temp; temp;38 38 while (j k)39 39 40 switch (aj) 41 程序设

19、计基础程序设计基础解决任务解决任务10.110.1的程序的程序42 case Red : temp = ai; ai+ = aj; aj+ = temp; break; 43 case Blue: temp emp = aj; aj = ak; ak- = tempemp; break; 44 44 case White: j+; break; 45 45 46 46 47 47 return ; 48 48 49 49 void PrintOPrintOut(enum Color a , int n) 50 50 51 51 for (int i = 0; i n; i+)52 52 53

20、switch (ai) 53 switch (ai) 54 54 55 55 case Red : printf(Red ed ); break;56 56 case White : : printf(White hite ); break;57 57 case Blue : printf(Blue lue ); break;58 58 59 59 60 printf(n); 60 printf(n); 61 return; 61 return; 62 2 程序设计基础程序设计基础【任务任务10.2】统计入学成绩统计入学成绩【问题问题】某重点大学的博士入学考试科目为外语和两门专业课,某重点大学

21、的博士入学考试科目为外语和两门专业课,对于每个考生,输入各科考试成绩,并计算总分。对于每个考生,输入各科考试成绩,并计算总分。【想法想法】输入一个考生的各项信息,再计算总分。输入一个考生的各项信息,再计算总分。【算法算法】设变量设变量sum存储考生的总分,算法如下:存储考生的总分,算法如下:step1: step1: 输入一个考生的各项信息输入一个考生的各项信息; step2: sum = step2: sum = 外语成绩外语成绩 + 专业课专业课1成绩成绩 +专业课专业课2成绩成绩; step3: step3: 输出输出sum;程序设计基础程序设计基础nonameforeign分散存储分散

22、存储简单变量与结构体变量之间的关系简单变量与结构体变量之间的关系spec1spec2连续连续存储存储nonameforeign spec1spec25个普通变量个普通变量1个结构体变量个结构体变量10.2 不同类型数据的组织不同类型数据的组织结构体类型结构体类型程序设计基础程序设计基础10.2 不同类型数据的组织不同类型数据的组织结构体类型结构体类型【语法语法】定义结构体类型的一般形式如下:定义结构体类型的一般形式如下:结构体类型的定义结构体类型的定义【语义语义】定义一个含有定义一个含有n个成员的结构体类型。注意编译器不个成员的结构体类型。注意编译器不为类型分配存储空间。为类型分配存储空间。

23、struct 结构体类型名结构体类型名 数据类型数据类型1 成员成员1 ; 数据类型数据类型2 成员成员2 ; 数据类型数据类型n 成员成员n ; ;以分号结尾以分号结尾新类型名新类型名成员列表成员列表程序设计基础程序设计基础struct DateType int year ; int month ; int day ; ;10.2 不同类型数据的组织不同类型数据的组织结构体类型结构体类型结构体类型的定义结构体类型的定义struct StudentType int no ; struct DateType birthday ; /struct DateType是已经定义的结构体类型是已经定义的

24、结构体类型 ;结构体类型可以嵌套定义,例如结构体类型可以嵌套定义,例如 :例例10.4 定义结构体类型定义结构体类型DateType表示日期的年、月、日等信表示日期的年、月、日等信息。息。程序设计基础程序设计基础10.2 不同类型数据的组织不同类型数据的组织结构体类型结构体类型例例10.5 定义结构体类型定义结构体类型StudentType表示学生的基本信息,包表示学生的基本信息,包括姓名、学号、出生日期等信息。括姓名、学号、出生日期等信息。struct DateTypeint year, month, day; /与变量定义类似,相同类型的成员可以写在与变量定义类似,相同类型的成员可以写在一

25、行一行;struct StudentTypechar name10;char no10;struct DateType birthday; /struct DateType是已经定义的结构体类是已经定义的结构体类型型;程序设计基础程序设计基础10.2 不同类型数据的组织不同类型数据的组织结构体类型结构体类型1. 结构体变量的定义结构体变量的定义【语法语法】声明结构体变量的一般形式如下:声明结构体变量的一般形式如下: 结构体变量的定义和初始化结构体变量的定义和初始化【语义语义】声明变量名列表中的变量为结构体类型,并为结构声明变量名列表中的变量为结构体类型,并为结构体变量分配存储空间。体变量分配存

26、储空间。 struct 结构类型名结构类型名成员列表成员列表 变量名列表变量名列表 ;struct 结构类型名结构类型名 变量名列表变量名列表 ;程序设计基础程序设计基础struct DateType/定义结构体类型定义结构体类型struct DateType int year, month, day ; ; struct DateType birthday ; /定义结构体变量定义结构体变量birthday10.2 不同类型数据的组织不同类型数据的组织结构体类型结构体类型结构体变量的定义和初始化结构体变量的定义和初始化struct DateType int year, month, day

27、; birthday ; /在定义结构体类型的同时定义结构体变量在定义结构体类型的同时定义结构体变量birthday birthday.month birthday.day结构变量结构变量birthday birthday.year&birthday.year &birthday.year &birthday.year 程序设计基础程序设计基础10.2 不同类型数据的组织不同类型数据的组织结构体类型结构体类型2. 结构体变量的引用结构体变量的引用 【语法语法】引用结构体变量的一般形式如下:引用结构体变量的一般形式如下: 结构体变量的定义和初始化结构体变量的定义和初始化【语义语义】引用结构体变量

28、中的某个成员。引用结构体变量中的某个成员。 结构变量名结构变量名. 成员名成员名成员运算符程序设计基础程序设计基础10.2 不同类型数据的组织不同类型数据的组织结构体类型结构体类型3. 结构体变量的初始化结构体变量的初始化【语法语法】初始化结构体变量的一般形式如下:初始化结构体变量的一般形式如下: 结构体变量的定义和初始化结构体变量的定义和初始化【语义语义】为结构体变量初始化。为结构体变量初始化。struct 结构体类型名结构体类型名 变量名变量名 = 成员成员1的初值,的初值,成员,成员n的初值的初值 ;初值列表初值列表struct 结构体类型名结构体类型名声明成员类型声明成员类型 变量名变

29、量名 = 成员成员1的初值,的初值,成员,成员n的初值的初值 ;初值列表初值列表程序设计基础程序设计基础struct DateType int year ; int month ; int day ;struct DateType birthday = 1968, 3, 26 ;struct DateType int year ; int month ; int day ; birthday = 1968, 3, 26 ;10.2 不同类型数据的组织不同类型数据的组织结构体类型结构体类型结构体变量的定义和初始化结构体变量的定义和初始化程序设计基础程序设计基础10.2 不同类型数据的组织不同类型

30、数据的组织结构体类型结构体类型1. 输入输入/输出操作输出操作在在C语言中,结构体变量不能作为语言中,结构体变量不能作为scanf函数和函数和printf函数的实函数的实参,换言之,不能整体读入一个结构体变量,也不能整体输参,换言之,不能整体读入一个结构体变量,也不能整体输出一个结构体变量,只能对结构体变量的各个成员进行输入出一个结构体变量,只能对结构体变量的各个成员进行输入/输出操作。输出操作。 结构体变量的操作结构体变量的操作struct DateType birthday ;scanf (%d%d%d, &birthday.year, &birthday.month, &birthday

31、.day ) ;printf(%d-%d-%d, birthday.year, birthday.month, birthday.day ) ;程序设计基础程序设计基础10.2 不同类型数据的组织不同类型数据的组织结构体类型结构体类型2. 赋值操作:赋值操作:在程序中为其各个成员逐一赋值,但不能整体赋值。在程序中为其各个成员逐一赋值,但不能整体赋值。 如果两个结构体变量的类型相同,程序中可以进行整体赋值如果两个结构体变量的类型相同,程序中可以进行整体赋值 结构体变量的操作结构体变量的操作struct DateType birthday ;birthday.year = 1968 ;birthd

32、ay.month = 3 ;birthday.day = 26 ;struct DateType birthday1 = 1997, 1, 4, birthday2 ;birthday2 = birthday1 ;struct DateType birthday ;birthday = 1997, 1, 4;程序设计基础程序设计基础10.2 不同类型数据的组织不同类型数据的组织结构体类型结构体类型3. 其他操作:其他操作:C/C+语言没有定义施加于结构体类型上的运算,语言没有定义施加于结构体类型上的运算,对结构体变量的操作是通过对其成员的操作实现的。对结构体变量的操作是通过对其成员的操作实现的

33、。本质上,结构体变量的成员是一个简单变量,因此,本质上,结构体变量的成员是一个简单变量,因此,其成员的使用方法与同类型简单变量的使用方法相同。其成员的使用方法与同类型简单变量的使用方法相同。例如,如下对结构体变量的操作都是正确的例如,如下对结构体变量的操作都是正确的 结构体变量的操作结构体变量的操作struct DateType birthday1 = 1968, 3, 26, birthday2;int year;birthday2.year = 1963;year = birthday1.year - birthday2.year; /两个结构体变量相差的年数两个结构体变量相差的年数程序设

34、计基础程序设计基础10.2 不同类型数据的组织不同类型数据的组织结构体类型结构体类型例例10.6 将输入的日期按下列格式之一输出。将输入的日期按下列格式之一输出。 1. 中文(中国)格式中文(中国)格式 2. 中文(台湾)格式中文(台湾)格式n)3. 英语(美国)格式英语(美国)格式 4. 英语(英国)格式英语(英国)格式n 函数定义:函数定义:void Print(struct DateType date) ;函数调用:函数调用:Print(&birthday) ;参数结合过程相当于:参数结合过程相当于:struct DateType date = birthday ;程序设计基础程序设计基

35、础2 #include 3 struct DateType 4 5 int year ;6 int month ;7 int day ;8 ;9 10 int main( )11 12 struct DateType date ; 13 int select;14 printf(请分别输入一个日期的年、月、日:请分别输入一个日期的年、月、日:) ;15 scanf(%d%d%d, &date.year, &date.month, &date.day); 16 printf(1. 中文(中国)格式中文(中国)格式 2. 中文(台湾)格式中文(台湾)格式n) ;17 printf(3. 英语(美国

36、)格式英语(美国)格式 4. 英语(英国)格式英语(英国)格式n) ;18 printf(5. 其他格式其他格式n请输入对应数字:请输入对应数字:n) ; 10.2 不同类型数据的组织不同类型数据的组织结构体类型结构体类型程序设计基础程序设计基础19 scanf(%d, &select) ;20 switch (select) 21 22 case 1: printf(中国格式:中国格式:%d-%d-%dn, date.year, date.month, date.day) ; 23 break ;24 case 2: printf(台湾格式:台湾格式:%d/%d/%dn, date.year

37、, date.month, date.day) ; 25 break ;26 case 3: printf(美国格式:美国格式:%2d/%2d/%dn, date.month, date.day, date.year) ; 27 break ;28 case 4: printf(英国格式:英国格式:%2d/%2d/%dn, date.day, date.month, date.year) ; 29 break ;30 default: printf(其他格式:其他格式:%d-%d-%dn, date.year, date.month, date.day) ;31 break ;32 33 re

38、turn 0 ; 34 10.2 不同类型数据的组织不同类型数据的组织结构体类型结构体类型程序设计基础程序设计基础解决任务解决任务10.210.2的程序的程序2 #include 3 struct StudentType 4 5 char no10 ; 6 char name10 ; 7 double foreign ;8 double spec1 ;9 double spec2 ;10 ;11 12 int main( )13 14 struct StudentType stu; 15 double sum;程序设计基础程序设计基础解决任务解决任务10.210.2的程序的程序16 print

39、f(请输入考生考号:请输入考生考号:); 17 scanf(%s, stu.no); 18 printf(请输入考生姓名:请输入考生姓名:); 19 scanf(%s, ); 20 printf(请输入考生外语成绩:请输入考生外语成绩:); 21 scanf(%lf, &stu.foreign);22 printf(请输入专业课请输入专业课1成绩:成绩:); 23 scanf(%lf, &stu.spec1);24 printf(请输入专业课请输入专业课2成绩:成绩:); 25 scanf(%lf, &stu.spec2);26 sum = stu.foreign + stu.

40、spec1 + stu.spec2;27 printf(%s的总分是的总分是%5.1fn, , sum);28 return 0; 29 程序设计基础程序设计基础【任务【任务10.3】入学考试成绩管理入学考试成绩管理 【问题问题】某重点大学的博士入学考试科目为外语和两门专业课,某重点大学的博士入学考试科目为外语和两门专业课,对于每个考生,输入各科考试成绩,计算总分。对于每个考生,输入各科考试成绩,计算总分。【想法想法】定义结构体数组存放全体考生的入学成绩,统计每个定义结构体数组存放全体考生的入学成绩,统计每个考生的总分并存入相应数组单元。考生的总分并存入相应数组单元。如何表示和

41、处理结构体数组?如何表示和处理结构体数组?程序设计基础程序设计基础9.3 批量不同类型数据的组织批量不同类型数据的组织结构体数组结构体数组 结构体数组与二维表数据的对应关系stud0stud1stud499结构体类型数组长度考考 号号姓姓 名名外外 语语专业课一专业课一专业课二专业课二0001陆 宇8767880002李 明6885780003汤晓影526573数组元素的类型可以是任意合法的数据类型,如果数组元素数组元素的类型可以是任意合法的数据类型,如果数组元素的类型是结构体类型,这种数组称为的类型是结构体类型,这种数组称为结构体数组结构体数组。 程序设计基础程序设计基础9.3 批量不同类型

42、数据的组织批量不同类型数据的组织结构体数组结构体数组1. 结构体数组的定义结构体数组的定义 【语法语法】声明结构体数组的一般形式如下:声明结构体数组的一般形式如下: 结构体变量的声明和初始化结构体变量的声明和初始化【语义语义】声明结构体数组变量,并分配存储空间。声明结构体数组变量,并分配存储空间。struct 结构体类型名结构体类型名 数组变量名数组变量名数组长度数组长度 ;struct 结构体类型名结构体类型名成员列表成员列表 数组变量名数组变量名数组长度数组长度 ;程序设计基础程序设计基础struct StudentType char no10 ; char name10 ; double

43、 foreign ; double spec1 ; double spec2 ; ;struct StudentType stud500 ;9.3 批量不同类型数据的组织批量不同类型数据的组织结构体数组结构体数组结构体变量的声明和初始化结构体变量的声明和初始化nonameforeignspec1spec2stud0stud499nonameforeignspec1spec2程序设计基础程序设计基础10.3 批量不同类型数据的组织批量不同类型数据的组织结构体数组结构体数组2. 结构体数组的引用结构体数组的引用【语法语法】引用结构体数组的一般形式如下:引用结构体数组的一般形式如下: 结构体变量的声

44、明和初始化结构体变量的声明和初始化【语义语义】引用结构体数组的具体成员。引用结构体数组的具体成员。 结构体数组名结构体数组名下标下标.成员名成员名数组数组元素即结构体结构体的具体成员程序设计基础程序设计基础10.3 批量不同类型数据的组织批量不同类型数据的组织结构体数组结构体数组3. 结构体数组的初始化结构体数组的初始化【语法语法】初始化结构体数组的一般形式如下:初始化结构体数组的一般形式如下: 结构体变量的声明和初始化结构体变量的声明和初始化【语义语义】为结构体数组初始化。为结构体数组初始化。struct 结构体类型名结构体类型名 数组变量名数组变量名数组长度数组长度 = 初值表初值表, ,

45、 初值表初值表;struct 结构体类型名结构体类型名 成员列表成员列表 数组变量名数组变量名数组长度数组长度 = 初值表初值表, , 初值表初值表;程序设计基础程序设计基础struct StudentType stud500 =0001, 陆陆 宇宇, 87, 67, 88, 0002, 李李 明明, 68, 85, 78, 0003, 汤晓影汤晓影, 52, 65, 73 ; /注意以分号结尾注意以分号结尾10.3 批量不同类型数据的组织批量不同类型数据的组织结构体数组结构体数组结构体变量的声明和初始化结构体变量的声明和初始化struct StudentTypechar no10 ;cha

46、r name10 ;double foreign ;double spec1 ;double spec2 ; stud500 =0001, 陆陆 宇宇, 87, 67, 88, 0002, 李李 明明, 68, 85, 78, 0003, 汤晓影汤晓影, 52, 65, 73 ; /注意以分号结尾注意以分号结尾程序设计基础程序设计基础解决任务解决任务10.3的程序的程序 1 #include2 const int N=2;3 struct StudentType4 5 char no10 ;6 char name10 ;7 double foreign ;8 double spec1 ;9 double spec2 ;10 double total ;11 ;12 void InputMarks(struct StudentType stu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论