时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:4276
解决:1699
- 题目描述:
给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。
- 输入:
输入只有1组数据。
输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止。
- 输出:
删除输入的短字符串(不区分大小写)并去掉空格,输出。
- 样例输入:
in
#include
int main()
{ printf(" Hi ");
}
- 样例输出:
#clude
tma()
{ prtf("Hi");
}
- 提示:
注:将字符串中的In、IN、iN、in删除。
思路:
含空格的输入可以用gets函数。
代码:
#include <stdio.h>
#include <string.h> #define M 100 int match(char c1, char c2)
{
if ('A' <= c1 && c1 <= 'Z')
c1 += 'a'-'A';
if ('A' <= c2 && c2 <= 'Z')
c2 += 'a'-'A';
return (c1 == c2);
} void delete(char *s, int len)
{
int i;
for (i=0; i<strlen(s)-len; i++)
s[i] = s[i+len];
s[i] = '\0';
} int main(void)
{
int j, k, m;
int matched;
char s[M], mod[M]; //scanf("%s", mod);
gets(mod);
while (gets(s))
{
for (j=0; j<strlen(s); j++)
{
if (s[j] == mod[0])
{
matched = 1;
for (m=j, k=0; m<strlen(s) && k<strlen(mod); m++, k++)
{
if (! match(s[m], mod[k]))
{
matched = 0;
break;
}
}
if (m == strlen(s) && k<strlen(mod))
matched = 0;
if (matched == 1)
delete(s+j, strlen(mod));
}
else if (s[j] == ' ')
delete(s+j, 1);
}
printf("%s\n", s);
} return 0;
}
/**************************************************************
Problem: 1168
User: liangrx06
Language: C
Result: Accepted
Time:0 ms
Memory:912 kb
****************************************************************/