




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章第五章 数组数组O 引言引言数组的概念一维数组的定义一维数组定义举例数组元素的引用 存储一个班学生的学习成绩存储一个班学生的学习成绩 存储一串字符存储一串字符O 引言引言这些数据的特点:这些数据的特点:1.1.具有相同的数据类型具有相同的数据类型 2.2.使用过程中需要保留原始数据使用过程中需要保留原始数据 第五讲第五讲 数组数组O 5.1 5.1 数组的定义和引用数组的定义和引用O 5.2 5.2 二维数组的定义和引用二维数组的定义和引用O 5.3 5.3 字符数组字符数组O 5.4 5.4 字符串字符串O 5.1 5.1 数组的定义和引用数组的定义和引用O 5.1.1 5.1.1 数
2、组的定义数组的定义O 5.1.2 5.1.2 数组的引用数组的引用O 5.1.3 5.1.3 数组的初始化数组的初始化O 5.2 5.2 二维数组的定义和引用二维数组的定义和引用O 5.3 5.3 字符数组字符数组O 5.4 5.4 字符串字符串 数组名:数组名:mark、str、a。 方括号内是数组的方括号内是数组的长度长度。 数组数组维数维数:mark、str是一维数组、是一维数组、a是二维数组。是二维数组。 数组的成员称为数组数组的成员称为数组元素元素。 数组元素的类型称为该数组的数组元素的类型称为该数组的基类型基类型。数组。数组mark的的基类型是基类型是float,数组,数组str的
3、基类型是的基类型是char。例如:例如: 存储学生成绩用实型数组存储学生成绩用实型数组 float float mark100mark100, 存储一行文字用字符数组存储一行文字用字符数组 char char str200str200, 存储一个存储一个4 4* *6 6的矩阵用二维整型数组的矩阵用二维整型数组 int int a46a46。O 5.1.1 一维数组的定义一维数组的定义数组定义时需要注意的问题:数组定义时需要注意的问题:1 1)数组名:数组名:要符合要符合C C语言标示符的命名规则;语言标示符的命名规则;2 2)数组名后面的数组名后面的“ ” ”:是数组的标志,不能用是数组的标
4、志,不能用圆圆 括号或其他符号代替;括号或其他符号代替;3 3)元素个数:元素个数:必须是一个必须是一个大于零的固定值大于零的固定值。可以是。可以是 整型常量、符号常量或整型表达式;整型常量、符号常量或整型表达式;如:如: int a0,d(6); int b-8; int c2+3; /*错误错误*/*错误错误*/*正确正确*/O 5.1.1 一维数组的定义一维数组的定义数组定义时需要注意的问题:数组定义时需要注意的问题:#define N 5int aN;int n;scanf(“%d” , &n ); int an;int n=10,an;int a5, b2*3; 4 4)数组
5、元素的个数表示数组最多可以存放的数据。数组元素的个数表示数组最多可以存放的数据。例如:例如:定义定义int a5时,数组时,数组a最多可以存放最多可以存放5个整型数据个整型数据(a0,a1,a2,a3,a4); 其中其中04表示数组的下标(从表示数组的下标(从0开始计数),开始计数),所以不存在数组元素所以不存在数组元素a5。O 5.1.1 一维数组的定义一维数组的定义O 5.1.1 一维数组的定义一维数组的定义O 5.1 5.1 数组的定义和引用数组的定义和引用O 5.1.1 5.1.1 数组的定义数组的定义O 5.1.2 5.1.2 数组的引用数组的引用O 5.1.3 5.1.3 数组的初
6、始化数组的初始化O 5.2 5.2 二维数组的定义和引用二维数组的定义和引用O 5.3 5.3 字符数组字符数组O 5.4 5.4 字符串字符串第五讲第五讲 数组数组O 5.1.2 一维数组的引用一维数组的引用n 数组必须先定义,后使用。数组必须先定义,后使用。n 数组元素引用的一般形式:数组元素引用的一般形式: 数组名数组名下标下标n 使用数组时需要使用数组时需要注意注意:n只能只能逐个引用数组元素逐个引用数组元素,而不能一次引用整,而不能一次引用整个数组个数组n数组下标:数组下标:可以是整型常量、整型变量或者可以是整型常量、整型变量或者整型表达式整型表达式n数组下标的范围:数组下标的范围:
7、从从0 0开始,小于等于开始,小于等于 “元元素个数素个数-1-1”(如上例:(如上例:int a5int a5的数组元素的数组元素下标范围是下标范围是0404)n 数组名后中括号里面的内容在不同场合下数组名后中括号里面的内容在不同场合下 的含义不同:的含义不同: 在定义时:代表数组元素的个数;在定义时:代表数组元素的个数; 其他情况下:表示数组下标,与数组名联合起来其他情况下:表示数组下标,与数组名联合起来表示某一个特定的数组元素;表示某一个特定的数组元素;n 数组元素的存放是按照下标的顺序从小到数组元素的存放是按照下标的顺序从小到大存放的。大存放的。O 5.1.2 一维数组的引用一维数组的
8、引用系统给数组分配系统给数组分配2*5=10个字节的个字节的存储空间存储空间int a5= 1, 2, 3, 4, 5 ;n 当数组名单独使用时:当数组名单独使用时: 表示系统为该数组分配的表示系统为该数组分配的存储空间的起始地存储空间的起始地 址址(首地址),即第一个元素的地址(首地址),即第一个元素的地址&a0&a0 ,是一个常量。,是一个常量。n 例:例:a = &a0=1000a = &a0=1000;O 5.1.2 一维数组的引用一维数组的引用数组在内存数组在内存中的首地址中的首地址即即a=&a0=1000int a5= 1, 2, 3, 4,
9、 5 ;O 5.1 5.1 数组的定义和引用数组的定义和引用O 5.1.1 5.1.1 数组的定义数组的定义O 5.1.2 5.1.2 数组的引用数组的引用O 5.1.3 5.1.3 数组的初始化数组的初始化O 5.2 5.2 二维数组的定义和引用二维数组的定义和引用O 5.3 5.3 字符数组字符数组O 5.4 5.4 字符串字符串第五讲第五讲 数组数组n 数组初始化的一般形式:数组初始化的一般形式:O 5.1.3 一维数组的初始化一维数组的初始化) ) 先定义,再为单个数组元素赋值;先定义,再为单个数组元素赋值; 例如:例如:int a3; int a3; a0=0; a1=1; a2=2
10、; a0=0; a1=1; a2=2; 在数组定义的同时给出所有元素的值在数组定义的同时给出所有元素的值. .char c = a, b, c;char c = a, b, c; 此时系统将根据数组初始化时大括号内值的此时系统将根据数组初始化时大括号内值的 个数,决定该数组的元素个数。个数,决定该数组的元素个数。O 5.1.3 一维数组的初始化一维数组的初始化O 5.1.3 一维数组的初始化一维数组的初始化例如例如: int num3; int num3; num3=10,20,30; num3=10,20,30;num0=10;num1=20;num2=30;O 5.1.3 一维数组的初始化
11、一维数组的初始化n C C程序中常用的是程序中常用的是第一种方法第一种方法:循环变量的终:循环变量的终值是值是“小于小于 而非而非 等于等于 数组长度!否则将导致数组长度!否则将导致 越界越界 的发生。的发生。O 5.1.3 一维数组的初始化一维数组的初始化O 5.1.3 一维数组的初始化一维数组的初始化O 5.1.3 一维数组的初始化一维数组的初始化1.编写一个函数,统计出具有编写一个函数,统计出具有10个元素的一维数个元素的一维数组中大于等于所有元素平均值的元素个数并返组中大于等于所有元素平均值的元素个数并返回。回。 数组为:数组为:int a10=10,20,30,40,50,60,70
12、,80,90,100 2.将十进制数将十进制数68转换成二进制数并输出结果转换成二进制数并输出结果(选选做做)练习:练习:O 举一反三举一反三1. 编写程序,依次将数字编写程序,依次将数字1、3、5、7、17、 19放入一个整型数组,并逆序输出数组。放入一个整型数组,并逆序输出数组。O 举一反三举一反三2. 输入输入10个整数,输出最大值及其序号。个整数,输出最大值及其序号。O 举一反三举一反三3. 任意输入任意输入10个数,按照从小到大顺序输出。个数,按照从小到大顺序输出。n 1. 1. 二维数组的定义二维数组的定义第一个下标可第一个下标可能取值的个数能取值的个数第二个下标可第二个下标可能取
13、值的个数能取值的个数 例:例: int a23O 5.2.1 二维数组的定义二维数组的定义n 1. 1. 二维数组的定义二维数组的定义u 二维数组是一个特殊的一维数组二维数组是一个特殊的一维数组u 它的每个数组元素又是一个一维数组它的每个数组元素又是一个一维数组O 5.2.1 二维数组的定义二维数组的定义n 1. 1. 二维数组的定义二维数组的定义 例:例: int a23 二维数组二维数组a23被看成是特殊的一维数组,两被看成是特殊的一维数组,两个数组元素分别是个数组元素分别是a0和和a1 。 a0和和a1都是一维数组,各自包含都是一维数组,各自包含3个整型的个整型的数组元素。数组元素。O
14、5.2.1 二维数组的定义二维数组的定义n 1. 1. 二维数组的定义二维数组的定义 例:例: int a33222120121110020100aaaaaaaaaaO 5.2.1 二维数组的定义二维数组的定义n 1. 1. 二维数组的定义二维数组的定义O 5.2.1 二维数组的定义二维数组的定义说明:说明:二维数组除了维数比一维数组多一维外,二维数组除了维数比一维数组多一维外, 其它性质与一维数组全部类似。其它性质与一维数组全部类似。 下面写法是否正确?下面写法是否正确? int a03; 用于定义数组长度的常量表达式的值必须是大用于定义数组长度的常量表达式的值必须是大 于于0的正整数。的正
15、整数。 int i=3 , j=4 ; int aij ;定义数组元素的个数必须使用常量表达式,而定义数组元素的个数必须使用常量表达式,而 不能使用变量。不能使用变量。 n 2. 2. 二维数组元素的存放二维数组元素的存放 例:例: int a23O 5.2.1 二维数组的定义与使用二维数组的定义与使用n 2.2.二维数组元素的存放二维数组元素的存放 例:例: int a23O 5.2.1 二维数组的定义二维数组的定义O 5.2.1 二维数组的定义二维数组的定义n 3.3.数组元素的地址数组元素的地址 例:例:int a23O 5.2.1 二维数组的定义二维数组的定义a=a0=&a00
16、O 5.2.1 二维数组的定义二维数组的定义n 3.3.数组元素的地址数组元素的地址n 多维数组的定义方式:多维数组的定义方式:最左边的下标最左边的下标变化最慢,越变化最慢,越往右变化越快往右变化越快O 5.2.2 多维数组的定义多维数组的定义n 二维数组的引用二维数组的引用O 5.2.3 二维数组的引用二维数组的引用O 5.2.3 二维数组的引用二维数组的引用O 5.2.3 二维数组的引用二维数组的引用O 5.2.3 二维数组的引用二维数组的引用n 分析:分析:1.1. 同一维数组一样,二维数组和同类型的变量同一维数组一样,二维数组和同类型的变量 一样,也可以赋值和参加运算;一样,也可以赋值
17、和参加运算; aij=i = 数组数组a a的元素等于行号;的元素等于行号; bij=j = 数组数组b b的元素等于列号;的元素等于列号; 2. 2. 二维数组的下标与其存储顺序一致:二维数组的下标与其存储顺序一致: 先存放一维数组先存放一维数组a0中的中的 a00,a01,a02; 再存放一维数组再存放一维数组a1中的中的 a10,a11,a12;O 5.2.3 二维数组的引用二维数组的引用O 5.2.3 二维数组的引用二维数组的引用635241654321ba,n 举一反三:举一反三: 将一个矩阵将一个矩阵a 23转置存到另一个矩阵转置存到另一个矩阵b 32中。中。分析:分析: 用数组用
18、数组a、b分别代表矩阵分别代表矩阵a、b; a 矩阵的矩阵的行数行数必须要等于必须要等于b 矩阵的矩阵的列数列数。 执行:执行:bji=aij; 即可完成转换。即可完成转换。 涉及到两个下标的,一般用涉及到两个下标的,一般用两重两重循环。循环。main( ) int a23=1,2,3,4,5,6; int b32, i , j; printf(“array a: n”); for( i=0; i2; i+) for( j=0; j3; j+) printf(“%5d”, aij); bji=aij; printf(“n”); printf(“array b: n”); for(i=0; i3; i+) for( j=0; j2; j+) printf(“%5d”,bij); printf(“n”); O 5.2.3 二维数组的引用二维数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 朔州市中医院感染细胞学诊断考核
- 大庆市中医院胰腺超声诊断考核
- 佳木斯市人民医院内镜注水注气系统功能测试笔试试题
- 延边州人民医院一次性物品管理考核
- 忻州市中医院皮肤软组织扩张术考核
- 中国颗粒磷肥项目商业计划书
- 中国十八硫醇项目投资计划书
- 中国动力电池铝塑膜项目商业计划书
- 中国呋虫胺原药项目商业计划书
- 贸促会职能介绍
- 石材清洗工程合同协议书
- 苏轼个人简历
- 2022-2023学年六年级数学上册第一单元:单位“1”转化问题专项练习(含答案)
- 2025年新检测设备借用协议书
- 2024年云南省省直属公务员考试无领导小组讨论面试真题及答案
- 建筑企业用工合同(22篇)
- 《欧洲民间故事》课件
- 2025一级造价工程师《土建计量》学练一本通
- 肠造口并发症分型分级标准
- 兴业银行AI面试模拟题集:多领域岗位探索与应对策略
- 医院实习教学工作汇报
评论
0/150
提交评论