C语言程序设计C语言程序设计-9课件_第1页
C语言程序设计C语言程序设计-9课件_第2页
C语言程序设计C语言程序设计-9课件_第3页
C语言程序设计C语言程序设计-9课件_第4页
C语言程序设计C语言程序设计-9课件_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计C语言程序设计1项目五旅游小帮手要求:定义country结构体,包含地理位置、最高温度、最低温度、代表景观等信息,用户输入温度范围,给出旅游建议,并提示它的代表景观。解决问题需要的知识点:1、结构体的定义;2、结构体的引用。项目五旅游小帮手要求:解决问题需要的知识点:2结构体共用体项目五旅游小帮手

任务1:旅游建议小助手

——

第9章结构体与共用体章节主要内容9.1结构体9.2共用体9.3枚举9.4用户定义类型结构体项目五旅游小帮手章节主要内容349.1结构体结构体是一种构造数据类型。用途:将描述同一事物不同特征的数据构造成一个整体数据类型-------自定义数据类型。什么是结构体?49.1结构体结构体是一种构造数据类型。什么是结构体?5结构体示例解析:学生的基本情况:字段学号姓名性别籍贯分数类型longcharcharcharfloat实例20057345王晓女合肥80.5要使用这类具体的数据必须先定义结构体类型,其中各个数据成为结构体类型的成员项。5结构体示例解析:学生的基本情况:字段学号姓名性别籍贯分数类69.1.1结构体类型定义

由用户定义结构体类型的名字;在定义的结构体类型中,各个成员项的名字和类型。一般形式为:struct

结构体名{

类型标识符成员名;类型标识符成员名;

…………….};例:struct

student{longiNum;charchpName[20];charchSex;intiAge;charchAddress[30];floatfScore;};69.1.1结构体类型定义由用户定义结构体类7形式一:先定义结构体类型,然后说明结构体变量9.1.2结构体变量的说明struct结构体名{

类型标识符成员名;类型标识符成员名;

…………….};struct结构体名

变量名表列;7形式一:先定义结构体类型,然后说明结构体变量9.1.28形式二:定义结构体类型的同时定义结构体变量struct结构体名{

类型标识符成员名;类型标识符成员名;

…………….}变量名表列;8形式二:定义结构体类型的同时定义结构体变量struct结9形式三:直接通过无名结构体定义结构体变量struct{

类型标识符成员名;类型标识符成员名;

…………….}变量名表列;9形式三:直接通过无名结构体定义结构体变量struct10说明:结构体类型与结构体变量概念不同类型:不分配内存;变量:分配内存类型:不能赋值、存取、运算;变量:可以结构体结构体的成员项可以是各种类型的变量,包括已定义好的结构体变量结构体成员名与程序中变量名可相同,不会混淆结构体类型及变量的作用域与生存期10说明:11形式一:struct结构体名{

类型标识符成员名;类型标识符成员名;

…………….};struct结构体名结构体变量={初始数据};9.1.3结构体变量的初始化11形式一:struct结构体名9.1.3结构体变量的12形式二:struct结构体名{

类型标识符成员名;类型标识符成员名;

…………….}结构体变量={初始数据};12形式二:struct结构体名13形式三:struct{

类型标识符成员名;类型标识符成员名;

…………….}结构体变量={初始数据};13形式三:struct14引用方式:结构体变量名.成员名9.1.4结构体变量的引用引用规则结构体变量不能整体引用,只能引用变量成员(函数参数以及函数返回值除外)结构体变量的各个成员项,具有同类型变量的一切特征可以将一个结构体变量赋值给另一个结构体变量结构体嵌套时逐级引用14引用方式:结构体变量名.成员名9.1.4结构体变15结构体数组的定义一般形式:struct结构体名结构体数组名[整型常量表达式];9.1.5结构体数组15结构体数组的定义9.1.5结构体数组16指向结构体变量的指针,称为结构体指针。定义形式:

struct结构体名*结构体指针名;9.1.6结构体指针16指向结构体变量的指针,称为结构体指针。9.1.6结构体17

结构体变量或结构体指针可以作为函数的参数或函数的返回值,这时结构体变量可以整体引用结构体与函数参数用结构体变量的成员作参数----值传递用指向结构体变量或结构体数组的指针作参数----地址传递用结构体变量作参数----多值传递,效率低9.1.7结构体与函数17结构体变量或结构体指针可以作为函数的参数或链表的概念:由若干组数据(称结点)组成,前一结点“指向”下一个结点,即欲找某结点必须先找到它的前一结点。一种动态分配内存的数据组织方式。该方式允许用户根据需要随时增减数据项,而且,数据项在内存中不必连续。

9.1.8链表链表的概念:9.1.8链表18结构体共用体项目五旅游小帮手

任务1:旅游建议小助手

——

第9章结构体与共用体章节主要内容9.1结构体9.2共用体9.3枚举9.4用户定义类型结构体项目五旅游小帮手章节主要内容1920共用体是构造数据类型,也叫联合体用途:使几个不同类型的变量共占一段内存(相互覆盖)9.2共用体20共用体是构造数据类型,也叫联合体9.2共用体21定义形式:union

共用体名{

类型标识符成员名;类型标识符成员名;

…………….};9.2.1共用体类型定义21定义形式:union共用体名9.2.1共用体类型定9.2.2共用体变量定义形式二:unionexam{inta;floatb;charc;}x,*px,d[5];形式一:unionexam{inta;flortb;charc;};uniondatax,y;形式三:union{inta;flortb;charc;}x,y,*px,*py,ar[10];xy共用体变量定义分配内存,长度=最长成员所占字节数共用体变量任何时刻只有一个成员存在9.2.2共用体变量定义形式二:形式一:形式三:xy共用体229.2.3共用体变量引用引用方式和规则:不能引用共用体变量,只能引用其成员共用体变量中起作用的成员是最后一次存放的成员不能在定义共用体变量时初始化可以用一个共用体变量为另一个变量赋值9.2.3共用体变量引用引用方式和规则:不能引用共用体变量23结构体共用体项目五旅游小帮手

任务1:旅游建议小助手

——

第9章结构体与共用体章节主要内容9.1结构体9.2共用体9.3枚举9.4用户定义类型结构体项目五旅游小帮手章节主要内容24259.3枚举C语言提供了一种称为“枚举”的类型。说明一类变量的取值范围被限定在这个类型说明的范围内。259.3枚举C语言提供了一种称为“枚举”的类型。269.3.1枚举类型的定义枚举类型通过列举一序列有限的标识符来定义。

一般形式为:

enum

枚举类型名{枚举元素表};例如:enumweekday{sun,mon,tue,wed,thu,fri,sat};

枚举元素表反映了该枚举类型的变量所取值的集合。枚举元素如果不给值,自动取0~n-1整数值(n是枚举元素个数),如例中的sun是0,mon是1,…sat是6;在定义枚元素表时,可以对某个枚举元素赋值,其后元素的值将按顺序自动加一递增。269.3.1枚举类型的定义枚举类型通过列举一序列有限的27说明:enum是关键字(enumerable),标识枚举类型。花括号内均是用户标识符是枚举类型的元素。定义的只是数据类型,不是变量。列举的元素只是一些符号。并不自动代表什么含义,在程序中代表什么含义,完全由程序员确定。所有元素都是常量,不能被改变。系统为其分配值,即它们在列表中的顺序号(从0开始,且在定义时可赋顺序号的值)。名称、元素和元素顺序之一不同的枚举类型,都认为是不同的枚举类型。27说明:289.3.2枚举变量的说明⒈先定义后说明

enumweekday{sun,mon,tue,wed,thu,fri,sat};

enumweekdayworkday,week_end;⒉同时定义说明

enumweekday{sun,mon,tue,wed,thu,fri,sat}

workday,week_end;

⒊直接说明

enum

{sun,mon,tue,wed,thu,fri,sat}workday,week_end;289.3.2枚举变量的说明⒈先定义后说明299.3.3枚举变量的引用同普通变量,但其值只能取相应枚举元素。枚举类型数据不是字符串,C语言也没有提供枚举类型数据的格式控制,不能直接输入输出。输入输出多采用switch…case语句。枚举元素是常量,不是变量,不能在程序中用赋值语句再对它赋值。例如对枚举类型day的元素再作以下赋值:mon=2;是错误的。只能把枚举元素名赋给枚举变量,不能把元素对应的数值直接赋给枚举变量。如:day1=mon;是正确的。而day1=1是错误的。如果要赋枚举元素的对应的值可以通过强制类型转换,如:day1=(enumweekday)1赋值。299.3.3枚举变量的引用同普通变量,但其值只能取相应枚30功能:用自定义名字为已有数据类型命名类型定义typedef原数据类型名

用户定义的类型名;9.4用户定义类型30功能:用自定义名字为已有数据类型命名9.4用户定义类型319.4.1基本类型定义int是整型变量的类型说明符。int的完整写法为integer,为了增加程序的可读性,可把整型说明符用typedef定义为INTEGER型;步骤:按定义变量方法先写出定义体如:inti;将变量名换成新类型名

如:

intINTEGER;最前面加typedef

如:

typedefintINTEGER;用新类型名定义变量

如:

INTEGERi,j;319.4.1基本类型定义int是整型变量的类型说明符。in329.4.2数组类型定义用typedef定义数组类型,可以使程序书写简单,而且使意义更为明确,因而增强了程序的可读性。步骤:例定义数组类型

chara[100];charNAME[100];typedefcharNAME[100];NAMEa,b,c;chara[100],b[100],c[100];329.4.2数组类型定义用typedef定义数组类型,可339.4.3结构类型定义例:定义结构体类型

structdata{longnum;floatscore;}d;例:定义结构体类型

structdata{longnum;floatscore;}PERSONDOC;例:定义结构体类型typedefstructdata{longnum;floatscore;}PERSONDOC;例:定义结构体类型

PERSONDOCa,b,*p;structdata{longnum;floatscore;}a,b,*p;339.4.3结构类型定义例:定义结构体类型例:定349.4.4指针类型定义例:定义指针类型

char*str;char*STRING;typedefchar*STRING;STRINGp,s[10];char*p;

char*s[10];例:typedefstructclub

structdata{longnum;floatscore;}PERSONDOC;typedefPERSONDOC*PG;PGpb;PERSONDOC*pb;structclub*pb;PERSONDOC为结构体类型PG为指向PERSONDOC的指针类型

在用户定义类型中用户定义的类型名一般用大写表示,以便于区别。349.4.4指针类型定义例:定义指针类型c第9章结构体与共用体——总结结构体(结构体的定义、说明、初始化、引用、链表);共用体(共用体的定义、说明、引用)、枚举(定义、说明、引用);用户定义类型(基本类型、数组类型、结构类型)。结构体(结构体的定义、说明、初始化、引用、链表);共用体(共用体的定义、说明、引用)、枚举(定义、说明、引用)。内容总结知识点重难点语言基础第9章结构体与共用体——总结结构体(结构体的定义、说明、初35C语言程序设计C语言程序设计36项目五旅游小帮手要求:定义country结构体,包含地理位置、最高温度、最低温度、代表景观等信息,用户输入温度范围,给出旅游建议,并提示它的代表景观。解决问题需要的知识点:1、结构体的定义;2、结构体的引用。项目五旅游小帮手要求:解决问题需要的知识点:37结构体共用体项目五旅游小帮手

任务1:旅游建议小助手

——

第9章结构体与共用体章节主要内容9.1结构体9.2共用体9.3枚举9.4用户定义类型结构体项目五旅游小帮手章节主要内容38399.1结构体结构体是一种构造数据类型。用途:将描述同一事物不同特征的数据构造成一个整体数据类型-------自定义数据类型。什么是结构体?49.1结构体结构体是一种构造数据类型。什么是结构体?40结构体示例解析:学生的基本情况:字段学号姓名性别籍贯分数类型longcharcharcharfloat实例20057345王晓女合肥80.5要使用这类具体的数据必须先定义结构体类型,其中各个数据成为结构体类型的成员项。5结构体示例解析:学生的基本情况:字段学号姓名性别籍贯分数类419.1.1结构体类型定义

由用户定义结构体类型的名字;在定义的结构体类型中,各个成员项的名字和类型。一般形式为:struct

结构体名{

类型标识符成员名;类型标识符成员名;

…………….};例:struct

student{longiNum;charchpName[20];charchSex;intiAge;charchAddress[30];floatfScore;};69.1.1结构体类型定义由用户定义结构体类42形式一:先定义结构体类型,然后说明结构体变量9.1.2结构体变量的说明struct结构体名{

类型标识符成员名;类型标识符成员名;

…………….};struct结构体名

变量名表列;7形式一:先定义结构体类型,然后说明结构体变量9.1.243形式二:定义结构体类型的同时定义结构体变量struct结构体名{

类型标识符成员名;类型标识符成员名;

…………….}变量名表列;8形式二:定义结构体类型的同时定义结构体变量struct结44形式三:直接通过无名结构体定义结构体变量struct{

类型标识符成员名;类型标识符成员名;

…………….}变量名表列;9形式三:直接通过无名结构体定义结构体变量struct45说明:结构体类型与结构体变量概念不同类型:不分配内存;变量:分配内存类型:不能赋值、存取、运算;变量:可以结构体结构体的成员项可以是各种类型的变量,包括已定义好的结构体变量结构体成员名与程序中变量名可相同,不会混淆结构体类型及变量的作用域与生存期10说明:46形式一:struct结构体名{

类型标识符成员名;类型标识符成员名;

…………….};struct结构体名结构体变量={初始数据};9.1.3结构体变量的初始化11形式一:struct结构体名9.1.3结构体变量的47形式二:struct结构体名{

类型标识符成员名;类型标识符成员名;

…………….}结构体变量={初始数据};12形式二:struct结构体名48形式三:struct{

类型标识符成员名;类型标识符成员名;

…………….}结构体变量={初始数据};13形式三:struct49引用方式:结构体变量名.成员名9.1.4结构体变量的引用引用规则结构体变量不能整体引用,只能引用变量成员(函数参数以及函数返回值除外)结构体变量的各个成员项,具有同类型变量的一切特征可以将一个结构体变量赋值给另一个结构体变量结构体嵌套时逐级引用14引用方式:结构体变量名.成员名9.1.4结构体变50结构体数组的定义一般形式:struct结构体名结构体数组名[整型常量表达式];9.1.5结构体数组15结构体数组的定义9.1.5结构体数组51指向结构体变量的指针,称为结构体指针。定义形式:

struct结构体名*结构体指针名;9.1.6结构体指针16指向结构体变量的指针,称为结构体指针。9.1.6结构体52

结构体变量或结构体指针可以作为函数的参数或函数的返回值,这时结构体变量可以整体引用结构体与函数参数用结构体变量的成员作参数----值传递用指向结构体变量或结构体数组的指针作参数----地址传递用结构体变量作参数----多值传递,效率低9.1.7结构体与函数17结构体变量或结构体指针可以作为函数的参数或链表的概念:由若干组数据(称结点)组成,前一结点“指向”下一个结点,即欲找某结点必须先找到它的前一结点。一种动态分配内存的数据组织方式。该方式允许用户根据需要随时增减数据项,而且,数据项在内存中不必连续。

9.1.8链表链表的概念:9.1.8链表53结构体共用体项目五旅游小帮手

任务1:旅游建议小助手

——

第9章结构体与共用体章节主要内容9.1结构体9.2共用体9.3枚举9.4用户定义类型结构体项目五旅游小帮手章节主要内容5455共用体是构造数据类型,也叫联合体用途:使几个不同类型的变量共占一段内存(相互覆盖)9.2共用体20共用体是构造数据类型,也叫联合体9.2共用体56定义形式:union

共用体名{

类型标识符成员名;类型标识符成员名;

…………….};9.2.1共用体类型定义21定义形式:union共用体名9.2.1共用体类型定9.2.2共用体变量定义形式二:unionexam{inta;floatb;charc;}x,*px,d[5];形式一:unionexam{inta;flortb;charc;};uniondatax,y;形式三:union{inta;flortb;charc;}x,y,*px,*py,ar[10];xy共用体变量定义分配内存,长度=最长成员所占字节数共用体变量任何时刻只有一个成员存在9.2.2共用体变量定义形式二:形式一:形式三:xy共用体579.2.3共用体变量引用引用方式和规则:不能引用共用体变量,只能引用其成员共用体变量中起作用的成员是最后一次存放的成员不能在定义共用体变量时初始化可以用一个共用体变量为另一个变量赋值9.2.3共用体变量引用引用方式和规则:不能引用共用体变量58结构体共用体项目五旅游小帮手

任务1:旅游建议小助手

——

第9章结构体与共用体章节主要内容9.1结构体9.2共用体9.3枚举9.4用户定义类型结构体项目五旅游小帮手章节主要内容59609.3枚举C语言提供了一种称为“枚举”的类型。说明一类变量的取值范围被限定在这个类型说明的范围内。259.3枚举C语言提供了一种称为“枚举”的类型。619.3.1枚举类型的定义枚举类型通过列举一序列有限的标识符来定义。

一般形式为:

enum

枚举类型名{枚举元素表};例如:enumweekday{sun,mon,tue,wed,thu,fri,sat};

枚举元素表反映了该枚举类型的变量所取值的集合。枚举元素如果不给值,自动取0~n-1整数值(n是枚举元素个数),如例中的sun是0,mon是1,…sat是6;在定义枚元素表时,可以对某个枚举元素赋值,其后元素的值将按顺序自动加一递增。269.3.1枚举类型的定义枚举类型通过列举一序列有限的62说明:enum是关键字(enumerable),标识枚举类型。花括号内均是用户标识符是枚举类型的元素。定义的只是数据类型,不是变量。列举的元素只是一些符号。并不自动代表什么含义,在程序中代表什么含义,完全由程序员确定。所有元素都是常量,不能被改变。系统为其分配值,即它们在列表中的顺序号(从0开始,且在定义时可赋顺序号的值)。名称、元素和元素顺序之一不同的枚举类型,都认为是不同的枚举类型。27说明:639.3.2枚举变量的说明⒈先定义后说明

enumweekday{sun,mon,tue,wed,thu,fri,sat};

enumweekdayworkday,week_end;⒉同时定义说明

enumweekday{sun,mon,tue,wed,thu,fri,sat}

workday,week_end;

⒊直接说明

enum

{sun,mon,tue,wed,thu,fri,sat}workday,week_end;289.3.2枚举变量的说明⒈先定义后说明649.3.3枚举变量的引用同普通变量,但其值只能取相应枚举元素。枚举类型数据不是字符串,C语言也没有提供枚举类型数据的格式控制,不能直接输入输出。输入输出多采用switch…case语句。枚举元素是常量,不是变量,不能在程序中用赋值语句再对它赋值。例如对枚举类型day的元素再作以下赋值:mon=2;是错误的。只能把枚举元素名赋给枚举变量,不能把元素对应的数值直接赋给枚举变量。如:day1=mon;是正确的。而day1=1是错误的。如果要赋枚举元素的对应的值可以通过强制类型转换,如:day1=(enumweekday)1赋值。299.3.3枚举变量的引用同普通变量,但其值只能取相应枚65功能:用自定义名字为已有数据类型命名类型定义typedef原数据类型名

用户定义的类型名;9.4用户定义类型30功能:用自定义名字为已有数据类型命名9.4用户定义类型669.4.1基本类型定义int是整型变量的类型说明符。int的完整写法为integer,为了增加程序的可读性,可把整型说明符用typedef定义为INTEGER型;步骤:按定义变量方法先写出定义体如:inti;将变量名换成新类型名

如:

intINTEGER;最前面加typedef

如:

typedefintINTEGER;用新类型名定义变量

如:

INTEGERi,j;319.4.1基本类型定义int是整型变量的类型说明符。in

温馨提示

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

评论

0/150

提交评论