题目链接:http://codeup.cn/problem.php?cid=100000580&pid=3
题目描述
输入一个字符串,以回车结束(字符串长度<=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
代码
#include<stdio.h>
#include<string.h>int main() {char str1[110];char str2[110];char str3[110];while(gets(str1)){gets(str2);gets(str3);int len1 = strlen(str1),len2 = strlen(str2),len3 = strlen(str3);int r = 0, h = 0, i;char ans[110][110] = {0};for(i = 0; i < len1; i++) { //存储每个单词if(str1[i] != ' ')ans[r][h++] = str1[i];else{ans[r][h] = '\0';r++;h = 0;}}for(i = 0; i <= r; i++){ //依次比较单词if(str2[0] == ans[i][0]){for(h = 1; ans[i][h] != '\0'; h++){if(str2[h] != ans[i][h])continue;}if(h == len2) //单词所有字符对应相等break;}}for(h = 0; h <= len3; h++){ //替换单词ans[i][h] = str3[h];}for(i = 0; i <= r; i++) { //输出if(i > 0)printf(" ");printf("%s", ans[i]);}printf("\n"); }return 0; }
【注】:OJ 答案错误50,如有大佬发现错误,恳请指正,多谢!