/*======================================================================
单词替换
总时间限制: 1000ms 内存限制: 65536kB
描述
输入一个字符串,以回车结束(字符串长度<=100)。
该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。
现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
输入
输入包括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
思路:先输入s字符串到s数组,接着输入a、b两个字符串。
从前往后扫描数组s,遇到非空格存到t数组,遇到空格检查是否是头一次遇到,(防止单词之间有多个空格)
假如是头一次遇到空格则截止t数组并清空j为0,然后检查t是否等于a,等于输出b,否则输出t。
如此循环处理知道s[i]=='\0'。
最后一个单词没有空格结束,所以要在循环后单独处理。
========================================================================*/
1 #include<stdio.h>
2 #include<string.h>
3 int main()
4 {
5 char s[105],a[100],b[100];
6 int i,j;
7 char t[100];
8 int firstBlank;
9 freopen("5.in","r",stdin);
10 gets(s);
11 gets(a);
12 gets(b);
13 /*printf("%s\n%s\n%s\n",s,a,b);*/
14 j=0;
15 for(i=0;s[i]!='\0';i++)
16 {
17 if(s[i]!=' ')
18 {
19 firstBlank=1;
20 t[j]=s[i];
21 j++;
22 }
23 else
24 {
25 if(firstBlank==1)//是否第一个空格.这个检查主要是防止单词之间有多个空格
26 {
27 t[j]='\0';
28 j=0;
29 if(strcmp(t,a)==0) printf("%s ",b);
30 else printf("%s ",t);
31 firstBlank=0;
32 }
33 }
34 }
35 t[j]='\0';
36 if(strcmp(t,a)==0) printf("%s\n",b);
37 else printf("%s\n",t);
38 return 0;
39 }