C语言编程课件数组.ppt

上传人:max****ui 文档编号:8615588 上传时间:2020-03-30 格式:PPT 页数:25 大小:488KB
返回 下载 相关 举报
C语言编程课件数组.ppt_第1页
第1页 / 共25页
C语言编程课件数组.ppt_第2页
第2页 / 共25页
C语言编程课件数组.ppt_第3页
第3页 / 共25页
点击查看更多>>
资源描述
回顾 for循环嵌套循环while循环和do while循环break和continue语句 目标 数组的基本概念一维数组的定义和引用二维数组的定义和引用字符数组的定义和引用 基本概念 一 回顾我们前面使用的数据类型都属于基本类型 整型 实型 字符型 枚举型 其存储特点是 每个变量单独存储 亦称简单变量 如 x a y1 0 y2 2 x 各变量之间独立存放 无任何联系 二 构造类型的基本概念在C语言中 变量类型除了前面已介绍的几种基本类型之外 还有另一些复杂类型 合称构造类型 构造类型 是由基本类型构造而成的 如数组 结构体 共用体 构造类型的每一个分量是一个变量 它可以是一个简单类型或者构造类型构造类型的分量的使用方法和简单变量相同构造类型的分量占用相邻的存储空间对于构造类型的变量来说 重点是访问其分量的方法 如 inta 10 floatb 3 4 如 structstudent intnum charname 20 charsex intage floatscore charaddr 30 student1 student2 数组的概念 计算机处理数据时 经常出现数据是用某种有序的形式进行组织的情况 例如 随温度而改变的实验数据按学号排列的成绩表线性方程组的m n矩阵这些数据具有共同的特征1 都是由若干个分量组成2 数据的诸分量都是同一类型 可取任何数据类型 3 这些分量是按一定顺序排列的数组 按序排列的具有相同类型的变量的集合用一符号名 数组名 来表示这一组数用数组名后跟下标唯一地确定数组中的元素数组的首地址 数组元素的类型和个数 数组长度 a11a12 a1na21a22 a2na31a32 a3n am1am2 amn 一维数组 一 定义一维数组类型名数组名1 exp 数组名2 exp 其中 exp为常量表达式如 inta 5 b 43 charV 9 floatx 20 y 5 W 1 m 4 W是个符号常量 1 数组名命名规则和简单变量名相同2 数组名后只能是 括起来的常量表达式 常量和符号常量 此用法不对 a 10 x n 3 常量表达式的值确定数组元素的个数 数据尺寸 二 一维数组的存储C编译程序是怎么管理一个数组呢 用连续的内存单元存放各个元素保存数组所需内存量与数组元素的基本类型和数组大小有关总字节数 sizeof 基本类型 数组元素个数如上例 总字节数 2 5 10 三 一维数组的应用数组必须先定义后引用C语言规定只能逐个引用数组元素 而不能一次引用整个数组引用一维数组元素的一般形式 数组名 下标 下标可以是整型常量或整型表达式 下标从0开始 最大下标值为数组元素个数减一 例如 a 0 a 5 a 7 a 2 3 数组元素的下标常用循环变量来控制 四 一维数组的初始化1 在定义数组时对数组元素赋以初值如 staticinta 4 1 2 3 4 结果 a 0 1 a 1 2 或inta 4 1 2 3 4 a 2 3 a 3 4注 标准C只有静态存储 static 数组和外部存储 extern 数组才能初始化 但TurboC和MicrosoftC的编译系统中 自动数组与外部存储数组均可以进行初始化2 给一部分元素赋初值如 staticintb 10 1 2 结果为 b 0 1 b 1 2 b 9 0注 对static数组不赋初值 系统会对所有数组元素自动赋以0值 3 若对全部数组元素赋初值时 可以不指定数组长度 如 intc 1 2 3 4 5 自动定义c数组长度为5注意 若被定义数组长度与提供初值的个数不相同 则数组长度不能省略 如 inta 10 1 2 3 4 includevoidmain inta 5 1 2 3 4 5 intb 5 1 2 3 intc 1 2 3 4 5 staticintd 5 inte 5 inti for i 0 i 5 i printf d a i printf n for i 0 i 5 i printf d b i printf n for i 0 i 5 i printf d c i printf n for i 0 i 5 i printf d d i printf n for i 0 i 5 i printf d e i printf n 二维数组 在C语言中 数组的元素还可以是数组 这样就构成二维数组 所以二维数组可以看成是 数组的数组 照此办理 还可构成三维 四维数组 称多维数组 等等 二维数组是多维数组中最简单 最常用的数组 它代表多维数组的基本特征 一 二维数组的定义类型名数组名 C exp1 C exp2 如 inta 3 4 b 4 M M是符号常量 此下标提示行 此下标提示列 概念上可理解二维数组a 3 4 是一个3行4列的矩阵注意不能写成inta 3 4 b 4 m 定义 a为3 4 3行4列 的整型数组b为4 M 4行M列 的整型数组 在此基础上 可掌握多维数组的定义 如 floatx 2 3 4 可看成空间矩阵 如前面所说 可以把二维数组看作是一种特殊的一维数组 它的元素又是一个一维数组如 inta 3 4 可将a数组看作是一个一维数组它有3个元素 a 0 a 1 a 2 每个元素又是一个包含4个元素的一维数组 二 二维数组的存储二维数组从概念上可理解为行 列矩阵但存储器是一维的 需要按一定规则转换在内存中 二维数组中元素排列的顺序是 按行存放也就是说 数组元素的实际存放顺序是右边下标比左边下标变化得快 如 floata 2 3 多维数组依此类推 三 二维数组的引用二维数组的元素的引用形式 数组名 下标 下标 如 inta 2 4 b 5 3 a 2 1 2 2 1 下标可以是整型表达式b 1 2 a 1 3 2注意下标的最大的取值 即 要注意数组定义和数组元素引用的区别如定义 inta 3 4 则下标下限值是a 0 0 下标上限值是a 2 3 四 二维数组的初始化 按行存放 1 按存放顺序赋值如 intx 2 3 1 2 3 4 5 6 结果为 x 0 0 1 x 0 1 2 x 0 2 3x 1 0 4 x 1 1 5 x 1 2 62 按行赋值如 intx 2 3 1 2 3 4 5 6 结果同上 3 部分赋值如 staticintx 2 3 1 2 4 以存放顺序赋值 结果为 x 0 0 1 x 0 1 2 x 0 2 4x 1 0 0 x 1 1 0 x 1 2 0如 staticintx 2 3 1 2 4 以行赋值 结果为 x 0 0 1 x 0 1 2 x 0 2 0 x 1 0 4 x 1 1 0 x 1 2 0 4 省略第一维长度如 staticintx 3 1 2 3 4 5 6 7 结果为 x 0 0 1 x 0 1 2 x 0 2 3x 1 0 4 x 1 1 5 x 1 2 6x 2 0 7 x 2 1 0 x 2 2 0注意 不能省略第二维的长度 为什么 字符数组的定义 一 字符数组的定义在c语言中 没有专门的字符串变量 而是将字符串存入字符数组来处理既用一个一维数组来存放一个字符串 每个元素存放一个字符字符数组是数组的一个特殊情况 但它的定义方法与上述介绍的类似 引用方法可以与上述介绍的同 也有其独特的引用方法由于字符型与整型是互相通用的 因此上面定义也可改为 定义类型 char数组名 exp exp 如 charc 5 c 0 h c 1 a c 2 p c 3 p c 4 y intc 5 c 0 h c 1 a c 2 p c 3 p c 4 y 1 按元素赋值staticcharc 10 s t o r e c 0 c 1 c 2 c 3 c 4 c 5 c 6 c 7 c 8 c 9 注意 staticcharc 10 则c 0 c 1 c 9 初值均为 0 但若charc 10 则c 0 c 1 c 9 的值是未知的注意 在c语言中 将字符串作为字符数组来处理 既用一个一维数组来存放一个字符串 如 c 10 存放字符串 store 为了测定实际字符串长度 c语言规定了一个 字符串结束标志 既 0 既遇到字符 0 时 表示字符串结束 2 使用字符串常量给字符数组赋初值例 charc 6 china 或charc 6 china 或charc china 结果 c 0 c 1 c 2 c 3 c 4 c 5 注意 以字符串方式赋值时 必须保证数组元素个数 字符个数 1 字符串后面自动加上一个 0 includevoidmain chara 7 a p p l e charb 7 apple charc 7 staticcharx 7 inti for i 0 i 6 i printf 6d 6d 6d 6d n a i b i c i x i 由此可知 数组初始化后 剩余的元素均为 0数组未初始化 则static数组元素的值为 0 否则元素值是随即的 用一字符串给字符数组赋初值 然后打印出各元素的ASCII编码值 includevoidmain charstr Thisisastring inti 0 while str i 0 printf c d n str i str i i printf c d n str i str i 注意几个问题 用字符串给字符数组赋初值 系统自动加上空字符 0 终结符 空格字符 ASCII编码为32 0 空字符 ASCII编码为0两者均无法直接打印出来 三 字符串的引用与输入输出对于字符数组 在程序中既可以逐个引用字符串中的单个字符 数组元素 也可以一次引用整个字符串 数组 1 逐个字符数组元素输入输出 用 c格式符描述例 scanf c 字符串常用函数 1 字符串输出函数puts格式 puts 字符数组名 2 字符串输入函数gets格式 gets 字符数组名 以回车当作结束标记3 字符串连接函数strcat格式 strcat 字符数组名1 字符数组名2 4 字符串拷贝函数strcpy格式strcpy 字符数组名1 字符数组名2 5 字符串比较函数strcmp格式Strcmp 字符数组名1 字符数组名2 字符串1 字符串2返回值 0字符串1 字符串2返回值 0字符串1 字符串2返回值 06 测字符串长度函数strlen函数strlen 字符数组名 长度不包括 0
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!