题设单词句子长度都不大,所以可以储存一个二维char数组sentence,按空格隔开的顺序存放组成句子的单词,如下所示


...
...
1
2
3 4 ...
之后遍历逐一用strcmp比较单词即可。
#include<cstdio>
#include<cstring>
char sentence[100][100];// dim0:sentence, dim1:word
char source[100];
char dest[100];
int main(){
    char c;
    int length = 0, charIdx=0;
    while((c=getchar())!='\n'){
        if(c==' '){
            sentence[length++][charIdx]='\0';
            charIdx=0;
        }else{
            sentence[length][charIdx++]=c;
        }
    }
    sentence[length++][charIdx]='\0';
    scanf("%s", source);
    scanf("%s", dest);
    for(int i=0;i<length;++i){
        if(strcmp(sentence[i], source)==0){
            printf(dest);
        }else{
            printf(sentence[i]);
        }
        printf(" ");
    }
    return 0;
}