• C语言 · 字符串编辑


    算法训练 字符串编辑  
    时间限制:1.0s   内存限制:512.0MB
        
    问题描述
      从键盘输入一个字符串(长度<=40个字符),并以字符 ’.’ 结束。编辑功能有:
      1 D:删除一个字符,命令的方式为: D a 其中a为被删除的字符,例如:D s 表示删除字符 ’s’ ,若字符串中有多个 ‘s’,则删除第一次出现的。
      2 I:插入一个字符,命令的格式为:I a1 a2 其中a1表示插入到指定字符前面,a2表示将要插入的字符。例如:I s d 表示在指定字符 ’s’ 的前面插入字符 ‘d’ ,若原串中有多个 ‘s’ ,则插入在最后一个字符的前面。
      3 R:替换一个字符,命令格式为:R a1 a2 其中a1为被替换的字符,a2为替换的字符,若在原串中有多个a1则应全部替换。
      在编辑过程中,若出现被改的字符不存在时,则给出提示信息。
    输入格式
      输入共两行,第一行为原串(以’.’结束),第二行为命令(输入方式参见“问题描述” 。
    输出格式
      输出共一行,为修改后的字符串或输出指定字符不存在的提示信息。
    样例输入
    This is a book.
    D s
    样例输出
    Thi is a book.
    输入输出样例解释
      命令为删去s,第一个在字符中出现的s在This中,即得到结果。
     
    作者注释:输入操作符“D”、“I”、“R”后,操作元素的输入一定要注意格式。
     1 #include<stdio.h>
     2 #include<string.h>
     3 int main(){
     4     char str[40];
     5     char sign,flag1,flag2;//操作符
     6     gets(str);//输入字符串 
     7     scanf("%c",&sign);//输入操作符 
     8     int flag;
     9     if(sign=='D'){
    10         scanf(" %c",&flag1);//注意格式 
    11         flag=0;
    12         char *p=str;
    13         while(*p){
    14             if(*p==flag1 && flag==0){
    15                 p++;
    16                 flag=1;
    17             }
    18             printf("%c",*p);
    19             p++;
    20         }
    21     }
    22     if(sign=='I'){
    23         scanf(" %c %c",&flag1,&flag2);//注意格式
    24         int len=strlen(str)-1;
    25         int i=len+1;
    26         int flag=0;
    27         while(len >= 0){
    28             if(str[len]==flag1 && flag==0){
    29                 for(;i>len;i--){
    30                     str[i]=str[i-1];
    31                 }
    32                 str[i]=flag2;
    33                 flag=1;
    34             }
    35             len--;
    36         }
    37         len=strlen(str);
    38         str[len]='';
    39         printf("%s",str);
    40     }
    41     if(sign=='R'){
    42         scanf(" %c %c",&flag1,&flag2);//注意格式
    43         char *p = str;
    44         while(*p){
    45             if(*p==flag1){
    46                 *p=flag2;
    47             }
    48             p++;
    49         }
    50         printf("%s",str);
    51     }
    52     return 0; 
    53 }
  • 相关阅读:
    使用duilib链接错误 _declspec(dllimport)
    USB磁盘VID和PID 对应到次盘盘符相关文章
    路径拆分函数
    COM问题
    将对话框嵌入父窗体
    duilib的caption上的Edit无法激活
    LoadLibrary失败,GetLastError MOD_NOT_FOUND
    windows字符串
    windows界面库种类
    windows插件框架
  • 原文地址:https://www.cnblogs.com/panweiwei/p/6651851.html
Copyright © 2020-2023  润新知