题目描述
小浩同学最近总是感觉OJ水题太多,就想给大家出一道高质量的题,内容如下:
从键盘输入一个字符串(长度<=200),并以字符’#’结束。字符串不包括结束符‘#’,对字符串的处理包括以下三种操作
1 删除第一次出现的指定字符。
2 在最后一次出现的指定字符前面插入一个字符。
3 替换所有指定的字符。
输入
第一行是一串字符,第二行是一个大写字母是‘D’,’I’或‘R’,D表示删除操作,I表示插入操作,R表示替换操作,根据第二行输入的字母,第三行输入一个字符a1个或两个字符a1,a2,如果是两个字符,用空格隔开。如果是删除操作,则删除字符串中第一次出现的a1,如果是插入操作,则在最后一次出现的a1的前面插入a2,如果是替换操作则用a2替换字符串中的所有的a1。
输出
如果a1在字符串中出现过,输出处理后的字符串,若a1字符没在字符串中出现过,则输出提示信息"not found!",
样例输入
I love you#
D
o
样例输出
I lve you
按照题意来写就行了。
代码:
# include <stdio.h>
# include <string.h>
int main(void)
{
char a[201], b, c, c1;
int i, q;
while (gets(a) != NULL)
{
int d = strlen(a)-1; // 除了#的数量
scanf("%c", &b);
getchar(); // 吃回车
if (b == 'D')
{
q = -1;
scanf("%c", &c); // 只需一个字符
getchar();
for (i = 0; i < d; i ++)
{
if (a[i] == c) // 找到第一次出现
{
q = i;
break;
}
}
if (q == -1)
printf("not found!\n");
else
{
for (i = 0; i < d; i ++)
if (i == q)
continue;
else
printf("%c", a[i]);
printf("\n");
}
}
else if (b == 'I')
{
scanf("%c %c", &c, &c1); //输入两个字符
getchar();
q = -1;
for (i = d-1; i >= 0; i --) // 从后往前搜
{
if (a[i] == c)
{
q = i;
break;
}
}
if (q == -1)
printf("not found!\n");
else
{
for (i = 0; i < d; i ++)
if (i == q)
printf("%c%c", c1, a[i]); // 最后面的前面输
else
printf("%c", a[i]);
printf("\n");
}
}
else if (b == 'R')
{
scanf("%c %c", &c, &c1);
getchar();
q = -1;
for (i = d-1; i >= 0; i --) // 前后都一样, 只要能找到, 就替换
{
if (a[i] == c)
{
q = i;
break;
}
}
if (q == -1)
printf("not found!\n");
else
{
for (i = 0; i < d; i ++)
if (a[i] == c) // 替换
printf("%c", c1);
else
printf("%c", a[i]);
printf("\n");
}
}
}
return 0;
}