计算机二级复习资料第三章PPT课件.ppt_第1页
计算机二级复习资料第三章PPT课件.ppt_第2页
计算机二级复习资料第三章PPT课件.ppt_第3页
计算机二级复习资料第三章PPT课件.ppt_第4页
计算机二级复习资料第三章PPT课件.ppt_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章数组 先思考一个问题 如何编程来实现对100个数进行排序呢 解题思路 定义100个整型变量来分别存放这100个整数 然后再对这些变量的值进行比较 交换等操作 太复杂了 晕 可编辑 第三章数组 1 一维数组 二维数组2 字符数组与字符串3 常用的字符串处理函数4 常见错误 可编辑 1 一维数组 二维数组 一维数组定义方式 类型说明符数组名 常量表达式 例如 inta 10 定义了有10个数据元素的int型数组afloatf 20 定义了有20个数据元素的float型数组fcharstr1 10 str2 20 定义了有10个和20个数据元素的char型数组str1和str2 可编辑 一维数组 知识点 常量表达式的值必须是一个正整数 对数组的大小不能动态定义 数组定义后 数组的长度就不能再改变 例如 下面对数组的定义是错误的 intn 10 inta n 数组的大小不能是变量intb 10 3 数组的大小不能是浮点常量intc n 10 数组的大小不能是变量表达式 可编辑 一维数组 3 数组中每个数组元素的类型均相同 它们占用内存中连续的存储单元 其中第一个数组元素的地址是整个数组所占内存块的低地址 也是数组所占内存块的首地址 最后一个数组元素的地址是整个数组所占内存块的高地址 末地址 可编辑 一维数组元素的引用 一般方式为 数组变量名 下标 知识点 1 下标是一个整型常量或整型表达式 一维数组元素的下标从0开始 如果数组长度为n 则元素的最大下标为n 1 如 a b a a a 2 只能逐个引用数组元素 不能一次引用整个数组 例 inta 3 a 0 2 将数组a的第1个元素赋值为2a 1 4 将数组a的第2个元素赋值为4a 2 a 0 a 1 将数组a的第1个元素的值与第2个元素的值相加赋给第3个元素 值为6 例inta 10 printf d a 必须for j 0 j 10 j printf d t a j 可编辑 一维数组的初始化 一维数组的初始化赋值 一般格式 数据类型符数组变量名 常量表达式 表达式1 表达式2 表达式n 初始化赋值说明 1 后面的表达式列表一定要用 括起来 被括起来的表达式列表被称为初值列表 表达式之间用 分隔 可编辑 一维数组的初始化 表达式的个数不能超过数组变量的大小 例inta 4 1 2 3 4 5 超出了数组的大小 3 表达式1是第1个数组元素的值 表达式2是第2个数组元素的值 依此类推 例inta 5 0 1 2 3 4 经过以上定义和初始化后 a 0 0 a 1 1 a 2 2 a 3 3 a 4 4 可编辑 一维数组的初始化 知识点 1 初始值表给出全部元素值时 则数组长度可缺省 如 a 5 12 3 4 0 367 等价于inta 12 3 4 0 367 2 给数组中的部分元素赋初始值 如 inta 5 1 2 3 则按照下标递增的顺序依次赋值 后两个元素系统自动赋0值 即a 0 1 a 1 2 a 2 3 而a 3 和a 4 系统自动赋值为0 a 3 0 a 4 0 3 数组中的全部元素赋初值为0 如 inta 5 0 可编辑 一维数组在程序中赋值 C语言除了在定义数组变量时用初值列表对数组整体赋值以外 无法再对数组变量进行整体赋值 例inta 5 a 1 2 3 4 5 a 1 2 3 4 5 a 5 1 2 3 4 5 错误 例inta 5 1 2 3 4 5 可编辑 一维数组在程序中赋值 数组定义后 如何对数组进行赋值呢 答 只能通过C语句对数组中的数组元素逐一赋值 使用赋值语句来逐一赋值 例inta 4 a 0 1 a 1 2 a 2 3 a 3 4 charstr 80 str 0 b str 1 y str 2 e str 3 0 将数组str赋值为一字符串 bye 可编辑 一维数组在程序中赋值 使用循环语句来逐一赋值 例如 将数组a的各元素赋值成奇数序列 inta 10 i for i 0 i 10 i a i 2 i 1 例如 接受用户键盘输入赋值给数组各元素 inta 10 i for i 0 i 10 i scanf d 判断下列赋值是否正确 inta 3 scanf d d d a inta 3 scanf d d d 可编辑 练习 以下能正确定义一维数组的选项是A inta 5 0 1 2 3 4 5 B chara 2 3 5 0 C chara A B C D inta 5 0123 B 解析 选项A 中 定义的初值个数大于数组的长度 选项C 中 数组名后少了中括号 选项D 中 整型数组不能赋予字符串 可编辑 练习 读程序 includemain ints 1 2 3 4 4 3 2 1 1 1 2 3 c 5 0 i for i 0 i 12 i c s i for i 1 i 5 i printf d c i printf n 程序的运行结果是4332 可编辑 练习 找出数组中最小的值所在的下标值main inti j 0 p a 5 4 1 7 10 7 p j for i j i 5 i if a i a p printf d p p i 解析 该程序先判断a i a p 如果条件为真 则a i 比当前设定的最小值小 p保留的当前最小元素的下标 那么将i赋给p 即将比较过的最小元素下标保留在p中 作为下面判断的标准 例 用冒泡排序法将8个整数按照从小到大的顺序排序 排序过程 1 比较第一个数与第二个数 若为逆序a 0 a 1 则交换 然后比较第二个数与第三个数 依次类推 直至第n 1个数和第n个数比较为止 第一趟冒泡排序 结果最大的数被安置在最后一个元素位置上 2 对前n 1个数进行第二趟冒泡排序 结果使次大的数被安置在第n 1个元素位置 3 重复上述过程 共经过n 1趟冒泡排序后 排序结束 新航线培训中心 38 49 76 97 97 97 97 13 27 30 13 76 76 76 27 30 13 65 65 65 27 30 13 49 49 49 27 30 13 38 38 38 27 30 冒泡排序图示效果 新航线培训中心 include defineNUM8voidmain inta NUM i j t printf input dnumbers n NUM for i 0 ia j 1 交换a j 和a j 1 t a j a j a j 1 a j 1 t 输出排好序的数据printf thesortednumbers n for i 0 i NUM i printf d a i 新航线培训中心 可编辑 例 用数组求Fibonacci 斐波纳契 数列前20个数 如 112 3 5 8 13 includevoidmain inti intf 20 1 1 for i 2 i 20 i f i f i 2 f i 1 for i 0 i 20 i if i 5 0 printf n printf 12d f i 可编辑 二维数组 二维数组的定义定义方式 类型说明符数组名 常量表达式1 常量表达式2 例 inta 3 4 注 不能写成inta 3 4 或inta 3 4 则二维数组a中的元素是第0行第1行第2行 可编辑 二维数组的存储形式 按行存放 先行后列chara 3 4 数组名a仍然代表数组的起始地址 可编辑 二维数组元素的引用 二维数组元素的引用形式为 数组名 行下标 列下标 例 用二维数组 实现从键盘为2 3数组输入值 并输出数组所有元素之和 include stdio h main inta 2 3 i j sum 0 for i 0 i 2 i for j 0 j 3 j scanf d 一般用两层循环嵌套来控制二维数组 外层循环表示行 内层循环表示列 可编辑 二维数组的初始化 分行给二维数组初始化 直观inta 3 4 1 2 3 4 5 6 7 8 9 10 11 12 将所有元素写在一个花括号中 不直观inta 3 4 1 2 3 4 5 6 7 8 9 10 11 12 只对部分赋值 其余元素值自动为0inta 3 4 1 5 9 inta 3 4 1 0 6 0 0 9 inta 3 4 1 5 6 inta 3 4 1 9 若全部元素都赋初值 则数组第一维长度可不指定 如 inta 3 4 1 2 3 4 5 6 7 8 9 10 11 12 inta 4 1 2 3 4 5 6 7 8 9 10 11 12 可编辑 练习 以下错误的定义语句是A intx 3 0 1 1 2 3 B intx 4 3 1 2 3 1 2 3 1 2 3 1 2 3 C intx 4 1 2 3 1 2 3 1 2 3 1 2 3 D intx 3 1 2 3 4 参考答案 C 解析 本题考查的是二维数组的定义和初始化方法 C语言中 在定义并初始化二维数组时 可以省略数组的第一维的长度 但是不能省略第二维的长度 故选项C 错误 可编辑 2 字符数组与字符串 1 字符串的本质字符串是用双引号括起来的字符序列 字符串是利用字符数组来存放和处理的 所以可以认为 字符串是一种以 0 结尾的字符数组 2 字符数组定义 例 charc 10 ch 3 4 可编辑 字符数组的初始化 如 charc 3 a b c charc 2 10 a b c d e 字符数组c各元素初值为 a b c 0 0 0 0 0 0 0 d e 0 0 0 0 0 0 0 也可以用整型常量初始化字符数组如charc 5 H 111 119 1 用字符常量初始化数组 可编辑 字符数组的初始化 2 用字符串常量初始化数组如 charc Howareyou 也写成 charc Howareyou 相当于 charc H o w a r e y o u 0 charc 8 white black 可编辑 字符串与字符数组的区别 1 在使用字符数组时 应注意以下两种定义方式的区别 chara ABCDE charb 10 A B C D E a数组占6个字节 有5个字符sizeof a 的值为6b数组占10个字节 有5个字符sizeof b 的值为102 字符串是一种特殊的字符数组 字符串肯定有结束标志 0 而字符数组中则可以没有 0 可编辑 3 常用的字符串处理函数 字符串的输入 格式 gets 字符数组 应包含的 h文件为stdio h功能 从键盘输入一以回车结束的字符串放入字符数组中 并自动加 0 说明 输入串长度应小于字符数组维数 gets函数 例 charstr 80 gets str 当输入 I love china 表示空格 表示回车 时 str中的字符串将是 Ilovechina 可编辑 3 常用的字符串处理函数 scanf函数 格式 scanf s 字符数组 应包含的 h文件为stdio h功能 从键盘输入一以空格或回车结束的字符串放入字符数组中 并自动加 0 说明 输入串长度应小于字符数组维数 例 charstr 80 scanf s str 当输入 hello china 时 str将是 hello 注意与gets的区别 可编辑 scanf函数的使用 例 利用scanf函数可以连续输入多个字符串 输入时 字符串间用空格分隔 charstr1 40 str2 40 str 40 scanf s s s str1 str2 str3 输入 I love china str1 I str2 love str3 china 例 使用 ns格式控制符限制输入的字符个数 charstr 10 scanf 9s str 最多可读入9个非空格字符到str中 可编辑 字符串的输出 格式 puts 字符串地址 应包含的 h文件为stdio h功能 向显示器输出字符串 输出完 换行 说明 如果是字符数组 则必须以 0 结束 puts函数 可编辑 printf函数 格式 printf s 字符串地址 应包含的 h文件为stdio h功能 依次输出字符串中的每个字符直到遇到字符 0 0 不会被输出 例 charname JohnSmith printf Thenameis s n name printf Lastnameis s n 输出结果 Thenameis JohnSmithLastnameis SmithFirstnameis John 字符串的输出 可编辑 字符串长度函数strlen 格式 strlen 字符串地址 应包含的 h文件为string h功能 计算字符串长度返值 返回字符串实际长度 不包括 0 在内 例 charstr 0123456789 printf d strlen str 输出结果为10printf d strlen 输出结果为5 问 charstr 0123 0456789 printf d strlen str printf d strlen 输出结果为9 输出结果为4 转义字符 可编辑 strlen函数练习 问 对于以下字符串 strlen s 的值为 1 chars 10 A 0 B C 0 D 2 chars t v 0will n 3 chars x69 082 n 1 1 2 3 3 1 字符串有多个 0时 其有效长度为到第一个 0的长度 可编辑 字符串连接函数strcat strcat 字符数组1 字符数组2或字符串 功能 将字符数组2 字符串 连接到字符数组1的后面 函数值为字符数组1的地址 如 charc1 30 Howareyou n charc2 Iamfine printf s strcat c1 c2 输出结果 Howareyou Iamfine 知识点 1 连接前字符数组1和字符数组2的尾部都必须有一个 0 连接时将字符数组1后的 0 自动删除 字符数组2后的 0 一并连接到字符数组1后 2 字符数组1必须有足够长度 以便在其有效字符后能够容纳下字符数组2中的字符串 问 以下输出的字符串是多少 chars 50 123 b 9876543 1 printf s strcat s b printf s strcat s 123987654312376543 可编辑 字符串复制函数strcpy strcpy 字符数组1 字符数组2或字符串 功能 将字符数组2 字符串 复制到字符数组1中去 函数值为字符数组1的起始地址 如 charc1 30 c2 Howareyou n printf s strcpy c1 c2 输出结果 Howareyou 知识点 1 字符数组1的长度能容纳字符数组2中的所有字符 2 将字符数组2中的 0 一起复制到字符数组1中 问 以下输出的字符串是多少 chars 50 123 b 9876543 1 printf s strcpy s b printf s strcpy s 987654376543 可编辑 字符串比较函数strcmp strcmp 字符数组1或字符串1 字符数组2或字符串2 功能 将两个字符数组 字符串 自左向右对应的字符逐个进行比较 按ASCII码值大小比较 直到出现不同字符或遇到 0 字符为止 函数值为一个整型数 可编辑 常用的字符和字符串处理函数 可编辑 4 常见错误 数组下标越界 如 inta 10 i for i 1 i 10 i scanf d 最大下标为9 数组名为常量 不能这样赋值 strcpy a b scanf s str 可编辑 常见错误 向一个字符数组直接赋值 如 charstr 30 str abcd 对数组象对待普通变量一样进行操作 如 charstr1 30 abc str2 30 abc if str1 str2 strcpy str abcd strcmp str1 str2 可编辑 练习 读程序 以下程序的输出结果是 includemain printf d n strlen IBM n012 1 参考答案 9解析

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论