第10章 字符串处理.ppt_第1页
第10章 字符串处理.ppt_第2页
第10章 字符串处理.ppt_第3页
第10章 字符串处理.ppt_第4页
第10章 字符串处理.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

第8章字符串处理 主讲教师 郑立垠 计算机与通信工程学院计算机应用技术系 本章主要内容 1 字符数组与字符串的概念2 字符串输入 输出函数3 字符串处理函数 字符串的概念 字符串 若干字符的组合看作一个整体 称为字符串字符串常量 用双引号 括起的字符序列字符串的存储在内存中连续存储 以字符 0 为结束标识 语言中没有专门的字符串变量 通常用一个字符数组来存放一个字符串 使用字符数组或字符指针来处理字符串 ChinaUniversityofPetroleum HelloWorld printf Inputanumber n 定界符 ASCII码值为0 字符数组 字符数组每个元素都是字符类型的数组 它的每个元素存放一个字符 占一个字节 字符数组的定义如charc 10 数组c是一维数组 它可以存放10个字符 或者一个长度不大于9的字符串如charname 3 10 数组c是二维数组 它可以存放30个字符 或者3个长度不大于9的字符串注意 字符串只能存放在数组中 一维字符数组的初始化 用字符常量赋值如 charc 5 C h i n a 又如 charc 6 C h i n a 0 再如 charc 7 C h i n a 不是字符串 是字符串 表示空字符NULL 一维字符数组的初始化 用字符串常量赋值如 charc 6 China 或者charc 6 China 是字符串 注 以字符串方式赋值时 必须保证数组元素个数 字符个数 1 字符串后面自动加上一个 0 一维字符数组的初始化 省略数组长度如 charc C h i n a 再如 charc China 注意 不可以为数组单独整体赋值 例如charstr 10 str China 不是字符串 是字符串 字符数组元素的引用 可以为数组元素赋值 也可以输入 输出元素的值 例 对字符数组c1赋值 0 9 对字符数组c2赋值 A Z 然后输出c1和c2中的数据 chap8ex1 c includeintmain charc1 10 c2 26 inti for i 0 i 10 i c1 i i 48 for i 0 i 26 i c2 i i A for i 0 i 10 i printf c c1 i printf n for i 0 i 26 i printf c c2 i printf n return0 字符串的输入和输出 C语言中常用的字符串输入输出函数有scanf和printf gets和puts等1 printf函数一般格式为 printf s 字符数组名或字符串常量 其中 s为字符串描述符例如 charc 15 HelloChina n printf s c printf s HelloChina n 注意 用格式 s控制输出1 输出项一定要是地址2 遇到 0 便结束输出 字符串的输入和输出 2 scanf函数一般格式为 scanf s 字符数组 其中 s为字符串描述符 对应的输入项是字符数组的首地址例如 charc 10 scanf s c 注意 scanf接收数据的变量要求的是地址 对简单变量 数组元素 前面加 对一维数组 数组名就是数组的首地址对二维数组 只写行下标是本行首地址 无需加 字符串的输入和输出示例 chap8ex2 c includeintmain chars1 15 chars2 L i s i 0 chars3 Wangwu inti 0 printf 请向数组中输入一个姓名 scanf s s1 printf 第一个字符串是 while s1 i 0 printf c s1 i i printf n第二个字符串是 printf s s2 printf n第三个字符串是 printf s n s3 return0 includeintmain charstr 20 printf 输入一个字符串 scanf s str printf 输入的字符串为 s str printf n return0 字符串的输入和输出 输入一个字符串 Hello 输入的字符串为 Hello 输入一个字符串 HelloChina 输入的字符串为 Hello scanf函数使用空白 空格 制表符 回车符等 作为输入数据的分隔符 所以只能获取 单词 scanf函数只能输入不包括空格 t和 n的字符串 字符串的输入和输出 3 字符串输入函数gets 调用格式 gets 字符数组 功能 从键盘输入一个字符串 以回车结束 存入字符数组中 用空字符 0 取代行尾的换行符 n 并返回一个函数值 该函数值是字符数组的首地址 4 字符串输出函数puts 调用格式 puts 字符数组或字符串常量 功能 输出一个字符串 输出后自动换行 即puts str 与printf s n str 等价 使用gets 函数允许在字符串中输入空格 includeintmain charstr 15 printf 输入一个字符串 gets str printf 输入的字符串是 puts str return0 字符串的输入和输出 输入一个字符串 HelloChina 输入的字符串是 HelloChina 字符串示例 例 输入一句话 统计空格的个数 includeintmain charline 80 inti count printf 请输入一行字符 gets line i 0 count 0 while line i 0 if line i count i printf n其中的空格总数为 d n count return0 for i 0 count 0 line i 0 i if line i count 字符串数组 字符串数组是存放了若干字符串的字符数组 是一个二维数组 每个字符串占一行 字符串的个数对应数组的行数 字符串数组的定义为 char数组名 字符串个数 字符串长度 如 charstr 3 20 可将字符串数组当作一维数组使用 这个一维数组中的每个元素是一个字符串 字符串数组 字符串数组的初始化 chara 3 8 str1 str2 string3 charb 6 s1 st2 str3 字符串的引用将字符串数组当作一维数组使用 这个一维数组中的每个元素是个一维数组 a 0 a 1 a 2 引用二维字符数组的行下标 a 0 a 1 a 2 字符串数组示例 例 输入数字星期几 星期天用0表示 输出对应的英文名称 分析 建立如下星期表 用二维字符数组存储星期表 每行存一个字符串 字符串数组示例 chap8ex3 c includeintmain charw day 10 Sunday Monday Tuesday Wednesday Thursday Friday Saturday intnum printf Enteranumber 0 6 scanf d do printf Enteranumber 0 6 scanf d 字符串处理函数 与字符串有关的内置函数在头文件string h中定义要使用标准库字符串处理函数 程序前应该包含 include string h strlen strcpy strcmp strcat 字符串的长度 字符串的长度是字符串中位于 0之前的字符的个数根据字符串中 0的位置来计算字符串长度 若 数组中下标为i的元素为 0 则 串长 i 例 求字符串的长度 includeintmain intlength 0 charstr 30 printf InputaString gets str while str length 0 length printf nStringlengthis d n length return0 length 7 求字符串长度函数 求字符串长度函数语法格式 strlen s 功能 计算字符串s中字符的个数 并将字符的个数作为函数的返回值 不包括字符 0 include includeintmain intlength 0 charstr 30 printf InputaString gets str while str length 0 length printf nStringlengthis d n length return0 length strlen str 字符串复制函数 字符串复制函数语法格式 strcpy dest src 功能 把字符数组src中的字符串拷贝到字符数组dest中 0也一同拷贝 src也可以是一个字符串常量 include includeintmain charsource Wechangelives chartarget 20 strcpy target source printf n源字符串 s source printf n目标字符串 s n target return0 目标数组 源数组 源字符串 Wechangelives目标字符串 Wechangelives target source 字符串不能直接整体赋值 必须借助strcpy 字符串比较函数 字符串比较函数语法格式 strcmp str1 str2 功能 比较字符串str1和str2的大小 返回比较的结果 结果为 0 相等 正数 str1大 负数 str2大比较原则 按照串中对应位置字符的ASCII码比较例如 str1str2 abc 与 abc strcmp str1 str2 0 abcd 与 abck strcmp str1 str2 0 abc 与 b strcmp str1 str2 0 字符串比较函数 例 验证用户输入的用户名及密码是否正确 chap8ex4 c include includeintmain charname 15 pwd 15 charsname System spwd 123456 intlogin 0 printf n请输入用户名 gets name printf n请输入密码 gets pwd if strcmp name sname 0 请输入用户名 System请输入密码 123456您已成功登录 name sname 思考 如何允许用户三次输入密码 字符串不能用关系运算符比较大小 必须借助strcmp 字符串连接函数 字符串连接函数语法格式 strcat dest src 功能 连接两个字符数组中的字符串 将src串接在dest串后 结果存放在字符数组dest中 返回的函数值是字符数组dest的首地址 字符数组dest的长度不可缺省 应足够大 目标数组 源数组 include includeintmain charsource string UPC chartarget string 30 Hello strcat target string source string printf n源字符串 s source string printf n目标字符串 s n target string return0 源字符串 UPC目标字符串 HelloUPC 字符串举例 例1 不用strcat 函数 编程实现将两个字符串连接起来 chap8ppt27 c include includeintmain charsource string UPC chartarget string 30 Hello inti j i 0 while target string i 0 i j 0 while source string j 0 target string i j source string j j source string j 0 printf 源字符串 s n source string printf 目标字符串 s n target string return0 字符串举例 例2 输入一行字符 将每个字符从小到大排列后输出 chap8ex5 c include includeintmain charstr 100 t inti j n printf Inputstring gets str n strlen str 冒泡法排序 for i 0 istr j 1 t str j str j str j 1 str j 1 t printf Sortedstring s n str return0 思考 如何用选择法实现 字符串举例 例3 输入5个单词 将它们从小到大排列后输出 chap8ex6 c include include defineN5intmain charstr N 20 t 20 inti j printf Input dstrings N for i 0 i0 strcpy t str i strcpy str i str j strcpy str j t printf Result n for i 0 i N i puts str i return0 选择法排序 字符串举例 例4 编写程序 从字符串str中查找某个字符ch第一次出现的位置 chap8ppt30 c include include defineM20intmain charstr M charch inti gets str ch getchar i 0 while str i 0 if str i ch break i printf 源字符串 s n str printf c字符在字符串 s中第一次出现的位置是 d n ch str i 1 return0 字符串举例 例5 判断一个字符串是否回文 顺读和逆读相同 include include def

温馨提示

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

评论

0/150

提交评论