C语言字符串.ppt

ACM程序设计,福州大学至诚学院 冯新,第四讲,字符串处理,常用函数介绍,复制,char* strcpy char *s1, const char *s2; 将字符串s2复制到s1指定的地址 char* strncpy char *s1, const char *s2, size_t len; 将s2的前len个字符字节复制到s1中指定的地址, 不加0,连接,char* strcat char *s1, const char *s2; 将字符串s2连接到s1尾部 char* strncat char *s1, const char *s2, size_t len; 将字符串s2的前len个字符连接到s1尾部, 不加0,比较,int strcmp const char *s1, const char *s2; 比较字符串s1和s2 int strncmp const char *s1, const char *s2, size_t len; 对s1和s2的前len个字符字节作比较,查找,char* strchr const char *s, int ch; 在s中查找给定字符字节值ch第一次出现的位置 char* strrchr const char *s, int ch; 在串s中查找给定字符ch最后一次出现的位置, r表示从串尾开始 char* strstr const char *s1, const char *s2; 在串s1中查找指定字符串s2第一次出现的位置,其他,size_t strlen const char *s; 求字符串s的长度,字符转换,所谓字符转换就是将字符按照某种规律转换成对应的字符,曾经最难的问题(HDU 1048),题目描述 恺撒大帝生活在充满危险和阴谋的时代。恺撤大帝面临最严峻的形势就是如何生存下去,为了生存,他决定设计一种密码。这种密码设计得是如此难以置信的合理,以至于不知道它的原理就无法破译。 你是恺撒军队的一个小队长。你的工作就是对恺撒发布的密文进行解码,然后告诉军头的司令官。加密的规则其实很简单对原文中的每个字母,转换成字母表后面第5个字母,如原文中的字符为字母A,则密文中对应的字符为F。因为你的工作是解码,所以要将密文文翻译成原文。 ciphertext密文ABCDEFGHIJKLMNOPQRSTUVWXYZ plaintext 原文VWXYZABCDEFGHIJKLMNOPQRSTU 加密时,只有字母字符才按照上述规则进行加密。任何非字母字符保持不变,而且所有享母字符均为大写字母。输入数据 输入文件(非空)最多包含100组数据。每组数据为下面的格式,每组数据之间没有空行,所有的字符为大写。 每组数据由3行组成 1首行为字符串START; 2第2行为密文,包含的字符个数大于等于1,小于等于200,表示恺撒发布的密文; 3第3行为字符串END。 最后一组数据后有ENDOF,表示输入结束。 输出描述 对每组数据,输出一行,为你解密出来的原文。,输入数据 输入文件(非空)最多包含100组数据。每组数据为下面的格式,每组数据之间没有空行,所有的字符为大写。 每组数据由3行组成 1首行为字符串START; 2第2行为密文,包含的字符个数大于等于1,小于等于200,表示恺撒发布的密文; 3第3行为字符串END。 最后一组数据后有ENDOF,表示输入结束。 输出描述 对每组数据,输出一行,为你解密出来的原文。 Sample START NS BFW, JAJSYX TK NRUTWYFSHJ FWJ YMJ WJXZQY TK YWNANFQ HFZXJX END START IFSLJW PSTBX KZQQ BJQQ YMFY HFJXFW NX RTWJ IFSLJWTZX YMFS MJ END ENDOF Sample Output IN WAR, EVENTS OF IMPORTANCE ARE THE RESULT OF TRIVIAL CAUSES DANGER KNOWS FULL WELL THAT CAESAR IS MORE DANGEROUS THAN HE题目分析,分析本题针对的大写字母,把每个字母转换成字母表前5个字母,形成环状序列。F转换成AG转换成BZ转换成U,A、B、C、D、E分别转换成V、W、X、Y、Z。 转换公式 ai ai-5-652665; 或者 ai ai21-652665;温馨提示 A在ASCII码中是65本题还要特别注意输入数据的格式,每组数据占3行,但只有中间一行是需要处理的,在读人数据时要跳过第1行和第3行。另外,输入数据结束“ENDOF”为标志的。,whilegetsa ifstrcmpa, “ENDOF“ 0 break; getsa; int i 0; whileai 0 ifai A ,include include int main char a210; whilegetsa ifstrcmpa, “ENDOF“ 0 break; getsa; int i 0; whileai 0 ifai A ,字符编码,所谓字符编码就是将字符串中的每个字符按照编码规则转换成一个数字或一串数字或者将字符串中具有某种规律的子串转换成一串数字或其他字符等。,Soundex(ZJU 1858),Soundex编码方法根据单词的拼写将单词进行分组,使得同一组的单词发音很接近。例如,“can”与“khawn”,“con”与“gone”在Soundex编码下是相同的。 Soundex编码方法将每个单词转换成一串数字,每个数字代表一个字母。规则如下 1代表B,F,P或V; 2代表C,G,J,K,Q,S,X或Z; 3代表D或T; 4代表L; 5代表M或N; 6代表R。 而字母A,E,I,O,U,H,W和Y不用任何数字编码,并且相邻的、具有相同编码值的字母只用一个对应的数字代表。具有相同Soundex编码值的单词被认为是相同的单词。输入描述 输入文件中的每行为一个单词,单词中的字母都是大写,每个单词长度不超过20个字母。 输出描述 对输入文件中的每个单词,输出一行,为该单词的Soundex编码。 样例输入 样例输出 KHAWN 25 PFISTER 1236 BOBBY 11,题目分析,比如样例输入中的第一个单词”KHAWN”,它的Soundex编码值之所以是“25”,是因为第一个字母“K”的编码值为“2”,而接下来的三个字母“H”、“A”和“W”都没有编码值,最后一个字母“N”的编码值为“5”。样例输入中的最后一个单词“BOBBY”,它的Soundex编码值之所以是“11”,是因为第一个字母。“B”的编码值为“1”,第2个字母“O”没有编码值,之后两个字母“B”相邻,只编码成一个“1”,最后一个字母“Y”没有编码值。 从上面的分析可以看出,题目中提到的“相邻的、具有相同编码值的字母只用一个对应的数字代表”,如果具有相同编码值的字母之间间隔了若干个没有编码值的字母,则要单独编码。例如BB编码成“l”,“BV”也编码成“1”,而“BOB”编码成“11”。本题在处理时可以把26个字符的编码值(数字字符)按顺序存放到一个字符数组中,对没有编码值的字符,用“*”号表示。然后对字符串中的每个字符,输出其对应的数字;如果后一个字母的编码值跟前一个字母的编码值一样,则后一个字母的编码值不输出。,include include int main char change27 “*123*1222455*12623*1*2*2“; char 21; int i; whilescanf“s“, EOF int len; char temp; char prev 0; len strlen; fori 0; i len; i temp changei-A; iftemp * prev 0; continue; if temp prev continue; printf“c“, temp; prev temp; printf“n“; return 0; ,回文的判断与处理,所谓回文palindrome字符串,就是从左向右读和从右向左读结果相同的字符串。回文的判断与处理经常出现在ACM/ICPC题目中。判断回文的方法很简单,假设字符串长度为n,只需依次判断字符串中第i个字符与第n-l-i个字符是否相等即可,i0,1,2,3n/2。,int huiwenchar *s char *p1, *p2; int i, t 1; p1 s; p2 sstrlens-1; fori 0; i strlens/2; i if*p1 *p2 t 0; break; p1; p2; return t; ,子串处理,字符串中任意一个连续的字符组成的字符序列被称为该字符串的子串。有时,从字符串中抽取不连续的字符所组成的字符序列,也可以看成是字符串的子串。 需要说明的是,子串处理中的问题大多都属于子串匹配的问题,其中涉及的算法(如KMP算法)比较复杂,我们不在这里进行讨论。,字符串的包含问题(ZJU 1970),题目描述 给定两个字符串s和t,判断s是否是t的子串,也就是说,是否能通过从t中去掉一些字符,使得剩余的字符构成的字符串为s。 输入描述 输入文件包含多个测试数据,每个测试数据占一行,为两个字符串s和t,这两个字符串是由大小写字母字符构成的,两个字符串之间用空格隔开。输人数据一直到文件尾。 输出描述 对输入文件中的每个测试数据,判断s是否为t的子串。 样例输入 样例输出 person compression No VERDI vivaVittorioEmanueleReDiltalia Yes,题目分析,对字符串s的第0个字符s0,在字符串t中进行查找,假设查找到,其第一次出现的位置为t0;在字符串t的t0下一个位置继续查找s1,假设查找到,其(第一次出现的)位置为t1l;在字符串t的t1下一个位置继续查找s2。如果都能查找到s中的每个字符,则s是t的“子串”;否则如果s中后面某些字符在t中没有找到对应的字符,则s不是t的“子串”。 例如,对样例输入中的第1个测试数据,按照上述方式在字符串t中查找到字符串s中的前两个字符s0和s1后,后面的4个字符没能在t中查找到,所以s不是t的“子串”。相反,在第2个测试数据中,在t中都能查找到s中的每个字符,所以s是t的“子串”。,char s1000000; char t1000000; int main long ls, lt; long ps, pt; whilescanf“s s“, s, t EOF ls strlens; lt strlent; forps pt 0; ps ls ,Thank You ,

c语言字符串文库总结,C语言字符串.ppt相关推荐

  1. c语言字符串文库总结,C语言程序设计入门:字符串函数

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如果有侵权请立即联系:55525090@qq.com,我 ...

  2. R语言str_subset函数和str_which函数:str_subset函数提取字符串向量中所有包含匹配字符的字符串、str_which函数返回字符串向量中所有包含匹配字符的位置(索引)

    R语言str_subset函数和str_which函数:str_subset函数提取字符串向量中所有包含匹配字符的字符串.str_which函数返回字符串向量中所有包含匹配字符的位置(索引) 目录

  3. R语言stringr包str_detect函数检测字符串中模式存在与否实战

    R语言stringr包str_detect函数检测字符串中模式存在与否实战 目录 R语言stringr包str_detect函数检测字符串中模式存在与否实战 #导入stringr包

  4. R语言eval函数评估表达式或者字符串实战

    R语言eval函数评估表达式或者字符串实战 目录 R语言eval函数评估表达式或者字符串实战 #基本语法 #eval函数评估表达式

  5. Swift3.0语言教程查找字符集和子字符串

    Swift3.0语言教程查找字符集和子字符串 Swift3.0语言教程查找字符集和子字符串,在字符串中当字符内容很多时,我们就需要使用到查找字符集或者子字符串的方法.以下我们将讲解3种查找字符集和子字 ...

  6. C语言基础:时间转换成字符串 strftime的代码

    将内容过程中经常用的一些内容段做个记录,下边内容段是关于C语言基础:时间转换成字符串 strftime的内容,希望能对大伙有一些用处. #include <stdio.h> #includ ...

  7. PAT甲级1061 Dating:[C++题解]字符串处理(C语言格式控制牛逼!)

    文章目录 题目分析 题目链接 题目分析 题意重述:四个字符串,前两个字符串是一组:求 日期和小时: 后两个字符串是一组:求分钟. 对于前两个字符串: 需要统计两次,位置相同并且是相同的字符. 第一个符 ...

  8. Algorithm:C++语言实现之字符串相关算法(字符串的循环左移、字符串的全排列、带有同个字符的全排列、串匹配问题的BF算法和KMP算法)

    Algorithm:C++语言实现之字符串相关算法(字符串的循环左移.字符串的全排列.带有同个字符的全排列.串匹配问题的BF算法和KMP算法) 目录 一.字符串的算法 1.字符串的循环左移 2.字符串 ...

  9. C语言字符型数组ppt,C语言第13讲指针与字符串(字符数组).ppt

    C语言第13讲指针与字符串(字符数组).ppt 6.2.3 指针与字符串(字符数组) C语言用字符数组存放字符串. 字符数组元素个数确定,一般用下标控制循环. 字符串有效字符个数由0确定,用结束符0控 ...

最新文章

  1. python语言入门自学-自学编程的6种方法,自学Python
  2. Linux_相关命令(学习,备忘)
  3. json-c库使用总结
  4. SAP Commerce Cloud ( 电商云 ) 路由路径的自定义配置与开发
  5. lunixs 退出mysql_MySQL的基本操作
  6. IJCAI 2018:中科院计算所:增强对话生成一致性的序列到序列模型
  7. 第四周 项目中的白盒测试
  8. 新手降NAT网络第十步曲,小编提供思路。
  9. python黑色背景rbg_使用python PIL将RGB图像转换为纯黑白图像
  10. 【Coursera】DNS加速器
  11. Qt编写QUI皮肤生成器
  12. 人人开源需要的问题与解决方案(一)——公网访问、内网穿透
  13. C语言实现贪吃蛇(四)----游戏存档读档(文件操作)
  14. Ubuntu16.04 安装LSD-SLAM
  15. 【按键精灵】sub子程序、调用子程序
  16. 《认知觉醒》+《认知驱动》
  17. Python3 解决编码问题: UnicodeEncodeError: 'gbk' codec can't encode character '\xa9' in position
  18. Lesson 15 Fifty pence worth of trouble
  19. 江西自考 计算机及应用,江西自考专科本科计算机抵免政策解读
  20. 疯狂试探mysql单表insert极限:已实现每秒插入8.5w条数据

热门文章

  1. 2.4 残差网络为什么有用-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  2. 【arduino】用VSCode替代Arduino编辑器,arduino VSCode编辑器
  3. QT 中 关键字讲解(emit,signal,slot)以及使用
  4. 好好学python · 你真的会列表吗(列表推导式质检员)
  5. 【Java例题】4.1 级数求和1
  6. InstallUtil.exe版本引起安装windows services 服务遇到的问题,System.BadImageFormatException...
  7. Java中,内部类的概述和内部类的访问特点和内部类的分类(内部类的位置)
  8. Java代码的基本格式及注释
  9. JS 获取中英字符串字节长度
  10. linux系统下源码安装mysql5.6数据库