字符串问题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 【输入输出样例1】 • isbn.in isbn.out • 0-670-82162-4 Right • 【输入输出样例2】 • isbn.in isbn.out • 0-670-82162-0 0-670-82162-4
练习题二
• 从键盘输入一个字符串(长度<=40个字符),并以字符'.'结束。 例 如:'This is a book.',现对该字符串进行编辑,编辑功能有:
字符串问题
2014.06
字符串
• C语言 • 字符串变量 char s[10]; • 字符串常量 char *s = "Hello World!"; • 头文件 #include<cstring>
• C++语言 • 字符串变量 string s; • 头文件 #include<string>
字符串的用法
总结
ຫໍສະໝຸດ Baidu• C和C++都有很好的字符串函数支持。
• 尽量用C++的字符串函数,简单方便,而且 强大!
练习题一
• ISBN号码 (isbn.pas/c/cpp) • 【问题描述】 每一本正式出版的图书都有一个ISBN号码与之对应,
ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“xxxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一 位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的 首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-” 之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔 之后的五位数字代表该书在出版社的编号;最后一位为识别码。 识别 码的计算方法如下: 首位数字乘以1加上次位数字乘以2……以此类 推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10, 则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是 这样得到的:对067082162这9个数字,从左至右,分别乘以1, 2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。 你的任务是编写程序判断输入的ISBN 号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误, 则输出你认为是正确的ISBN号码。
练习题一
• 【输入】 输入文件isbn.in只有一行,是一个字符序列,表 示一本书的ISBN号码(保证输入符合ISBN号码的格式要 求)。
• 【输出】 输出文件isbn.out共一行,假如输入的ISBN号码 的识别码正确,那么输出“Right”,否则,按照规定的 格式,输出正确的ISBN号码(包括分隔符“-”)。
• s[x] 代表下标为x(从0开始)的字符 • char *s = "Hello World!"; • s[0] == 'H' • s[1] == 'e'
• C语言字符串结尾有'\0'表示结束。
常用的字符串函数
• C语言 strlen / C++语言 length • 代表字符串的长度 • char *s1 = "Hello"; • strlen(s1) == 5 • string s2 = "World!"; • length(s2) == 6 • 字符串s 从s[0]到s[strlen(s) - 1]
常用的字符串函数
• C strcmp / C++ ==,!=,<,<=,>,>= 比较函数 • strcmp(const char *s1, const char *s2); • 相同返回0,不同返回非0的值。 • 如果要判断s1和s2是否相同,怎么写? • if ( !strcmp(s1, s2)) { ... } • C++的字符串可以直接用数学的比较符号进
常用的字符串函数
• C strcpy / C++ = 拷贝函数 • strcpy(char *dest, const char * src); • *s1 = "Hello World!" • strcpy(s2, s1); --> *s2 = "Hello World!" • C++的字符串可以直接赋值! • string s1 = 'Hi', s2; • s2 = s1; --> s2 = 'Hi';
常用的字符串函数
• C++ find 查找字符(字符串)函数 • 返回第一次出现的下标 • string s = "abcde"; • s.find("cde") == 2
常用的字符串函数
• C strncpy 提取子串函数 • char *strncpy(char *dest, const char
*src,int count) • char *s1 = "abcdefg"; • strncpy(s2, s1 + 2, 3); • --> s2 = "cde";
常用的字符串函数
• C++ substr 提取子串函数 • string s = "abcdefg"; • string ss; • ss = s.substr(2, 3); • --> ss = "cde";
行比较!==,!=,<,<=,>,>= • if ( s1 == s2 ) { ... }
常用的字符串函数
• C strcat / C++ += 链接函数 • char *strcat (char *dest, const char
*src); • 将字符串src添加到dest的尾部。 • *s1 = "Hello"; *s2 = "World!"; • strcat(s1, s2); --> s1 = "HelloWorld!" • C++的字符串可以直接用加号链接! • string s1 = "Hello", s2 = "World!"; • s1 += s2; --> s1 = "HelloWorld!"
常用的字符串函数
• C strchr 和 strstr 查找字符(字符串)函数 • 返回第一次出现的下标位置。 • *s1 = "abcde"; *s2 = "cde"; • x = 'b'; • strchr(s1, x) == 1 • strchr(s1, 'z') == NULL • strstr(s1, s2) == 2
练习题二
• 从键盘输入一个字符串(长度<=40个字符),并以字符'.'结束。 例 如:'This is a book.',现对该字符串进行编辑,编辑功能有:
字符串问题
2014.06
字符串
• C语言 • 字符串变量 char s[10]; • 字符串常量 char *s = "Hello World!"; • 头文件 #include<cstring>
• C++语言 • 字符串变量 string s; • 头文件 #include<string>
字符串的用法
总结
ຫໍສະໝຸດ Baidu• C和C++都有很好的字符串函数支持。
• 尽量用C++的字符串函数,简单方便,而且 强大!
练习题一
• ISBN号码 (isbn.pas/c/cpp) • 【问题描述】 每一本正式出版的图书都有一个ISBN号码与之对应,
ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“xxxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一 位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的 首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-” 之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔 之后的五位数字代表该书在出版社的编号;最后一位为识别码。 识别 码的计算方法如下: 首位数字乘以1加上次位数字乘以2……以此类 推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10, 则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是 这样得到的:对067082162这9个数字,从左至右,分别乘以1, 2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。 你的任务是编写程序判断输入的ISBN 号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误, 则输出你认为是正确的ISBN号码。
练习题一
• 【输入】 输入文件isbn.in只有一行,是一个字符序列,表 示一本书的ISBN号码(保证输入符合ISBN号码的格式要 求)。
• 【输出】 输出文件isbn.out共一行,假如输入的ISBN号码 的识别码正确,那么输出“Right”,否则,按照规定的 格式,输出正确的ISBN号码(包括分隔符“-”)。
• s[x] 代表下标为x(从0开始)的字符 • char *s = "Hello World!"; • s[0] == 'H' • s[1] == 'e'
• C语言字符串结尾有'\0'表示结束。
常用的字符串函数
• C语言 strlen / C++语言 length • 代表字符串的长度 • char *s1 = "Hello"; • strlen(s1) == 5 • string s2 = "World!"; • length(s2) == 6 • 字符串s 从s[0]到s[strlen(s) - 1]
常用的字符串函数
• C strcmp / C++ ==,!=,<,<=,>,>= 比较函数 • strcmp(const char *s1, const char *s2); • 相同返回0,不同返回非0的值。 • 如果要判断s1和s2是否相同,怎么写? • if ( !strcmp(s1, s2)) { ... } • C++的字符串可以直接用数学的比较符号进
常用的字符串函数
• C strcpy / C++ = 拷贝函数 • strcpy(char *dest, const char * src); • *s1 = "Hello World!" • strcpy(s2, s1); --> *s2 = "Hello World!" • C++的字符串可以直接赋值! • string s1 = 'Hi', s2; • s2 = s1; --> s2 = 'Hi';
常用的字符串函数
• C++ find 查找字符(字符串)函数 • 返回第一次出现的下标 • string s = "abcde"; • s.find("cde") == 2
常用的字符串函数
• C strncpy 提取子串函数 • char *strncpy(char *dest, const char
*src,int count) • char *s1 = "abcdefg"; • strncpy(s2, s1 + 2, 3); • --> s2 = "cde";
常用的字符串函数
• C++ substr 提取子串函数 • string s = "abcdefg"; • string ss; • ss = s.substr(2, 3); • --> ss = "cde";
行比较!==,!=,<,<=,>,>= • if ( s1 == s2 ) { ... }
常用的字符串函数
• C strcat / C++ += 链接函数 • char *strcat (char *dest, const char
*src); • 将字符串src添加到dest的尾部。 • *s1 = "Hello"; *s2 = "World!"; • strcat(s1, s2); --> s1 = "HelloWorld!" • C++的字符串可以直接用加号链接! • string s1 = "Hello", s2 = "World!"; • s1 += s2; --> s1 = "HelloWorld!"
常用的字符串函数
• C strchr 和 strstr 查找字符(字符串)函数 • 返回第一次出现的下标位置。 • *s1 = "abcde"; *s2 = "cde"; • x = 'b'; • strchr(s1, x) == 1 • strchr(s1, 'z') == NULL • strstr(s1, s2) == 2