题目描述
输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
输入
多组数据。每组数据输入包括3行,
第1行是包含多个单词的字符串 s,
第2行是待替换的单词a,(长度<=100)
第3行是a将被替换的单词b。(长度<=100)
s, a, b 最前面和最后面都没有空格。
输出
每个测试数据输出只有 1 行,
将s中所有单词a替换成b之后的字符串。
样例输入
I love Tian Qin
I
You
样例输出
You love Tian Qin
先gets输入第一行,然后把每个单词依次存在二位字符数组里(不直接用scanf存,是因为空格换行都可以作为scanf的结束标志,它可以把下一行的字符也存进去),然后再输出。输出时strcmp判断,为0,则替换。
#include<cstdio> #include<cstring> int main() { char s[110]; while (gets_s(s) != NULL) { char ans[110][110]; char a[110], b[110]; scanf("%s %s", a, b); int i = 0, j = 0, k = 0; while (s[i] != '\0') { if (s[i] != ' ') ans[j][k++] = s[i]; else ans[j][k] = '\0', k = 0, j++; //这种一位位赋值的,一定要有字符串结束标志 i++; } ans[j][k] = '\0'; //最后一个字符串的结束标志 for (i = 0; i <= j; i++) { if (strcmp(ans[i], a) == 0) printf("%s", b); else printf("%s", ans[i]); if (i != j) printf(" "); } printf("\n"); getchar(); //你要输入下一组,因为是gets输入第一行,所以必须要getchar()接受换行符 } return 0; }
文章来源: 单词替换