




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 30 5 3字符数组与字符串 chara W charb a charc n chard g chare L charf i 如何让程序存储我的姓名 WangLi charname 15 W a n g L i 用若干个字符 用字符数组 用字符串charname 15 WangLi 2 30 5 3 1一维字符数组 一维字符数组的定义 引用 初始化与其他类型的一维数组一样 charstr 80 定义一个含有80个字符型元素的数组strchart 5 H a p p y 初始化数组t 输出数组t的所有元素for i 0 i 5 i putchar t i 3 30 5 3 2字符串 字符串常量是双引号括起的任意字符序列 HelloWorld WangPing Pleaseenteryourfullname Hello n 字符串常量中可以包含转义序列 字符串结束符 字符串的有效长度 有效字符的个数 字符串常量 3 4 30 字符串的存储 autochars 80 Happy 字符串遇 0 结束第一个 0 前面的所有字符和 0 一起构成了字符串 Happy 0 之后的其他数组元素与该字符串无关 字符串由有效字符和字符串结束符 0 组成 5 30 字符串与字符数组 在 语言中没有专门的字符串变量 通常用一个字符数组来存放一个字符串字符数组和字符串的区别是 字符串的末尾有一个空字符 0 字符串可按如下方式声明并初始化 charname 15 W a n g L i 0 charname 15 WangLi charpassword 12345678 手工加入一个空字符 系统将自动加入一个空字符 省略数组大小 系统自动计算 大小为后面的字符总数加1 最后一个元素存入一个空字符 6 30 2 对字符串的操作 把字符串放入一维字符数组 存储 对字符串的操作 对字符数组的操作普通字符数组 数组元素的个数是确定的 一般用下标控制循环字符串 没有显式地给出有效字符的个数 只规定在字符串结束符 0 之前的字符都是字符串的有效字符 一般用结束符 0 来控制循环循环条件 s i 0 7 30 5 3 3字符串的输入输出 例11从键盘读入一个字符串 以回车符表示输入结束 输出该字符串长度 然后输出该字符串 方法1 象普通数组一样逐元素输入输出 输入 s 0 getchar 读入第一个字符i 0 while s i n 当不是回车 i s i getchar s i 0 将 n 转换为 0 或i 0 while s i getchar n i s i 0 将 n 转换为 0 for i 0 str i 0 i putchar str i 字符串长度是i还是i 1 i 1 字符串长度是有效字符个数s 0 s i 1 共i个 输出字符串 不需要知道字符个数 0 是结束标志 0 8 30 方法2 用 s整体输入输出 charname 10 scanf s name printf s name 格式描述串中使用转换字符串 s WangLi Wang 空格是 s输入结束的标志 9 30 方法3 用gets和puts函数 charname 10 gets name puts name WangLi WangLi 从键盘上读入一个完整的行 存入字符数组name 并用空字符 0 取代行尾的换行符 n 把字符数组中的字符串输出到显示器 10 30 5 3 4字符串应用举例 例12 输入一行字符 字符个数不多于80 统计其中空格的个数 思路分析 1 定义字符数组str 81 2 读入字符串若字符串确定不含空格 可以用scanf s i 11 30 includeintmain charstr 81 inti count 0 printf n请输入一行字符 n gets str for i 0 str i 0 i if str i count printf n其中的空格总数为 d n count Cisaprogramminglanguage 在循环执行时 扫描整个数组以统计出空格 的数量 直到遇到字符 0 其中的空格总数为4 也可用while循环i 0 while str i 0 if str i count i 12 30 1 输入一个以回车结束的字符串 少于80个字符 统计其中数字字符的个数 2 输入一个以回车结束的字符串 少于80个字符 统计其中0 1 2 9 哪个数字字符的出现次数最多 模仿练习 includeintmain intcount i charstr 80 printf Enterastring gets str count 0 for i 0 str i 0 i 若是数字if str i 0 count printf count d n count return0 模仿练习源程序 Enterastring It s512 count 3 14 30 例13进制转换 输入一个以回车结束的字符串 少于80个字符 把字符串中的所有数字字符 0 9 转换为整数 去掉其他字符 例如 字符串 3a56bc 转换后的整数为356 难点分析 如何将字符串转化为整数值 例如字符串 356 转换为整数356 1 遇到第一个整数3 d 3 2 遇到第二个整数5 d d 10 5 35 3 遇到第三个整数6 d d 10 6 356 d 0 for i 0 str i 0 i if str i 0 str 9 d d 10 str i 0 str i 中存的是字符 str i 0 将其转化为对应的十进制数字 15 30 includeintmain intd i charstr 80 printf Enterastring gets str d 0 for i 0 str i 0 i 若是数字if str i 0 d d 10 str i 0 printf d d n d return0 16 30 例14统计单词个数 方法1 统计空格数 问题 没多个空格相连的情况方法2 如果一个空格紧跟一个非空格 一定是新单词开始thisismyfirsttest 问 第一个单词是否算上 答 count再加1就行 再问 若第一个单词前有空格会怎样 就又多了1 17 30 思路分析 方法3 如果一个非空格后是一个空格 一定是单词的结束thisismyfirsttest 问 最后一个单词没算上 答 count再加1就行 再问 若最后一个单词后有空格会怎样 就又多了1 18 30 思路分析 设置一个标志变量word开始word置0For i 0 str i 0 i 扫描整个字符串若str i 是空格word置0若str i 不是空格且word 0则新单词出现 count word置1 19 30 includeintmain charstr 1000 inti word count word 0 count 0 gets str for i 0 str i 0 i if str i word 0 if str i 程序实现 20 30 5 3 5常用字符串函数 以下介绍的字符串函数定义在头文件中 1 strlen 求字符串长度 2 strcpy 字符串复制 赋值 3 strcmp 字符串比较 4 strcat 字符串合并 5 strrev 字符串逆置 21 30 2020 4 15 21 1 求字符串长度strlen 调用格式 strlen str 功能 测试字符串长度 函数值就是str中字符的个数 输出结果 5 例如 charstr 10 China printf d strlen str 或printf d strlen China 22 30 2020 4 15 22 2 字符串复制函数strcpy 调用格式 strcpy str1 str2 功能 将str2中的字符串复制到str1数组中 思考 这样赋值s1 Beijing 或s1 s2 可以吗 为什么 s1的结果 例如 chars1 10 s2 Beijing strcpy s1 s2 或 strcpy s1 Beijing 23 30 字符串的赋值需要通过strcpy实现 charstr1 10 China 正确 charstr1 10 str1 China 错误 改为 charstr1 10 strcpy str1 China charstr1 10 str2 China str1 str2 改为 charstr1 10 str2 China strcpy str1 str2 为什么不允许这样赋值 因为数组名是一个常量 代表数组的首地址 常量不可以被赋值 其值不可改变 错误 24 30 24 3 字符串比较函数strcmp 调用格式 strcmp str1 str2 功能 比较str1和str2的大小 若前者大则返回一个正整数 若后者大则返回一个负整数 若两者相等 则返回0 注意 比较两个字符串的大小只能使用此函数 而不能使用 等关系运算符 字符串比较规则 按自左至右的顺序 对应字符比较 若当前对应字符不同 则返回二者ASCII码的差 若二者相同 则比较下一个字符 直到遇到不同字符为止 函数返回值为两字符的差 str1str2 cat fan abcde abd abcde abc abc abc strcmp str1 str2 0 strcmp str1 str2 0 strcmp str1 str2 0 strcmp str1 str2 0 25 30 2020 4 15 25 4 字符串连接函数strcat 调用格式 strcat str1 str2 功能 把str2中的字符串连接到str1字符串的后面 结果放在str1数组中 Str1必须足够大 输出结果 beijingandshanghai 例如 charstr1 21 beijingand charstr2 shanghai strcat str1 str2 printf s str1 26 30 5 字符串逆置函数strrev 调用格式 strrev str 功能 将字符串str前后颠倒 charstr 10 china strrev str puts str 输出 anihc 27 30 小练习 输入三个字符串 输出最大的字符串 28 30 5 3 6字符串数组 一维字符数组可以存储一个字符串 二维字符数组可以存储多个字符串 称为字符串数组 字符串数组的每一行元素中都含有字符串结束符 0 因此它的一行元素可以和字符串一样输入 输出及初始化 如 charcolor 10 red blue yellow green purple 例15 输入n 输入n个字符串输出最大字符串 字符串数组可以用二维字符数组存储 29 30 假定字符串个数不多于100个 每个字符串长度不超过80 例15 输入n 输入n个字符串输出最大字符串 1 用第一个数str 0 做临时最大值max 2 擂台赛 fo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业保安合同协议
- 餐厅洗碗工合同协议书
- 水果配送合同协议
- 投资合同到期后续签协议
- 合同拆分协议盖章
- 拍摄保密协议合同
- 代租车协议合同
- 商务合同财产协议
- 合同继签协议
- 铁路代发协议合同
- 第九届全国大学生测井技能大赛备赛试题库-中(多选题)
- 公交驾驶员心理素质培训考核试卷
- 【安踏体育跨国并购亚玛芬体育的财务绩效探究12000字(论文)】
- 二下音乐《阿西里西(简谱、五线谱)》公开课课件
- 2024年甘肃省中考英语真题(含答案)
- NB-T33009-2021电动汽车充换电设施建设技术导则
- 南通2024年江苏南通市公安局苏锡通园区分局警务辅助人员招聘12人笔试历年典型考题及考点附答案解析
- 装配式建筑装饰装修技术 课件 模块七 集成卫浴
- 学校科研课题管理办法
- 中美贸易战浅析
- 部编版语文四年级下册第四单元课外同步阅读练习及答案(两篇)
评论
0/150
提交评论