1074 字符串编辑

来源:互联网 发布:莳绘钢笔淘宝 编辑:程序博客网 时间:2024/05/21 15:00
 

描述

从键盘输入一个字符串(长度<=40个字符),并以字符'.'结束.
例如:'This is a book.',现对该字符串进行编辑,编辑功能有:
D:删除一个字符,命令的方式为:
D a
其中a为被删除的字符
例如:D s表示删除字符's',若字符串中有多个's',则删除第一次出现的,如上例中删除的结果为:
'Thi is a book.'
I:插入一个字符,命令的格式为:
I a1 a2
其中a1表示插入到指定字符前面,a2表示将要插入的字符 例如: I s d 表示在指定字符's'的前面插入字符'd',若原串中有多个's',则插入在最后一个字符的前面,
如上例中,原串:'This is a book.'
插入后:'This ids a book.'
R:替换一个字符,命令格式为:
R a1 a2
其中a1为被替换的字符,a2为替换的字符,若在原串中有多个a1,则应全部替换
例如:原串:'This is a book.'
输入命令: R o e
替换后:'This is a beek.'
在编辑过程中,若出现被指定的字符不存在时,则给出提示信息'not valid.'

输入

从键盘输入一个字符串(长度<=40个字符),并以字符'.'结束. 后面接着一条命令 含有多组测试数据

输出

输出修改后的字符串

样例输入

This is a book.
R o e
This is a book.
R m e

样例输出

This is a beek.
not valid.

解题思路:
该题实在变态,用C/C++过不了,居然要用FPC过。简单的替换和转换,但就是不知道BT用例。算了,不做解释,FPC看不懂。

program BUAA1074;vars:string;c,x,y:char;i:integer;procedure error;beginwriteln('not valid.');end;beginrepeatreadln(s);read(c);case c of'D':beginreadln(c,x);if(pos(x,s)=0)then begin error;continue; endelse delete(s,pos(x,s),1);end;'I':beginreadln(c,x,c,y);if(pos(x,s)=0)then begin error;continue; endelse begini:=length(s);while(s[i]<>x)do dec(i);insert(y,s,i);end;end;'R':beginreadln(c,x,c,y);if(pos(x,s)=0)then begin error;continue; endelsefor i:=1 to length(s) doif(s[i]=x)then s[i]:=y;end;end;writeln(s);until eof;end.


 

这是我一直显示运行错误的C程序,囧:

#include <stdio.h>#include <stdlib.h>#include <string.h>void main(){  char s[50],m[1000],n[1000],type,b[10];int i,j,t=0,r=0,count=0,flag=0;char m1,n1,temp1,temp2,l;gets(s);/*读入数据的处理*/while(gets(b) != NULL){    r=strlen(s);type=b[0];if(type=='D'){ flag=0; n1=b[2]; for(i=0;s[i]!='.';i++) { if(s[i]==n1) {    flag=1;  for(j=i;s[j]!='.';j++)  s[j]=s[j+1];   s[r-1]='\0';  break;  }  } if(flag==0) printf("not valid.\n"); }if(type=='I'){flag=0;   m1=b[2];n1=b[4]; for(i=r;i>=0;i--) { if(s[i]==m1) {   flag=1; for(j=r+1;j>=i;j--) s[j]=s[j-1]; s[i]=n1; s[r+2]='\0'; break; } } if(flag==0) printf("not valid.\n"); }if(type=='R'){  flag=0;m1=b[2];n1=b[4];for(i=0;i<=r;i++){    if(s[i]==m1){flag=1;s[i]=n1;}}if(flag==0)printf("not valid.\n");}if(flag!=0){for(i=0;s[i]!='\0';i++)printf("%c",s[i]);printf("\n");}}}


 

原创粉丝点击