c语言数组的改变.ppt
《c语言数组的改变.ppt》由会员分享,可在线阅读,更多相关《c语言数组的改变.ppt(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1构造数据类型构造数据类型 内容提示内容提示关键词关键词 结构体结构体 共用体共用体 枚举枚举 位段位段 自定义类型自定义类型2从基本数据类型、复合数据类型到抽象数据类型从基本数据类型、复合数据类型到抽象数据类型从基本数据类型、复合数据类型到抽象数据类型从基本数据类型、复合数据类型到抽象数据类型 高级语言设计了基本数据类型:整型、高级语言设计了基本数据类型:整型、高级语言设计了基本数据类型:整型、高级语言设计了基本数据类型:整型、浮点型、字符型等。浮点型、字符型等。浮点型、字符型等。浮点型、字符型等。基本数据类型并不能方便地解决所有问基本数据类型并不能方便地解决所有问基本数据类型并不能方便地解
2、决所有问基本数据类型并不能方便地解决所有问题。题。题。题。复合数据类型是基本数据类型迭代派生复合数据类型是基本数据类型迭代派生复合数据类型是基本数据类型迭代派生复合数据类型是基本数据类型迭代派生而来。而来。而来。而来。典型的代表就是典型的代表就是典型的代表就是典型的代表就是“结构结构结构结构”,数组、指针,数组、指针,数组、指针,数组、指针也可算作此类。也可算作此类。也可算作此类。也可算作此类。3思考一个问题思考一个问题 在程序里表示一个人(姓名、年龄、性别、在程序里表示一个人(姓名、年龄、性别、在程序里表示一个人(姓名、年龄、性别、在程序里表示一个人(姓名、年龄、性别、),怎么表示?),怎么
3、表示?),怎么表示?),怎么表示?想表示多个人呢?想表示多个人呢?想表示多个人呢?想表示多个人呢?如何用计算机程序实现下述表格的管理?如何用计算机程序实现下述表格的管理?如何用计算机程序实现下述表格的管理?如何用计算机程序实现下述表格的管理?某学校学生成绩管理表某学校学生成绩管理表4数组的解决方法数组的解决方法int int studentId30;studentId30;/*/*最多可以管理最多可以管理最多可以管理最多可以管理3030个学生个学生个学生个学生,每个学每个学每个学每个学生的学号用数组的下标表示生的学号用数组的下标表示生的学号用数组的下标表示生的学号用数组的下标表示*/charc
4、har studentName3010;studentName3010;charchar studentSex302;studentSex302;int int timeOfEnter30;/*timeOfEnter30;/*入学时间用入学时间用入学时间用入学时间用intint表示表示表示表示*/int int scoreComputer30;/*scoreComputer30;/*计算机原理成绩计算机原理成绩计算机原理成绩计算机原理成绩*/int int scoreEnglish30;/*scoreEnglish30;/*英语课成绩英语课成绩英语课成绩英语课成绩*/5数组的解决方法数组的解决
5、方法int studentId30=1,2,3,4,5,6;int studentId30=1,2,3,4,5,6;charcharstudentName3010=studentName3010=令狐冲令狐冲令狐冲令狐冲,林平之林平之林平之林平之,岳灵珊岳灵珊岳灵珊岳灵珊,任莹莹任莹莹任莹莹任莹莹;charcharstudentSex302=studentSex302=男男男男,男男男男,女女女女,女女女女;int int timeOfEnter30=1999,1999,1999,1999;timeOfEnter30=1999,1999,1999,1999;int int scoreCompu
6、ter30=90,78,89,78;scoreComputer30=90,78,89,78;int int scoreEnglish30=83,92,72,95;scoreEnglish30=83,92,72,95;int int scoreMath30=72,88,98,87;scoreMath30=72,88,98,87;6数组的解决方法数组的解决方法数据的内存管理方式数据的内存管理方式 907889788392729572889887827866901234令狐冲令狐冲林平之林平之岳灵珊岳灵珊任莹莹任莹莹男男男男女女女女19991999199919997分配内存不集中,寻址效率不高分配内
7、存不集中,寻址效率不高 对数组进行赋值时,容易发生错位对数组进行赋值时,容易发生错位 结构显得比较零散,不容易管理结构显得比较零散,不容易管理 数组的解决方法数组的解决方法8希望的内存分配图希望的内存分配图 1令狐冲令狐冲男男1999908372822林平之林平之男男1999789288783岳灵珊岳灵珊女女1999897298664任莹莹任莹莹女女1999789587909结构体的解决方法结构体的解决方法struct STUDENT struct STUDENT struct STUDENT struct STUDENT int studentID;int studentID;int stu
8、dentID;int studentID;/*/*/*/*每个学生的序号每个学生的序号每个学生的序号每个学生的序号*/char studentName10;char studentName10;char studentName10;char studentName10;/*/*/*/*每个学生的姓名每个学生的姓名每个学生的姓名每个学生的姓名*/char studentSex4;char studentSex4;char studentSex4;char studentSex4;/*/*/*/*每个学生的性别每个学生的性别每个学生的性别每个学生的性别*/intintintinttimeOfEnt
9、er;timeOfEnter;timeOfEnter;timeOfEnter;/*/*/*/*每个学生每个学生每个学生每个学生的的的的入学时间入学时间入学时间入学时间*/intintintintscoreComputer;scoreComputer;scoreComputer;scoreComputer;/*/*/*/*每个学生的计算机原理成绩每个学生的计算机原理成绩每个学生的计算机原理成绩每个学生的计算机原理成绩*/intintintintscoreEnglish;scoreEnglish;scoreEnglish;scoreEnglish;/*/*/*/*每个学生的英语成绩每个学生的英语成
10、绩每个学生的英语成绩每个学生的英语成绩*/intintintintscoreMath;scoreMath;scoreMath;scoreMath;/*/*/*/*每个学生的数学成绩每个学生的数学成绩每个学生的数学成绩每个学生的数学成绩*/;10 struct STUDENT是一个数据类型 struct STUDENT students30;students0.studentSex它们都是变量,一般称为结构的成员变量struct STUDENT struct STUDENT struct STUDENT struct STUDENT int studentID;/*int studentID;/
11、*int studentID;/*int studentID;/*每个学生的序号每个学生的序号每个学生的序号每个学生的序号*/char studentName10;/*char studentName10;/*char studentName10;/*char studentName10;/*每个学生的姓名每个学生的姓名每个学生的姓名每个学生的姓名*/char studentSex4;/*char studentSex4;/*char studentSex4;/*char studentSex4;/*每个学生的性别每个学生的性别每个学生的性别每个学生的性别*/intintintinttimeO
12、fEnter;/*timeOfEnter;/*timeOfEnter;/*timeOfEnter;/*每个学生的入学时间每个学生的入学时间每个学生的入学时间每个学生的入学时间*/intintintintscoreComputer;/*scoreComputer;/*scoreComputer;/*scoreComputer;/*每个学生的计算机原理成绩每个学生的计算机原理成绩每个学生的计算机原理成绩每个学生的计算机原理成绩*/intintintintscoreEnglish;/*scoreEnglish;/*scoreEnglish;/*scoreEnglish;/*每个学生的英语成绩每个学生
13、的英语成绩每个学生的英语成绩每个学生的英语成绩*/intintintintscoreMath;scoreMath;scoreMath;scoreMath;/*/*/*/*每个学生的数学成绩每个学生的数学成绩每个学生的数学成绩每个学生的数学成绩*/;117.17.1 结构体结构体 结构体类型的定义结构体类型的定义结构体类型的定义结构体类型的定义 结构体是一种构造数据类型,它由若干成员组成。结构体是一种构造数据类型,它由若干成员组成。结构体是一种构造数据类型,它由若干成员组成。结构体是一种构造数据类型,它由若干成员组成。每一个成员既可以是一个基本数据类型也可以是每一个成员既可以是一个基本数据类型也
14、可以是每一个成员既可以是一个基本数据类型也可以是每一个成员既可以是一个基本数据类型也可以是一个构造数据类型。一个构造数据类型。一个构造数据类型。一个构造数据类型。struct 结构体名结构体名 类型类型1 成员成员1;类型类型2 成员成员2;.类型类型n 成员成员n;12结构体类型的定义结构体类型的定义结构体类型的定义结构体类型的定义struct studentchar cNum;char cName20;int nAge;char cSex;结构体关键字结构体关键字结构体名结构体名分号是结束标志,不能省略分号是结束标志,不能省略结构体的结构体的4 4个成员个成员7.1 结构体结构体 13st
15、ruct date int nYear;int nMonth;int nDay;struct student char cNum;char cName20;struct date dBirthday;struct student char cNum;char cName20;struct date int nYear,nMonth,nDay;dBirthday;7.1.1 结构体嵌套定义结构体嵌套定义等价14 结构体的定义只定义了数据结构体的定义只定义了数据的形式,即声明了一种复杂的数的形式,即声明了一种复杂的数据类型,并未生成任何变量。据类型,并未生成任何变量。157.1.2 结构体变量结构
16、体变量 (1)(1)结构体变量的定义结构体变量的定义结构体变量的定义结构体变量的定义 先定义结构体类型,再声明结构体变量。其一般形式为:先定义结构体类型,再声明结构体变量。其一般形式为:先定义结构体类型,再声明结构体变量。其一般形式为:先定义结构体类型,再声明结构体变量。其一般形式为:struct 结构体名结构体名 结构体变量名结构体变量名;struct student char cNum;char cName20;int nAge;char cSex;struct student sStu;16定义结构体类型的同时定义结构体变量。其一般形定义结构体类型的同时定义结构体变量。其一般形定义结构体
17、类型的同时定义结构体变量。其一般形定义结构体类型的同时定义结构体变量。其一般形式为:式为:式为:式为:如,如,如,如,struct studentstruct studentstruct studentstruct studentchar cNum;char cNum;char cNum;char cNum;char cName20;char cName20;char cName20;char cName20;int nAge;int nAge;int nAge;int nAge;char cSex;char cSex;char cSex;char cSex;sStu;sStu;sStu;sS
18、tu;struct 结构体名结构体名 成员列表成员列表变量列表变量列表;17直接定义无结构名的结构体类型变量直接定义无结构名的结构体类型变量直接定义无结构名的结构体类型变量直接定义无结构名的结构体类型变量 如,如,如,如,struct struct char cNum;char cNum;char cName20;char cName20;int nAge;int nAge;char cSex;char cSex;sStu;sStu;struct 成员列表成员列表变量列表变量列表;18(2)结构体变量的初始化结构体变量的初始化以上三种方式声明结构体变量的同时都可以以上三种方式声明结构体变量的同
19、时都可以进行初始化。初始化方式为:将所赋初值按进行初始化。初始化方式为:将所赋初值按顺序放在一对大括号内,下面以第一种定义顺序放在一对大括号内,下面以第一种定义结构体变量的方式为例来说明初始化问题。结构体变量的方式为例来说明初始化问题。如,如,struct studentstruct studentchar cNum;char cNum;char cName20;char cName20;int nAge;int nAge;char cSex;char cSex;struct student sStu=1,Zhanghua,20,M;struct student sStu=1,Zhanghua
20、,20,M;注意注意(1)如下初始化形式是非法的。如下初始化形式是非法的。struct student sStu;sStu=0501,Zhao lin,20,M;(2)所赋初值与各成员数据类型要所赋初值与各成员数据类型要匹配或兼容。匹配或兼容。19(3)(3)结构体变量成员的引用结构体变量成员的引用 结构体变量成员的引用形式如下:结构体变量成员的引用形式如下:结构体变量成员的引用形式如下:结构体变量成员的引用形式如下:结构体变量名结构体变量名结构体变量名结构体变量名.成员名成员名成员名成员名 实心点实心点实心点实心点“.”.”.”.”称为成员运算符。称为成员运算符。称为成员运算符。称为成员运算
21、符。例如:例如:例如:例如:sStu.cNum sStu.cNamesStu.cNum sStu.cNamesStu.cNum sStu.cNamesStu.cNum sStu.cName 20 例例例例7-17-17-17-1定义并初始化学生结构体变量,然后输出变量定义并初始化学生结构体变量,然后输出变量定义并初始化学生结构体变量,然后输出变量定义并初始化学生结构体变量,然后输出变量的各成员值。的各成员值。的各成员值。的各成员值。#includestruct studentchar*pcNum;char*pcName;char cSex;struct dateint nYear,nMonth
22、,nDay;dBirth;float fScore;sStu1=0804101,Mr.Zhang,M,1979,9,1,80,sStu2;21void main()sStu2=sStu1;/*同类型的结构体变量之间进行赋值运算*/printf(Number=%sn,sStu2.pcNum);printf(Name=%sn,sStu2.pcName);printf(Born=%d年年,);printf(%d月月,sStu2.dBirth.nMonth);printf(%d日日n);printf(Sex=%cn,sStu2.cSex);printf(Score=%.1fn,sStu2.fScore
23、);22结构体数组结构体数组 在实际应用中,经常用结构体数组来表示具有相同数据在实际应用中,经常用结构体数组来表示具有相同数据在实际应用中,经常用结构体数组来表示具有相同数据在实际应用中,经常用结构体数组来表示具有相同数据结构的一个群体。结构的一个群体。结构的一个群体。结构的一个群体。如,如,如,如,struct studentstruct student char*pcNum;char*pcNum;char*pcName;char*pcName;char cSex;char cSex;struct datestruct dateint nYear,nMonth,nDay;int nYear,
24、nMonth,nDay;dBirth;dBirth;float fScore;float fScore;结构体数组结构体数组结构体数组结构体数组sStusStu,共有,共有,共有,共有5 5个元素:个元素:个元素:个元素:sStu0sStu4sStu0sStu4。在声明的时候还完成了对数组的初始化工作。在声明的时候还完成了对数组的初始化工作。在声明的时候还完成了对数组的初始化工作。在声明的时候还完成了对数组的初始化工作。struct student sStu5=0804101,Mr.Zhang,M,1979,9,1,80,0804102,Mr.Wang,W,1980,8,1,70,080410
25、3,Mr.Li,M,1978,7,1,55,0804104,Mr.Zhao,W,1977,6,1,65,0804105,Mr.Zhou,M,1981,5,1,45;23定义定义定义定义:struct STUDENTintstudentID;charstudentName10;char studentSex4;struct date timeOfEnter;int scoreComputer;int scoreEnglish;int scoreMath;int scoreMusic;struct STUDENT stu5;结结结结构构构构体体体体数数数数组组组组学号学号姓名姓名性别性别入学时间入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 数组 改变
限制150内