HZU挑战自我


私信TA

用户名:gxhzxyjsj

访问量:10252

签 名:

加油哦!楼下被超越!正在追赶楼上的大佬们。

排  名 7
经  验 11621
参赛次数 4
文章发表 150
年  龄 0
在职情况
学  校 贺州学院
专  业 软件工程

  自我简介:

弱鸡一个

解题思路:

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

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


参考代码:

#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;
}


C语言网提供「C语言、C++、算法竞赛」在线课程,全部由研发工程师或ACM金牌退役选手亲自授课,以视频+配套题目的学练同步模式教学,强化动手,并提供增值服务!

  评论区