c数组及自定义数据类型-1.5

上传人:tian****1990 文档编号:75933988 上传时间:2019-02-02 格式:PPT 页数:57 大小:675.81KB
返回 下载 相关 举报
c数组及自定义数据类型-1.5_第1页
第1页 / 共57页
c数组及自定义数据类型-1.5_第2页
第2页 / 共57页
c数组及自定义数据类型-1.5_第3页
第3页 / 共57页
c数组及自定义数据类型-1.5_第4页
第4页 / 共57页
c数组及自定义数据类型-1.5_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《c数组及自定义数据类型-1.5》由会员分享,可在线阅读,更多相关《c数组及自定义数据类型-1.5(57页珍藏版)》请在金锄头文库上搜索。

1、2019年2月2日3时26分,1,C+面向对象程序设计,普通高等教育“十一五”国家级规划教材 中国高等院校计算机基础教育课程体系规划教材,谭浩强 编著,2019年2月2日3时26分,2,第5讲 C+数组及自定义数据类型,5.1授课内容 C+数组及自定义数据类型的使用。主要包括: 1一维和二维数组; 2字符数组与字符串; 3字符串函数; 4结构体的定义; 5结构变量的定义、初始化、结构成员的访问等; 6结构体与数组; 7结构与链表; 8共用体和枚举类型。,2019年2月2日3时26分,3,第5讲 C+数组及自定义数据类型,5.2授课要求 1掌握数组的基本概念; 2掌握一维数组和二维数组的使用;

2、3掌握字符数组与字符串的关系以及字符串变量的表示; 4掌握结构体的概念和结构类型的定义; 5掌握结构体变量的定义和初始化; 6掌握结构体成员的访问、结构体赋值的含义以及结构体与指针的关系; 7掌握共用体和枚举类型。,2019年2月2日3时26分,4,第5讲 C+数组及自定义数据类型,5.3授课重点 1一维数组和二维数组的定义及使用; 2结构的定义和使用。 5.4授课难点 1数组名作函数的参数; 2结构体与指针的结合。,2019年2月2日3时26分,5,1一维数组的定义和引用,(1)定义一维数组 格式为: 类型标识符 数组名常量表达式; 例如: int a10; 它表示数组名为a,此数组为整型,

3、有10个元素。,2019年2月2日3时26分,6,1一维数组的定义和引用,说明: A数组名定名规则和变量名相同,遵循标识符定名规则。 B用方括号括起来的常量表达式表示下标值,如下面的写法是合法的: int a10; int a2*5; int an*2; /假设前面已定义了n为常变量,2019年2月2日3时26分,7,1一维数组的定义和引用,C常量表达式的值表示元素的个数,即数组长度。 例如:在“int a3;”中,3表示a数组有3个元素,下标从0开始,这3个元素是: a0,a1,a2。 注意最后一个元素是a2而不是a3。 D常量表达式中可以包括常量、常变量和符号常量,但不能包含变量。 即:C

4、+不允许对数组的大小作动态定义。,非法定义数组: int n; cinn; /输入a数组的长度 int an; /企图根据n的值决定数组的长度,2019年2月2日3时26分,8,1一维数组的定义和引用,(2)引用一维数组的元素 数组必须先定义,然后使用。只能逐个引用数组元素的值而不能一次引用整个数组中的全部元素的值。 数组元素的表示形式为: 数组名下标 下标可以是整型常量或整型表达式。例如 a0= a5+ a7- a2*3,2019年2月2日3时26分,9,1一维数组的定义和引用,例1 数组元素的引用。 #include using namespace std; int main( ) int

5、 i,a10; for (i=0;i=0;i-) coutai“ “; coutendl; return 0; ,运行结果如下: 9 8 7 6 5 4 3 2 1 0 程序使a0a9的值为09,然后按逆序输出。,2019年2月2日3时26分,10,1一维数组的定义和引用,(3)一维数组的初始化 A在定义数组时分别对数组元素赋予初值。 例如 int a10=0,1,2,3,4,5,6,7,8,9; B可以只给一部分元素赋值。 例如: int a10=0,1,2,3,4; /剩余的元素值为0,2019年2月2日3时26分,11,1一维数组的定义和引用,C如果想使一个数组中全部元素值为1,可以写成

6、 int a10=1,1,1,1,1,1,1,1,1,1; 不能写成 int a10=1*10; D在对全部数组元素赋初值时,可以不指定数组长度。 例如 int a5=1,2,3,4,5; 可以写成 int a=1,2,3,4,5;,2019年2月2日3时26分,12,数组的赋值,1. 用“=”赋值 要在数组之间进行赋值,也只能一个一个元素地赋值。 例如:将数组a的值 赋给另一个同样大小的数组b,可以利用下面的循环完成赋值操作: for (i=0;i数组名;或 cin数组名下标; 例如:对一个大小为5的字符型数组a赋值,可以用下列两种方式: char a5; cina;,2019年2月2日3时

7、26分,13,数组的赋值,3. 用scanf()函数, 其语法格式为: scanf(“类型标识”,数组名);或 scanf(“类型标识”,数组元素地址); 4. 用C+库函数中的strcpy()函数(字符串拷贝函数), 其常见语法格式为: strcpy(数组名,字符串); /将一个字符串赋值到一个字符数组中 例如: char str110; strcpy(str1,”hello”); 注意,此例不能写为:str1=”hello”; /不合法 另一种常见的语法格式为: strcpy(数组名1,数组名2); /将数组2中的字符串赋值到数组1中 例如: strcyp(str1,str2); 注意,上

8、例不能写为:str1=str2; /不合法,2019年2月2日3时26分,14,数组越界,在给数组元素赋值或对数组元素进行引用时,一定要注意下标的值不要超过数组的范围,否则会产生数组越界问题。因为当数组下标越界时,编译器并不认为它是一个错误,但这往往会带来非常严重的后果。 例如:定义了一个整型数组a: int a10; 数组a的合法下标为09。如果程序要求给a10赋值,将可能导致程序出错,甚至系统崩溃。,2019年2月2日3时26分,15,数组越界,常用下面的式子确定数组的大小,预防数组越界情况的发生 。 假定对于一个整型数组a,它的大小为: sizeof(a)/sizeof(int) siz

9、eof(a)表示求数组a在内存中所占字节数,sizeof(int)表示求整型数据在内存中所占字节数。使用上面这个式子,可以使数组大小计算在16位机器和32位机器之间移植。,2019年2月2日3时26分,16,2二维数组的定义和引用,具有两个下标的数组称为二维数组。 (1)定义二维数组 定义二维数组的一般形式为: 类型标识符 数组名常量表达式常量表达式 例如: float a34,b510; 定义a为34(3行4列)的单精度数组,b为510(5行10列)的单精度数组。 注意:不能写成“float a3,4,b5,10;”。,2019年2月2日3时26分,17,2二维数组的定义和引用,可以把二维数

10、组看作是一种特殊的一维数组:它的元素又是一个一维数组。,例如: 可以把a看作是一个一维数组,它有3个元素:a0 a1, a2,每个元素又是一个包含4个元素的一维数组,,图1。,2019年2月2日3时26分,18,2二维数组的定义和引用,C+中,二维数组中元素排列的顺序是:按行存放,图2表示对a34数组存放的顺序。,图2,2019年2月2日3时26分,19,2二维数组的定义和引用,C+允许使用多维数组。 例如,定义三维数组的方法是: float a234; 定义float型三维数组a,它有234=24个元素。,2019年2月2日3时26分,20,2二维数组的定义和引用,(2)二维数组的引用 二维

11、数组的元素的表示形式为 数组名 下标下标 例如: B12=a23 / 2; 在使用数组元素时,应该注意下标值应在已定义的数组大小的范围内。,2019年2月2日3时26分,21,2二维数组的定义和引用,(3)二维数组的初始化 A分行给二维数组赋初值。如: int a34=1,2,3,4,5,6,7,8, 9,10,11,12; B可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。如: int a34=1,2,3,4,5,6,7,8,9,10,11,12; 效果与前相同。但以第1种方法为好,一行对一行,界限清楚。,2019年2月2日3时26分,22,2二维数组的定义和引用,C可以对部

12、分元素赋初值,其余元素值自动置为0。 如:int a34=1,0,6,0,0,11; 初始化后的数组元素如下: 1 0 0 0 0 6 0 0 0 0 11 0 也可以只对某几行元素赋初值: int a34=1,5,6; 数组元素为 1 0 0 0 5 6 0 0 0 0 0 0,第3行不赋初值。也可以对第2行不赋初值: int a34=1,9;,2019年2月2日3时26分,23,2二维数组的定义和引用,D如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。 如 int a34=1,2,3,4,5,6,7,8,9,10,11,12; 可以

13、写成 int a4=1,2,3,4,5,6,7,8,9,10,11,12; 在定义时也可以只对部分元素赋初值而省略第一维的长度, 但应分行赋初值。如 int a4=0,0,3,0,10;,数组各元素为 : 0 0 3 0 0 0 0 0 0 10 0 0,2019年2月2日3时26分,24,2二维数组的定义和引用,(4)二维数组程序举例 例2 将一个二维数组行和列元素互换,存到另一个二维数组中。 例如: a= 1 2 3 b=1 4 4 5 6 2 5 3 6,2019年2月2日3时26分,25,2二维数组的定义和引用,coutendl; coutarray b:endl; for (i=0;

14、i=2;i+) for(j=0;j=1;j+) coutbij ; coutendl; return 0; ,程序如下: #include using namespace std; int main( ) int a23=1,2,3,4,5,6; int b32,i,j; coutarray a:endl; for (i=0;i=1;i+) for (j=0;j=2;j+) coutaij ; bji=aij; ,2019年2月2日3时26分,26,2二维数组的定义和引用,运行结果如下: array a: 1 2 3 4 5 6 array b: 1 4 2 5 3 6,2019年2月2日3时

15、26分,27,3用数组名作函数参数,数组名也可以作实参和形参,传递的是数组的起始地址。 例3 用选择法对数组中10个整数按由小到大排序。 根据此思路编写程序如下:,所谓选择法就是先将10个数中最小的数与a0对换;再将a1到a9中最小的数与a1对换每比较一轮,找出一个未经排序的数中最小的一个。共比较9轮。,2019年2月2日3时26分,28,3用数组名作函数参数,#include using namespace std; int main( ) void select_sort(int array,int n); /函数声明 int a10,i; coutai; coutendl; select_sort(a,10); /函数调用,数组名作实参 coutthe sorted array:endl; for(i=0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号