C数组及自定义数据类型实用.pptx
《C数组及自定义数据类型实用.pptx》由会员分享,可在线阅读,更多相关《C数组及自定义数据类型实用.pptx(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023/4/13 21:401第5讲 C+数组及自定义数据类型5.2授课要求1掌握数组的基本概念;2掌握一维数组和二维数组的使用;3掌握字符数组与字符串的关系以及字符串变量的表示;4掌握结构体的概念和结构类型的定义;5掌握结构体变量的定义和初始化;6掌握结构体成员的访问、结构体赋值的含义以及结构体与指针的关系;7掌握共用体和枚举类型。第第2页页/共共56页页第1页/共56页2023/4/13 21:402第5讲 C+数组及自定义数据类型5.3授课重点1一维数组和二维数组的定义及使用;2结构的定义和使用。5.4授课难点1数组名作函数的参数;2结构体与指针的结合。第第3页页/共共56页页第2页/
2、共56页2023/4/13 21:4031一维数组的定义和引用(1)定义一维数组格式为:类型标识符 数组名常量表达式;例如:int a10;它表示数组名为a,此数组为整型,有10个元素。第第4页页/共共56页页第3页/共56页2023/4/13 21:4041一维数组的定义和引用说明:A数组名定名规则和变量名相同,遵循标识符定名规则。B用方括号括起来的常量表达式表示下标值,如下面的写法是合法的:int a10;int a2*5;int an*2;/假设前面已定义了n为常变量 第第5页页/共共56页页第4页/共56页2023/4/13 21:4051一维数组的定义和引用C常量表达式的值表示元素的
3、个数,即数组长度。例如:在“int a3;”中,3表示a数组有3个元素,下标从0开始,这3个元素是:a0,a1,a2。注意最后一个元素是a2而不是a3。D常量表达式中可以包括常量、常变量和符号常量,但不能包含变量。即:C+不允许对数组的大小作动态定义。非法定义数组:int n;cinn;/输入a数组的长度int an;/企图根据n的值决定数组的长度 第第6页页/共共56页页第5页/共56页2023/4/13 21:4061一维数组的定义和引用(2)引用一维数组的元素 数组必须先定义,然后使用。只能逐个引用数组元素的值而不能一次引用整个数组中的全部元素的值。数组元素的表示形式为:数组名下标下标可
4、以是整型常量或整型表达式。例如a0=a5+a7-a2*3第第7页页/共共56页页第6页/共56页2023/4/13 21:4071一维数组的定义和引用例1 数组元素的引用。#include using namespace std;int main()int i,a10;for(i=0;i=0;i-)coutai“;coutendl;return 0;运行结果如下:9 8 7 6 5 4 3 2 1 0程序使a0a9的值为09,然后按逆序输出。第第8页页/共共56页页第7页/共56页2023/4/13 21:4081一维数组的定义和引用(3)一维数组的初始化A在定义数组时分别对数组元素赋予初值。
5、例如int a10=0,1,2,3,4,5,6,7,8,9;B可以只给一部分元素赋值。例如:int a10=0,1,2,3,4;/剩余的元素值为0第第9页页/共共56页页第8页/共56页2023/4/13 21:4091一维数组的定义和引用C如果想使一个数组中全部元素值为1,可以写成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;第第10页页/共共56页页第9页/共56页2023/4/13 21:4010数组的赋值1.用“=
6、”赋值 要在数组之间进行赋值,也只能一个一个元素地赋值。例如:将数组a的值 赋给另一个同样大小的数组b,可以利用下面的循环完成赋值操作:for(i=0;i数组名;或 cin数组名下标;例如:对一个大小为5的字符型数组a赋值,可以用下列两种方式:char a5;cina;第第11页页/共共56页页第10页/共56页2023/4/13 21:4011数组的赋值3.用scanf()函数,其语法格式为:scanf(“类型标识”,数组名);或 scanf(“类型标识”,数组元素地址);4.用C+库函数中的strcpy()函数(字符串拷贝函数),其常见语法格式为:strcpy(数组名,字符串);/将一个字
7、符串赋值到一个字符数组中例如:char str110;strcpy(str1,”hello”);注意,此例不能写为:str1=”hello”;/不合法 另一种常见的语法格式为:strcpy(数组名1,数组名2);/将数组2中的字符串赋值到数组1中例如:strcyp(str1,str2);注意,上例不能写为:str1=str2;/不合法 第第12页页/共共56页页第11页/共56页2023/4/13 21:4012数组越界在给数组元素赋值或对数组元素进行引用时,一定要注意下标的值不要超过数组的范围,否则会产生数组越界问题。因为当数组下标越界时,编译器并不认为它是一个错误,但这往往会带来非常严重的
8、后果。例如:定义了一个整型数组a:int a10;数组a的合法下标为09。如果程序要求给a10赋值,将可能导致程序出错,甚至系统崩溃。第第13页页/共共56页页第12页/共56页2023/4/13 21:4013数组越界 常用下面的式子确定数组的大小,预防数组越界情况的发生。假定对于一个整型数组a,它的大小为:sizeof(a)/sizeof(int)sizeof(a)表示求数组a在内存中所占字节数,sizeof(int)表示求整型数据在内存中所占字节数。使用上面这个式子,可以使数组大小计算在16位机器和32位机器之间移植。第第14页页/共共56页页第13页/共56页2023/4/13 21:
9、40142二维数组的定义和引用具有两个下标的数组称为二维数组。(1)定义二维数组定义二维数组的一般形式为:类型标识符 数组名常量表达式常量表达式例如:float a34,b510;定义a为34(3行4列)的单精度数组,b为510(5行10列)的单精度数组。注意:不能写成“float a3,4,b5,10;”。第第15页页/共共56页页第14页/共56页2023/4/13 21:40152二维数组的定义和引用可以把二维数组看作是一种特殊的一维数组:它的元素又是一个一维数组。例如:可以把a看作是一个一维数组,它有3个元素:a0a1,a2,每个元素又是一个包含4个元素的一维数组,图1。第第16页页/
10、共共56页页第15页/共56页2023/4/13 21:40162二维数组的定义和引用C+中,二维数组中元素排列的顺序是:按行存放 图2表示对a34数组存放的顺序。图2第第17页页/共共56页页第16页/共56页2023/4/13 21:40172二维数组的定义和引用C+允许使用多维数组。例如,定义三维数组的方法是:float a234;定义float型三维数组a,它有234=24个元素。第第18页页/共共56页页第17页/共56页2023/4/13 21:40182二维数组的定义和引用(2)二维数组的引用二维数组的元素的表示形式为数组名 下标下标例如:B12=a23/2;在使用数组元素时,应
11、该注意下标值应在已定义的数组大小的范围内。第第19页页/共共56页页第18页/共56页2023/4/13 21:40192二维数组的定义和引用(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种方法为好,一行对一行,界限清楚。第第20页页/共共56页页第19页/共56页2023/4/13 21:40202二维数组的定义和引用C可以对部分元素赋初值,其余元素值自动置为
12、0。如:int a34=1,0,6,0,0,11;初始化后的数组元素如下:1 0 0 00 6 0 00 0 11 0也可以只对某几行元素赋初值:int a34=1,5,6;数组元素为 1 0 0 05 6 0 00 0 0 0第3行不赋初值。也可以对第2行不赋初值:int a34=1,9;第第21页页/共共56页页第20页/共56页2023/4/13 21:40212二维数组的定义和引用D如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。如int a34=1,2,3,4,5,6,7,8,9,10,11,12;可以写成int a4=1,2
13、,3,4,5,6,7,8,9,10,11,12;在定义时也可以只对部分元素赋初值而省略第一维的长度,但应分行赋初值。如int a4=0,0,3,0,10;数组各元素为:0 0 3 00 0 0 00 10 0 0第第22页页/共共56页页第21页/共56页2023/4/13 21:40222二维数组的定义和引用(4)二维数组程序举例例2 将一个二维数组行和列元素互换,存到另一个二维数组中。例如:a=123 b=14 456 25 36第第23页页/共共56页页第22页/共56页2023/4/13 21:40232二维数组的定义和引用coutendl;coutarray b:endl;for(i
14、=0;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;第第24页页/共共56页页第23页/共56页2023/4/13 21:40242二维数组的定义和引用运行结果如下:array a:1 2 3 4 5 6 array b:1 4 2 5 3 6第第25页页/共共56页页第
15、24页/共56页2023/4/13 21:40253用数组名作函数参数数组名也可以作实参和形参,传递的是数组的起始地址。例3 用选择法对数组中10个整数按由小到大排序。根据此思路编写程序如下:所谓选择法就是先将10个数中最小的数与a0对换;再将a1到a9中最小的数与a1对换每比较一轮,找出一个未经排序的数中最小的一个。共比较9轮。第第26页页/共共56页页第25页/共56页2023/4/13 21:40263用数组名作函数参数#include using namespace std;int main()void select_sort(int array,int n);/函数声明 int a1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 自定义 数据类型 实用
限制150内