解题思路:

    都没有人给出题解。那我就第一个给题解吧。坐一个沙发!

    根据题目要求,输入以.结束的字符串。然后再根据题目给出的操作进行判断就可以了。具体看程序解释吧。


参考代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	char s[50];
	char order,c1,c2;
	cin.getline(s,41,'.'); //输入字符以.结束,但是字符串中不包括.
	int pos=-1;  //标志
	int len=strlen(s);     
	s[len]='.';  //把.放到字符串中作为最后一个字符
	s[++len]='\0'; //字符串的结束标志
	cin>>order;    //输入命令
	if(order=='D')  //删除操作
	{
		cin>>c1;  //输入要删除的字符
		for(int i=0;s[i];i++)   //删除操作
			if(s[i]==c1)   //找到则删除它
			{
				pos=1;
				for(int j=i;s[j];j++) //前移一个位置,覆盖即可删除。
				    s[j]=s[j+1];
				break;
			}
	}
	else if(order=='I') //插入操作
	{
		cin>>c1>>c2;  //其中c1表示插入到指定字符前面,c2表示将要插入的字符
		for(int i=0;s[i];i++) //找插入位置,若原串中有多个,则插入在最后一个字符的前面
		    if(s[i]==c1) pos=i;
		if(pos!=-1)  //找到了插入位置
		{
			for(int i=len;i>=pos;i--) //后移一个位置,腾出位置插入
			    s[i+1]=s[i];
			s[pos]=c2;
		}
	}
	else if(order=='R') //替换操作
	{
		cin>>c1>>c2; //其中c1为被替换的字符,c2为替换的字符
		for(int i=0;s[i];i++)
			if(s[i]==c1)  //找到则替换,注意时全部替换
			{
				pos=1;
				s[i]=c2;
			}
	}
	if(pos==-1) //操作不成功
		cout<<"no exist";
	else   //操作成功,则输出新字符串
		puts(s);
	return 0;
}


点赞(4)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论