每组数据输入包括3行,第1行是包含多个单词的字符串s,第2行是待替换的单词a(长度<=100),第3行是a将被替换的单词b(长度<=100)。s, a, b 最前面和最后面都没有空格。
每个测试数据输出只有 1 行, 将s中所有单词a替换成b之后的字符串。
You want someone to help you You I
I want someone to help you
#include <stdio.h> #include <string.h> #define maxn 110 char s[maxn][maxn]; char temp[maxn]; char a[maxn], b[maxn]; void erase_n(char *s) { if (s[strlen(s) - 1] == '\n') s[strlen(s) - 1] = '\0'; } int main() { while (fgets(temp, maxn, stdin) != NULL) { erase_n(temp); char *sp = temp; int num; for (num = 0; sp < temp + strlen(temp) && sscanf(sp, "%s", s[num]) != EOF;sp += strlen(s[num]) + 1, num++); fgets(a, maxn, stdin), erase_n(a); fgets(b, maxn, stdin), erase_n(b); for (int i = 0; i < num; i++) { if (!strcmp(s[i], a)) { strcpy(s[i], b); } } for (int i = 0; i < num; i++) { printf("%s", s[i]); printf("%s", i != num - 1 ? " " : "\n"); } } return 0; }