一、删除前缀 '*'

  1. #include<iostream>
  2. #include<cstdio>
  3.  
  4. using namespace std;
  5.  
  6. //主函数
  7. int main()
  8. {
  9. char chr[],*b,*p; //字符串缓冲区;字符串头指针;字符串临时指针
  10. int chr_num=,b_num=; //输入的字符串中字符的个数;输入的字符串中前缀 * 的个数
  11. int i;
  12.  
  13. //输入
  14. cout<<"Please input a string:"<<endl;
  15. gets(chr);
  16.  
  17. //统计输入的字符串中字符的个数
  18. p=chr; // p 指向字符串的第一个字符
  19. while(*p++)
  20. {
  21. chr_num++;
  22. }
  23.  
  24. //统计输入的字符串中前缀 * 的个数
  25. b=chr; // b 指向字符串的第一个字符
  26. while(*b++=='*')
  27. {
  28. b_num++;
  29. }
  30.  
  31. //删除输入的字符串中的前缀 *
  32. for(i=;i<chr_num-b_num;i++)
  33. {
  34. chr[i]=chr[i+b_num];
  35. }
  36. chr[i]='\0';
  37.  
  38. //输出
  39. cout<<"The result:"<<endl;
  40. puts(chr);
  41.  
  42. return ;
  43. }

二、删除后缀 '*'

  1. #include<iostream>
  2. #include<cstdio>
  3.  
  4. using namespace std;
  5.  
  6. //主函数
  7. int main()
  8. {
  9. char chr[],*t,*p; //字符串缓冲区;字符串尾指针;字符串临时指针
  10. int chr_num=,t_num=; //输入的字符串中字符的个数;输入的字符串中后缀 * 的个数
  11.  
  12. //输入
  13. cout<<"Please input a string:"<<endl;
  14. gets(chr);
  15.  
  16. //统计输入的字符串中字符的个数
  17. p=chr; // p 指向字符串的第一个字符
  18. while(*p++)
  19. {
  20. chr_num++;
  21. }
  22.  
  23. //统计输入的字符串中后缀 * 的个数
  24. t=chr+chr_num-; // t 指向字符串的最后一个字符
  25. while(*t--=='*')
  26. {
  27. t_num++;
  28. }
  29.  
  30. //删除输入的字符串中的后缀 *
  31. chr[chr_num-t_num]='\0';
  32.  
  33. //输出
  34. cout<<"The result:"<<endl;
  35. puts(chr);
  36.  
  37. return ;
  38. }

三、删除前缀和后缀 '*'

  1. #include<iostream>
  2. #include<cstdio>
  3.  
  4. using namespace std;
  5.  
  6. //主函数
  7. int main()
  8. {
  9. char chr[],*b,*t,*p; //字符串缓冲区;字符串头指针;字符串尾指针;字符串临时指针
  10. int chr_num=,b_num=,t_num=; //输入的字符串中字符的个数;输入的字符串中前缀 * 的个数;输入的字符串中后缀 * 的个数
  11. int i;
  12.  
  13. //输入
  14. cout<<"Please input a string:"<<endl;
  15. gets(chr);
  16.  
  17. //统计输入的字符串中字符的个数
  18. p=chr; // p 指向字符串的第一个字符
  19. while(*p++)
  20. {
  21. chr_num++;
  22. }
  23.  
  24. //统计输入的字符串中前缀 * 的个数
  25. b=chr; // b 指向字符串的第一个字符
  26. while(*b++=='*')
  27. {
  28. b_num++;
  29. }
  30.  
  31. //统计输入的字符串中后缀 * 的个数
  32. t=chr+chr_num-; // t 指向字符串的最后一个字符
  33. while(*t--=='*')
  34. {
  35. t_num++;
  36. }
  37.  
  38. //删除输入的字符串中的前缀和后缀 *
  39. for(i=;i<chr_num-b_num-t_num;i++)
  40. {
  41. chr[i]=chr[i+b_num];
  42. }
  43. chr[i]='\0';
  44.  
  45. //输出
  46. cout<<"The result:"<<endl;
  47. puts(chr);
  48.  
  49. return ;
  50. }

四、删除中间 '*'

  1. #include<iostream>
  2. #include<cstdio>
  3.  
  4. using namespace std;
  5.  
  6. //主函数
  7. int main()
  8. {
  9. char chr[],*b,*t,*p; //字符串缓冲区;字符串头指针;字符串尾指针;字符串临时指针
  10. int chr_num=; //输入的字符串中字符的个数;输入的字符串中前缀 * 的个数;输入的字符串中后缀 * 的个数
  11. int i;
  12.  
  13. //输入
  14. cout<<"Please input a string:"<<endl;
  15. gets(chr);
  16.  
  17. //统计输入的字符串中字符的个数
  18. p=chr; // p 指向字符串的第一个字符
  19. while(*p++)
  20. {
  21. chr_num++;
  22. }
  23.  
  24. //令 b 指向字符串中前缀 * 之后的第一个字符
  25. b=chr; // b 指向字符串的第一个字符
  26. while(*b++=='*');
  27.  
  28. //令 t 指向字符串中后缀 * 之前的第一个字符
  29. t=chr+chr_num-; // t 指向字符串的最后一个字符
  30. while(*t--=='*');
  31.  
  32. //删除字符串中间的 *
  33. p=b; //令 p 指向字符串中前缀 * 之后的第一个字符
  34. while(b<=t)
  35. {
  36. if(*b!='*')
  37. {
  38. *p=*b;
  39. p++;
  40. b++;
  41. }
  42. else
  43. {
  44. b++;
  45. }
  46. }
  47. ++t; //令 t 指向字符串中后缀 * 的第一个 *
  48. while(*t)
  49. {
  50. *p=*t;
  51. p++;
  52. t++;
  53. }
  54. *p='\0';
  55.  
  56. //输出
  57. cout<<"The result:"<<endl;
  58. puts(chr);
  59.  
  60. return ;
  61. }

五、把字符串中的前缀 * 移动到字符串的末尾 

  1. #include<iostream>
  2. #include<cstdio>
  3.  
  4. using namespace std;
  5.  
  6. //主函数
  7. int main()
  8. {
  9. char chr[],*b,*p; //字符串缓冲区;字符串头指针;字符串尾指针;字符串临时指针
  10. int chr_num=,b_num=; //输入的字符串中字符的个数;输入的字符串中前缀 * 的个数
  11. int i;
  12.  
  13. //输入
  14. cout<<"Please input a string:"<<endl;
  15. gets(chr);
  16.  
  17. //统计输入的字符串中字符的个数
  18. p=chr; // p 指向字符串的第一个字符
  19. while(*p++)
  20. {
  21. chr_num++;
  22. }
  23.  
  24. //统计输入的字符串中前缀 * 的个数
  25. b=chr; // b 指向字符串的第一个字符
  26. while(*b++=='*')
  27. {
  28. b_num++;
  29. }
  30.  
  31. //把字符串中的前缀 * 移动到字符串的末尾
  32. for(i=;i<chr_num-b_num;i++) //删除输入的字符串中的前缀 *
  33. {
  34. chr[i]=chr[i+b_num];
  35. }
  36. while(i<chr_num) //在字符串的末尾添加与前缀个数相同的 *
  37. {
  38. chr[i++]='*';
  39. }
  40. chr[i]='\0';
  41.  
  42. //输出
  43. cout<<"The result:"<<endl;
  44. puts(chr);
  45.  
  46. return ;
  47. }

六、把字符串中的后缀 * 移动到字符串的开头 

  1. #include<iostream>
  2. #include<cstdio>
  3.  
  4. using namespace std;
  5.  
  6. //主函数
  7. int main()
  8. {
  9. char chr[],*b,*t,*p; //字符串缓冲区;字符串头指针;字符串尾指针;字符串临时指针
  10. int chr_num=,b_num=,t_num=; //输入的字符串中字符的个数;输入的字符串中前缀 * 的个数;输入的字符串中后缀 * 的个数
  11. int i;
  12.  
  13. //输入
  14. cout<<"Please input a string:"<<endl;
  15. gets(chr);
  16.  
  17. //统计输入的字符串中字符的个数
  18. p=chr; // p 指向字符串的第一个字符
  19. while(*p++)
  20. {
  21. chr_num++;
  22. }
  23.  
  24. //统计输入的字符串中前缀 * 的个数
  25. b=chr; // b 指向字符串的第一个字符
  26. while(*b++=='*')
  27. {
  28. b_num++;
  29. }
  30.  
  31. //统计输入的字符串中后缀 * 的个数
  32. t=chr+chr_num-; // t 指向字符串的最后一个字符
  33. while(*t--=='*')
  34. {
  35. t_num++;
  36. }
  37.  
  38. //把字符串中的后缀 * 移动到字符串的开头
  39. for(i=chr_num-t_num-;i>=;i--) //删除输入的字符串中的后缀 *
  40. {
  41. chr[i+t_num]=chr[i];
  42. }
  43. for(i=;i<t_num;i++) //在字符串的开头添加与后缀个数相同的 *
  44. {
  45. chr[i]='*';
  46. }
  47.  
  48. //输出
  49. cout<<"The result:"<<endl;
  50. puts(chr);
  51.  
  52. return ;
  53. }

七、使字符串的前缀 * 不多于 n 个

  1. #include<iostream>
  2. #include<cstdio>
  3.  
  4. using namespace std;
  5.  
  6. //主函数
  7. int main()
  8. {
  9. char chr[],*b,*p; //字符串缓冲区;字符串头指针;字符串尾指针;字符串临时指针
  10. int chr_num=,b_num=; //输入的字符串中字符的个数;输入的字符串中前缀 * 的个数;输入的字符串中后缀 * 的个数
  11. int i,n=;
  12.  
  13. //输入
  14. cout<<"Please input a string:"<<endl;
  15. gets(chr);
  16.  
  17. //统计输入的字符串中字符的个数
  18. p=chr; // p 指向字符串的第一个字符
  19. while(*p++)
  20. {
  21. chr_num++;
  22. }
  23.  
  24. //统计输入的字符串中前缀 * 的个数
  25. b=chr; // b 指向字符串的第一个字符
  26. while(*b++=='*')
  27. {
  28. b_num++;
  29. }
  30.  
  31. //使字符串的前缀 * 不多于 n 个
  32. if(b_num>n)
  33. {
  34. //删除输入的字符串中的前缀和后缀 *
  35. for(i=;i<chr_num-b_num;i++)
  36. {
  37. chr[i+n]=chr[i+b_num];
  38. }
  39. chr[i+n]='\0';
  40. }
  41.  
  42. //输出
  43. cout<<"The result:"<<endl;
  44. puts(chr);
  45.  
  46. return ;
  47. }

八、使字符串的后缀 * 不多于 n 个

  1. #include<iostream>
  2. #include<cstdio>
  3.  
  4. using namespace std;
  5.  
  6. //主函数
  7. int main()
  8. {
  9. char chr[],*t,*p; //字符串缓冲区;字符串头指针;字符串尾指针;字符串临时指针
  10. int chr_num=,t_num=; //输入的字符串中字符的个数;输入的字符串中前缀 * 的个数;输入的字符串中后缀 * 的个数
  11. int i,n=;
  12.  
  13. //输入
  14. cout<<"Please input a string:"<<endl;
  15. gets(chr);
  16.  
  17. //统计输入的字符串中字符的个数
  18. p=chr; // p 指向字符串的第一个字符
  19. while(*p++)
  20. {
  21. chr_num++;
  22. }
  23.  
  24. //统计输入的字符串中后缀 * 的个数
  25. t=chr+chr_num-; // t 指向字符串的最后一个字符
  26. while(*t--=='*')
  27. {
  28. t_num++;
  29. }
  30.  
  31. //使字符串的后缀 * 不多于 n 个
  32. if(t_num>n)
  33. {
  34. chr[chr_num-t_num+n]='\0';
  35. }
  36.  
  37. //输出
  38. cout<<"The result:"<<endl;
  39. puts(chr);
  40.  
  41. return ;
  42. }

关于字符串 “*****AB**C*D*****” 中前缀、后缀和中间 '*' 的处理的更多相关文章

  1. Java中++,--,前缀后缀表达值的不同,与^的值计算

    package 习题1; /** * ++ -- 与 ^ 的一些计算 * @author SeeClanUkyo * */ public class Test4 { public static voi ...

  2. hdoj 2594 Simpsons’ Hidden Talents 【KMP】【求串的最长公共前缀后缀】

    Simpsons' Hidden Talents Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java ...

  3. UVA - 11475 Extend to Palindrome —— 字符串哈希 or KMP or 后缀数组

    题目链接:https://vjudge.net/problem/UVA-11475 题意: 给出一个字符串,问在该字符串后面至少添加几个字符,使得其成为回文串,并输出该回文串. 题解: 实际上是求该字 ...

  4. POJ 2752 (KMP 所有可能长度的前缀后缀) Seek the Name, Seek the Fame

    题意: 求一个字符串的相同前缀后缀的所有可能的长度,这里该字符串其本身也算自己的前缀和后缀. 分析: 我们知道next数组的性质是,该字符之前的字符串的最大相同前缀后缀. 既然知道了最大的,即next ...

  5. c++实验4 栈及栈的应用+回文+中、后缀表达式

    栈及栈的应用+回文+中.后缀表达式 1.栈顺序存储结构的基本操作算法实现 (1)栈顺序存储结构的类定义: class SeqStack { private: int maxsize; DataType ...

  6. 1280 前缀后缀集合(map)

    1280 前缀后缀集合 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 一个数组包含N个正整数,其中有些是重复的.一个前缀后缀集是满足 ...

  7. python的正则表达式 re-------可以在字符串前加上 r 这个前缀来避免部分疑惑,因为 r 开头的python字符串是 raw 字符串,所以里面的所有字符都不会被转义

    正则表达式使用反斜杆(\)来转义特殊字符,使其可以匹配字符本身,而不是指定其他特殊的含义.这可能会和python字面意义上的字符串转义相冲突,这也许有些令人费解.比如,要匹配一个反斜杆本身,你也许要用 ...

  8. Java基础之写文件——将多个字符串写入到文件中(WriteProverbs)

    控制台程序,将一系列有用的格言写入到文件中. 本例使用通道把不同长度的字符串写入到文件中,为了方便从文件中恢复字符串,将每个字符串的长度写入到文件中紧靠字符串本身前面的位置,这可以告知在读取字符串之前 ...

  9. sql 解析字符串添加到临时表中 sql存储过程in 参数输入

    sql 解析字符串添加到临时表中  sql存储过程in 参数输入 解决方法 把字符串解析 添加到 临时表中 SELECT * into #临时表   FROM dbo.Func_SplitOneCol ...

随机推荐

  1. 02. SQL表达式的灵活使用

    什么是SQL表达式?在SQL语句中,表达式可以是函数,也可以是列和列之间的混合运算.很多时候,对于表达式的使用,可以比单独操作表上的列,带来更多方便. 一. 在HAVING中使用表达式 --drop ...

  2. 一:Html基本结构

    1:什么是Html(HTML 概念)? Html是 HyperText mark-up Language 的缩写,意思是:超文本标记语言 2.HTML的发展史? 1991年:出现Html1.0(不存在 ...

  3. amoeba实现MySQL读写分离

    amoeba实现MySQL读写分离 准备环境:主机A和主机B作主从配置,IP地址为192.168.131.129和192.168.131.130,主机C作为中间件,也就是作为代理服务器,IP地址为19 ...

  4. 《UNIX环境高级编程》学习心得 四 文件I/O(一)

    这里说的文件I/O是相对标准I/O来说的.主要介绍在UNIX系统中常用的五个文件I/O函数:open.read.write.lseek.以及close. 一.open和opennat #include ...

  5. ORA-01034: 、ORA-01078: 和 LRM-00109: 的解决方法

    环境:Linux 5.4 Oracle 11.2.0.3 在Linux上连接Oracle时遇到报错: SQL> show parameter sgaORA-01034: ORACLE not a ...

  6. 四舍五入PK银行四舍五入

    描述 在实际开发中decimal.Round(1.23525,4)!=1.2353实际是1.2352,而decimal.Round(1.23535,4)==1.2354 说明 四舍五入:当舍去位的数值 ...

  7. thinkphp,javascript跨域请求解决方案

    javascript跨域请求解决方案 前言 对于很多前端或者做混合开发的同学,我们难免会遇到跨域发起请求业务,比如A站点向B站点请求数据等等.由于最近要做一个站点集群的项目,所以具体业务要求很多个站点 ...

  8. hibernate的第一个程序

    #建表语句 create database hibernate; use hibernate; create table user( id int primary key, name varchar( ...

  9. JavaScript--正则表达式(笔记)

    一 什么是正则表达式 // 正则表达式(regular expression)是一个描述字符模式的对象; // JS定义RegExp类表示正则表达式; // String和RegExp都定义了使用正则 ...

  10. 反射调用与Lambda表达式调用

    想调用一个方法很容易,直接代码调用就行,这人人都会.其次呢,还可以使用反射.不过通过反射调用的性能会远远低于直接调用——至少从绝对时间上来看的确是这样.虽然这是个众所周知的现象,我们还是来写个程序来验 ...