当前位置: 代码迷 >> 综合 >> 问题 D: 单词替换 Codeup ContestID:100000580
  详细解决方案

问题 D: 单词替换 Codeup ContestID:100000580

热度:3   发布时间:2024-01-26 14:10:25.0

题目链接: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,如有大佬发现错误,恳请指正,多谢!