- 题目描述:
-
给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串。
- 输入:
-
输入只有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] = ' '; } 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 ", s); } return 0; } /************************************************************** Problem: 1168 User: liangrx06 Language: C Result: Accepted Time:0 ms Memory:912 kb ****************************************************************/