C语言数组应用与字符串.ppt

上传人:max****ui 文档编号:6333249 上传时间:2020-02-23 格式:PPT 页数:31 大小:571.50KB
返回 下载 相关 举报
C语言数组应用与字符串.ppt_第1页
第1页 / 共31页
C语言数组应用与字符串.ppt_第2页
第2页 / 共31页
C语言数组应用与字符串.ppt_第3页
第3页 / 共31页
点击查看更多>>
资源描述
第7讲数组应用与字符串 阅读别人程序是学习程序设计的重要方法 要注意学习别人编程思路 也要注意别人的程序风格 上周平台编程训练情况 开始出现没有完成 怎么办 QQ群 目前有三分之二参与 平台发帖区 23个问题贴 其中我转帖qq问题的聊天记录9个帖子 各种问题丰富 可谓积极展现问题 希望大家去浏览帖子 注意总结各类经验 本周课后阅读题 体验数组 电信类134班 1304010412 李笑北京市中国1分钟40秒电信类134班 1304010408 李昂北京市中国4分钟16秒电信类133班 1304010311 李佳奇北京市中国7分钟50秒电信类134班 1304010417 刘珂辰北京市中国9分钟47秒电信类133班 1304010305 高文兴北京市中国11分钟46秒电信类134班 1304010407 蓝敏迪北京市中国23分钟47秒电信类133班 1304010309 胡冰北京市中国39分钟51秒电信类133班 1304010324 施杨北京市中国43分钟26秒电信类133班 1304010334 杨培文北京市中国1小时5分钟电信类133班 1304010312 李兴北京市中国1小时18分钟电信类134班 1304010436 臧竞之北京市中国1小时48分钟电信类133班 1304010302 陈禹志北京市中国2小时电信类134班 1304010404 戴隆凯北京市中国2小时13分钟电信类134班 1304010422 王宾宾北京市中国2小时36分钟电信类134班 1304010438 张思梦北京市中国3小时12分钟电信类134班 1304010432 许文达北京市中国3小时18分钟电信类134班 1304010414 梁惠莹北京市中国3小时38分钟电信类134班 1304010401 曹磊北京市中国4小时电信类133班 1304010335 杨玉英北京市中国5小时26分钟电信类134班 1304010434 杨雪北京市中国5小时58分钟电信类134班 1304010440 赵宁北京市中国6小时13分钟电信类133班 1304010328 孙昕北京市中国6小时21分钟电信类134班 1304010437 张春玲北京市中国6小时58分钟电信类134班 1304010429 王云飞北京市中国8小时42分钟电信类134班 1304010420 孟雅文北京市中国23小时3分钟电信类134班 1304010428 王岩北京市中国23小时4分钟电信类133班 1304010307 桂雅楠北京市中国23小时5分钟电信类133班 1304010339 张晓旭北京市中国23小时10分钟电信类133班 1304010329 王润冬北京市中国23小时41分钟 有29个同学开始复习或者预习 表扬榜 代码挑错1 includevoidmain intn scanf d 5 2成绩判断 魏莉 代码挑错2 max 1014 min 1014 for i 0 imax max a i if a i min min a i printf min d max d n min max 6 3最大最小值 张思梦 min a 0 max a 0 代码挑错3 includevoidmain intn y r i d 0 intt intn inty scanf d d d 6 8天数计算 王润冬 数组 函数缺返回值 下标与月份 代码挑错4 includevoidmain intn y r t 0 i scanf d d d 变量 某同学 6 8天数计算 代码挑错5 includevoidmain intn a b c p 0 scanf d 6 9三色球问题 魏莉 课后代码阅读检查 杨培文 includevoidmain intm i scanf d 绘制流程图 本讲教学内容 1 了解二维数组的定义 初始化和引用方法 2 熟悉字符串与字符数组 特别是字符串整体输入输出 以及加密 个数统计的算法 3 熟悉一维数组在数值计算 数据统计 排序和数据检索 查找 删除 插入 方面的应用 二维数组存储结构 表格或矩阵结构 逻辑结构 二维数组恰似一张表格 或矩阵 数组元素 行号 列号 M 3 3 具有如下逻辑结构 M 0 0 M 0 1 M 0 2 M 1 0 M 1 1 M 1 2 M 2 0 M 2 1 M 2 2 存贮结构 按自然顺序 在内存中分配存贮单元 数组在内存中排列如下 M00M01M02M10M11M12M20M21M22 二维数组初始化 按照二维数组元素的物理存储次序给所有或部分数组元素提供数据值intscore 3 4 85 87 93 88 86 90 95 89 78 91 82 95 以行结构方式提供各数据值intscore 3 4 85 87 93 88 86 90 95 89 78 91 82 95 C语言允许在为二维数组初始化时省略行下标值 但列下标值不能省略 intmatrix 4 85 87 93 88 86 90 95 89 78 91 82 95 例 一个3 4矩阵 要求编程序求出其中值最大那个元素的值 以及其所在的行号和列号 两重循环控制行 列变化 记录最大值以及行 列下标 N S流程图 includevoidmain inti j row 0 colum 0 max inta 3 4 1 2 3 4 9 8 7 6 10 10 5 2 max a 0 0 for i 0 imax max a i j row i colum j printf max d row d colum d n max row colum 运行结果 max 10 row 2 colum 1 行 列 字符数组 字符是用单引号括起来的单个字符 它在存储器中占1个字节 例如 A 字符串是用双引号括起来的一串字符 它在存储器中占n 1个字节 即字符串的结束符 0 也占1个字节的位置 例如 abc 有效字符的个数称为字符串长度 例如 abc 的长度为3 但占4个字节 0 占一位 字符串是用字符型数组存放的 字符数组的定义 初始化和输入输出 字符数组的定义格式 char字符数组名 最大字符数 1 字符串 整体赋值例 charc 7 MONDAY 或charc 7 MONDAY 或charc 7 c 0 M c 1 O c 2 N c 3 D c 4 A c 5 Y c 6 0 c 6 0 例 chard 7 MON 字符数组的元素是单个字符数据 字符串的结束符 0 也占1个字节的位置 字符串的输入与输出 而和普通数组不同的是 字符串数组允许聚集操作 即整体赋值 字符串的输入charname 20 scanf s name 字符串的输出printf s n name 平台题7 2 问候语 数组名 即首地址 当字符串中有空格符时 用这种方法无法接收全部的字符串 使用gets函数 例如 gets name 字符统计 字符数组 输入一行字符 分别统计出其中英文字母 空格 数字和其他字符的个数 方法可多种 1 用选择与循环 变量2 用选择与循环 数组 提示 建议使用带空格字符串输入方式 这样统计个数时所用的循环结束条件可判断是否是字符串结束标志 0 平台题7 5 字符加密 恺撒 替换 加密法加密规则 将每个字母用字母表中排在其后面的第3个字母的大写形式来替换 如字母d或D就用G来替换 对于字母表中最后的三个字母 可将字母表看成是首尾衔接的 如字母y或Y用B来替换 字符串中其他非字母符号不做改变 使用该方法编写一个字符串加密程序 例 恺撒 替换 加密while c i 0 if c i a 平台题7 8 小写转换为大写 凯撒加密算法 数值计算 一维数组 求和 均值 平台题6 6 二维数组 矩阵转置 平台练习7 3 数据统计 一维数组 统计某类数据个数统计小于均值的个数 第6讲课堂练习 排序 一维数组 冒泡排序法 使用冒泡排序法编写程序 可以对任意输入的10个整数进行从小到大的排序 书134页例7 3 经过第一趟 共5次比较与交换 后 最大的数9已 沉底 然后进行对余下的前面5个数第二趟比较 如果有n个数 则要进行n 1趟比较 在第1趟比较中要进行n 1次两两比较 在第i趟比较中要进行n i次两两比较 for j 0 ja i 1 t a i a i a i 1 a i 1 t 程序运行结果如下 input10numbers 10481265 76100 45123 thesortednumbers 76 4501481265100123 求极值的方法之一 排序后 最大值 a 9 最小值 a 0 数据检索 一维数组查找 平台题7 1删除 平台题7 4插入 平台题7 7 已有一个有序数组a 9 1 2 3 4 6 9 12 23 45 现输入一个数n 查找数组中是否有这个数 如果有 则把这个元素删除掉 并输出删除后的数组元素 如果没有 则提示数组中没有该数 编程思路 与插入不同 9个数 数组大小定义9足够 下面列出主要过程 最好彼此独立 混在一个循环里太乱 1 查找数组中是否有n的编程思路 已经做过 平台练习5 4题 2 删除数组中某个数的编程思路 设n在数组中下标为k 则从k开始到倒数第二个元素的下标为止 值依次顺序前移 即a i a i 1 3 输出删除后的数组元素 注意 数组原来有9个数 删除n对应的元素后 数组只需要输出8个数即可 一维数组应用 删除数 平台题7 4 一维数组应用 插入数 已知有序数组a 9 1 2 3 6 8 9 12 23 33 从键盘上输入一个数n 将n插入到a数组中 要求插入n后的数组依然有序 编程思路 数组定义至少比9大 因为已经有9个元素 再插入n 至少得定义10个大小 否则将发生下标越界错误 主要过程 1 n插入第10位置 即n a 8 时 比较简单 执行a 9 n 即可 2 插入序列中某个位置 第1 9位置 需要3个步骤 1 寻找n该插入的位置 即第一个比n大的数组元素 n a i 时i的值b 退出循环 break 2 将数组从最后1个元素开始 直到b位置为止 元素值依次后移 给插入n腾位 3 将n插入 a b n3 插入n后输出整个数组元素 以逗号分隔 平台题7 7 一维数组的其他应用 假设13人围成1圈 从第1个人开始顺序报号1 2 3 1 2 3 凡是报3的退出圈子 找出最后留在圈子中的人原来的序号 思考 如果不是围成1圈呢 例如 排成1行 编程提示 分3个步骤 彼此独立 建议用三个循环分别对应3个步骤1 报数资格设置 定义一个数组对应13个人 数组元素的初值都设每个人都有报数资格的 2 报数过程 报数用一个变量k即可 从头遍历整个数组 从第1个元素到第13个元素 1 如果对应的数组元素是有报数资格的 则k 然后判断k是否是3的倍数 如果是 则对应数组元素设置为剔除标志 同时累计剔除人数 如果剔除人数达到12人 意味着只剩1人了 那么退出循环 2 如果对应的数组元素已经被设置了剔除标志 则无报数资格 则啥也不做 此种情况不需要编程 3 当一次遍历完成后 即判断完第13个人后 将数组元素的下标设置为 1 执行完下标 后 下标为0 重新开始新的1圈报数3 在2步骤完成后 搜索整个数组 从第1个元素到第13个元素 查找到数组元素值为有报数资格的 输出该元素位置 即编号 平台题7 9 7 1查找数7 2问候语7 3矩阵转置7 4删除数7 5统计字符个数本周课后习题7 6换零钱问题7 7插入数7 8字符串加密7 9约瑟夫问题7 10多个数排序 本周平台训练 温故 期中复习 1 变量 类型 命名 赋值 输入或者 输出2 选择控制 表达式 算术 关系 逻辑 区间表示 if语句 例如水的状态 分段函数 switch语句 例如成绩判断 可以用if嵌套代替 3 循环控制 累加求和 例如1 n范围奇数和 最大最小值 穷举法 循环嵌套 例如水仙花数 鸡兔同笼 break与continue用法 例如素数判断4 数组 一维数组 例如输出小于均值的个数
展开阅读全文
相关资源
相关搜索

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


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

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


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