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
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");}}}
- 1074 字符串编辑
- 字符串编辑
- 字符串编辑
- 字符串的编辑距离
- 字符串编辑距离查表法
- 第八课 编辑字符串
- 求字符串编辑距离
- vim之 字符串编辑
- 字符串的编辑距离
- 字符串编辑距离
- 字符串编辑距离
- 1020 字符串编辑距离
- poj 3356 字符串编辑
- 字符串编辑距离
- 字符串编辑距离
- 字符串编辑距离
- 字符串编辑距离
- 求字符串编辑距离
- 1703 乘法运算的程序
- VS2005或2008在制作的安装包中添加卸载功能
- XML可扩展语言的发展
- 编程规范要求
- Mysql limit 分页用法及优化
- 1074 字符串编辑
- 《那些年啊,那些事——一个程序员的奋斗史》——12
- vb.net 两种方式调用存储过程的总结
- current REDO被删的处理
- 死锁避免-银行家算法 模拟
- 数据归档的元数据
- X11,X Window,hello world 例子
- 1075 数制转换
- “无法为更新定位行,一些值可能已在最后一次读取后已更改”问题的解决方法