c++程序设计--数组课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《c++程序设计--数组课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 程序设计 数组 课件
- 资源描述:
-
1、1第第 4 4 章章 数组数组 2主要内容主要内容4.1 一维数组一维数组4.2 二维数组二维数组4.3 字符数组与字符串字符数组与字符串34.1 一维数组 4.1.1 一维数组定义一维数组定义【存储类型【存储类型】 数据类型数据类型 数组名数组名常量表达式常量表达式 int age40; float f6*6; 例如:以下是合法的数组定义语句:int i;i=10;int datai; 以下是不合法的数组定义语句:44.1.3 一维数组元素的引用一维数组元素的引用数组定义之后,就可以在程序中引用元素。数组定义之后,就可以在程序中引用元素。引用格式为:引用格式为:数组名数组名下标表达式下标表达
2、式说明:说明:下标表达式是整型常量或整型变量表达式。下标表达式是整型常量或整型变量表达式。 例如定义:例如定义: int b,c,a5;数组数组a可引用的元素有:可引用的元素有:a0,a1,a2,a3,a4。 给元素赋值方法给元素赋值方法: a0=0; a1=1;a2=2;a3=3 ; a4=4 ; for(i=0;i100A6【例【例4.1】读入一维数组,并按相反顺序输出各元素。】读入一维数组,并按相反顺序输出各元素。算法分析:算法分析: (1)设数组)设数组a含有含有10个元素,下标为个元素,下标为09。(2)以下标作为循环控制变量)以下标作为循环控制变量for(i=0;i=9;i+) 在
3、循环体内进行数组元素在循环体内进行数组元素ai的引用的引用 7 #include using namespace std;#include void main() int i,a10; for(i=0;iai; for(i=9;i=0;i-) coutsetw(6)max,则则max=ai 、position=i;1225213 82794936010max:position:513 827949360100246i13程序清单程序清单void main() int a10; int i,max,position; for(i=0;iai; position=0; max=a0; for(i=
4、1;imax) max=ai;position=i; coutmax=max position=positionendl; /输出最大值及其位置输出最大值及其位置 a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 数组数组a521382794936010imaxposition100 51maxai2aimax3132maxaimaxaimaxaimaxaimaxaimaxaimaxai496max=49 position=65 2 13 8 27 9 49 36 0 10 14【例4.4】使用冒泡法将6个数据从小到大排序。算法分析:算法分析: 排序是将一组随机排放的数按从小到大排序
5、是将一组随机排放的数按从小到大(升序升序)或从大到小或从大到小(降降序序)重新排列。重新排列。排序方法采用多的有:冒泡法、选择法和插入法等。排序方法采用多的有:冒泡法、选择法和插入法等。冒泡法的思路是:冒泡法的思路是: 将相邻两个数将相邻两个数ai和和ai+1比较,将大数调到后头,小数调到比较,将大数调到后头,小数调到前头前头;第一轮比较下来,将最大值放入第一轮比较下来,将最大值放入a6;第二轮比较下来,次大数放入了第二轮比较下来,次大数放入了a5;如此循环如此循环n-1轮,则将轮,则将6个数按从小到大分别存在个数按从小到大分别存在a1,a2,a6中。中。15冒泡法图示 交换 5 2 6 4
6、1 3 不交换 交换 交换 交换 2 5 6 4 1 3 2 5 6 4 1 3 2 5 4 6 1 3 2 5 4 1 6 3 2 5 4 1 3 6 最大值 图4.2 冒泡排序法图示 16void main() int a7,i,j,t; coutinput 6 numbers:n; for(i=1;iai; for(i=1;i6;i+) for(j=1;jaj+1) t=aj; aj=aj+1; aj+1=t; for (i=1;i=6;i+) coutai“ ”;a0a1a2a3a4a5a6可省略可省略itj _5 2 6 4 1 3 526413input 6 numbers:1 1
7、52552226654 46 416 61136 63 633 4 5 621 154234 531 4133 441 2132 351226 1 2 3 4 5 6 _174.2 二维数组及多维数组 用用2个下标区分具体元素的数组称为二维数组。个下标区分具体元素的数组称为二维数组。 用用3个及个及3个以上下标表示的数组称为多维数组。个以上下标表示的数组称为多维数组。4.2.1 二维数组及多维数组定义二维数组及多维数组定义二维数组定义的一般形式为:二维数组定义的一般形式为: 存储类型存储类型 数据类型数据类型 数组名数组名常量常量常量常量; int a23,b5l0;同理定义一个三维数组:同理
8、定义一个三维数组: int c234;184.2.2 二维数组及多维数组的存储形式二维数组中元素的排列顺序是按行连续存放的,二维数组中元素的排列顺序是按行连续存放的,即在内存中先顺序存放完第一行元素,即在内存中先顺序存放完第一行元素,再继续存放第二行元素,再继续存放第二行元素,直到最后一行。直到最后一行。例如:例如:int a23;二维数组二维数组a中元素排列顺序中元素排列顺序 a00 a01 a02 a10 a11 a12二维数组二维数组a在内存中的存储格式在内存中的存储格式 a00 a01 a02 a10 a10 a11 2000 2004 2008 200C 2010 2014 多维数组
9、元素在内存中的存放规律与二维数组相同,多维数组元素在内存中的存放规律与二维数组相同,元素最左边的下标变化最慢,最右边的下标变化最快。元素最左边的下标变化最慢,最右边的下标变化最快。 194.2.3 二维数组元素的引用数组不能对其整体引用,只能对具体元素进行引用。数组不能对其整体引用,只能对具体元素进行引用。格式:格式: 数组名数组名下标表达式下标表达式下标表达式下标表达式 说明:说明:(1)下标表达式可是整型常量或变量表达式。)下标表达式可是整型常量或变量表达式。 例如:例如: int a23;合法引用:合法引用: a01, aij,a3*2-56%3等。等。(2)同样在数组引用中要特别注意下
10、标越界问题。)同样在数组引用中要特别注意下标越界问题。 204.2.4 二维数组的初始化 二维数组初始化方式有两种方式二维数组初始化方式有两种方式1按行对二维数组初始化。按行对二维数组初始化。例如:例如: int a23=1,2,3,4,5,6;2按数组元素存放顺序对初始化。按数组元素存放顺序对初始化。例如,例如, int a23=l,2,3,4,5,6;21说明:说明:(1)初始化时可对数组全部元素初始化,也可以只对部)初始化时可对数组全部元素初始化,也可以只对部分元素初始化。分元素初始化。 例如:例如: int a341,2,3; 它的作用是只对各行第一列的元素赋初值,其余元素它的作用是只
11、对各行第一列的元素赋初值,其余元素值自动为值自动为0。 0123012 i jaij12300000000022说明:说明:也可以只对某几行赋初值,也可以只对某几行赋初值,例如例如:int a34=1,2,3; 0123012 i jaij12003000000023说明:说明:(2)对全部元素初始化时,可以省略数组第一维的对全部元素初始化时,可以省略数组第一维的长度,但第二维的长度不能省略。长度,但第二维的长度不能省略。例如:例如: int a 3=1,2,3,4,5,6;01201 i jaij142536 由于未指定数组第一维的长度,由于未指定数组第一维的长度,C C编译程序将编译程序将
12、根据数组第二维的长度以及初始化数据的个数,确根据数组第二维的长度以及初始化数据的个数,确定数组第一维的长度为定数组第一维的长度为2 2,保证数组大小足够存放,保证数组大小足够存放全部初始化数据。全部初始化数据。24说明:说明:(3)按行初始化时,对全部或部分元素初始化均可省略数组)按行初始化时,对全部或部分元素初始化均可省略数组第一维的长度,第一维的长度,例如:例如: int a32=1,2,3;还可写成:还可写成: int a 2=1,2,3;系统能根据初始值分行情况自动确定该数组第一维的长度为系统能根据初始值分行情况自动确定该数组第一维的长度为3。 01012 i jaij10320025
13、b4.2.5 二维数组程序设计举例【例4.5】将一个二维数组的行和列元素互换(即矩阵的转置),将结果存到另一个数组中。 矩阵的转置算法:矩阵的转置算法: aij=bji123456456a123b123456456a123bij=aji ijij26#include void main() int a23=1,2,3,4,5,6,b32; int i,j; coutarray a is:endl; for (i=0;i2;i+) for (j=0;j3;j+) coutsetw(10)aij; coutendl; array a is:123456abij12345627 coutarray
14、b is:endl; for(i=0;i3;i+) for(j=0;j2;j+) bij=aji; coutsetw(10)bij; coutendl; abarray b is:iij123j45641123456236514253628void main() int a4=3,16,87,65,4,32,11,108,10,25,12,27; int b3,i,j,rowmax; for(i=0;i=2;i+) rowmax=ai0; for(j=1;jrowmax) rowmax=aij; bi=rowmax; 16 87 6532 11 108a3425 12 2710browmaxi
15、j6512874 32 11108108103 16 87252727【例4.6】在二维数组a中选出各行最大的元素组成一个一维数组b。29 coutarray a is:endl; for(i=0;i=2;i+) for(j=0;j=3;j+) coutsetw(10)aij; coutendl; coutarray b is:endl; for(i=0;i=2;i+) coutsetw(10)bi; coutendl; 8710827b16 87 6532 11 108a3425 12 2710316 87 65432 11 10810 25 12 278710827array a is:a
16、rray b is:_304.3 字符数组与字符串所谓所谓“字符串字符串”是指若干有效字符的序列。是指若干有效字符的序列。C程序中的字符串可以包括字母、数字、专用字符、转义字程序中的字符串可以包括字母、数字、专用字符、转义字符等。符等。 例如,下列字符串都是合法的。例如,下列字符串都是合法的。HelloC program35.29ChinatBeijingnC语言中没有字符串变量,字符串不是存放在一个变量中,语言中没有字符串变量,字符串不是存放在一个变量中,而是存放在一个字符型的数组中。而是存放在一个字符型的数组中。在在C语言中,字符串被作为字符数组来处理。语言中,字符串被作为字符数组来处理。
17、314.3.1 4.3.1 字符数组与字符串字符数组与字符串 用于存放字符串数据的数组是字符数组,用于存放字符串数据的数组是字符数组,字符数组中的一个元素存放一个字符。字符数组中的一个元素存放一个字符。定义一维字符数组的一般格式为:定义一维字符数组的一般格式为: char 数组名数组名常量表达式常量表达式;例如,例如, char str10;由于字符型与整型是相互通用的,因此由于字符型与整型是相互通用的,因此上面定义还可以改为:上面定义还可以改为: int str10;1. 字符数组的定义字符数组的定义str10合法合法引用引用越界越界 str0 str1 str2 str3 str4 str
18、5 str6 str7 str8 str9str322. 字符数组的初始化字符数组的初始化 字符数组的初始化有两种方式。字符数组的初始化有两种方式。(1)逐个给数组中的各元素赋初值,即将字符常量依次放在花括逐个给数组中的各元素赋初值,即将字符常量依次放在花括号中。号中。 char str15=C, ,p,r,o,g,r,a,m;cprogram 0 0 0 0 0 0注意:注意:0在在C语言中是字符串结束标志。即使初始化语言中是字符串结束标志。即使初始化时时0后面还有其他字符,系统也会认为后面还有其他字符,系统也会认为0之前的字之前的字符才是字符串中的字符。例如:符才是字符串中的字符。例如:c
展开阅读全文