怎样将英文句子中出现给定单词的前后加上一个空格后输出?

【问题描述】
给定一个英文单词和一段英文句子,假设该单词和英文句子中只包含英文字母。编写一个程序,将英文句子中出现给定单词的前后加上一个空格后输出,以实现断词。要求若单词出现在句子的开头,则此单词之前不能添加空格;若单词出现在句子结尾,则此单词之后也不能添加空格;若单词在句子中连续出现,则单词与单词之间也只用一个空格断开。在句子中查找单词时大小写无关。
【输入形式】
先从控制台输入一英文单词(长度不超过10),然后在下一行输入一条英文句子(长度不超过50)。
【输出形式】
输出断词后的英文句子。
【输入样例】
the
Theschooltheboythethe
【输出样例】
The school the boy the the
【样例说明】
给定的单词为the,在给定的英文句子中,该单词出现了四次。第一次出现在句子开头,只在该单词后添加了一个空格,之前不能添加空格。第二次出现时前后各添加了一个空格。第三次与第四次连续出现,在第三次和第四次单词出现之间只加了一个空格,并且第四次出现在句子结尾,在其后也没有添加空格。

2个回答

这题主要考察查找子字符串,可以用c,也可以c++,方法多种;
图片说明

#include <iostream>

using namespace std;

int main()
{

    string str; //子字符串
    std::cout << "pls input word"<<endl;
    std::cin >> str;
    string src_str;// = "Theschooltheboythethe"; //源字符串
    std::cout << "pls input sentence"<<endl;
    std::cin >> src_str;

    bool p = false; //是否匹配,若匹配true,否则false
    int idx = 0; //子字符串索引
    string dest_str = ""; //保存最终字符串
    for(int i=0;i<src_str.length();i++)
    {
        //对空格的处理
        if(idx >= str.length())
        {
            p = false;
            idx = 0;
            if(dest_str.end()-(str.size()) == dest_str.begin())
            {
               // std::cout << "In the first sentence and ignore it" <<endl;//在句子首位忽略它
            }
            else
            {
                if(*(dest_str.end()-(str.size()+1)) != ' ') //对已有的空格不作处理
                    dest_str.insert(dest_str.end()-str.size(),' ');
            }
            dest_str += ' ';
        }

        //检验是否匹配
        if(!p)
        {
            if(((char)tolower(str.at(idx))) == ((char)tolower(src_str.at(i)))) //根据题意,忽略大小写
            {
                ++idx;
                p = true;
            }
        }
        else
        {
            if(((char)tolower(str.at(idx))) == ((char)tolower(src_str.at(i)))) //根据题意,忽略大小写
            {
                ++idx;
                p = true;
            }
            else
            {
                p = false;
                idx = 0;
            }
        }
        dest_str += src_str.at(i);
    }
    std::cout << dest_str << std::endl;

    return 0;
}
weixin_45154442
狮子歌歌丶 回复qtchen_1988: 谢谢您大神
10 个月之前 回复
qtchen_1988
qtchen_1988 回复狮子歌歌丶: 你用什么编译的,我已经改了,可以输入的,而且是尽量符合一般编译器的
10 个月之前 回复
weixin_45154442
狮子歌歌丶 回复: 而且这个the只是样例要自己输入单词和句子
10 个月之前 回复
weixin_45154442
狮子歌歌丶 大神您这个运行错误啊
10 个月之前 回复

你可以在每个这个单词前面加  字符串转数组 循环加 在转字符串

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

5
定义一个二维数组,输入一个给定值,输出与给定值最接近的数的下标和数本身,Python
2
给定一个日期,输出这个日期是该年的第几天。
0
初学字符串的实际工程问题4,5,6
1
Unity里面能否通过关节实现按给定角度旋转
3
给定一个文本文件test.txt,如何统计该文件包含的词总数,以及词型个数。(Linux)
1
如何用C语言实现求给定矩阵的逆矩阵?
3
C语言实现,给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和
0
给定一个长度为偶数位的0,1字符串,运用C编程语言的编程实现串的奇偶位互换。
3
运用C语言的编程的技术,编写一个程序,判断给定的两个数是否是亲和数
0
从汉字机内码的特点考虑统计给定文本文件中汉字的个数,采用C语言技术的实现
1
C语言计算实现,字符串的编码值小于等于给定的值则输出yes,否则输出no
1
给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和,具体运用C语言的实现
1
给定坐标(x, y,要求用一个最小的长方形框将所有点框在内。C语言程序编写的做法是怎么样的
1
编写一个程序,判断给定的两个数是否是亲和数,使用C语言的程序的设计的方式
1
统计给定文本文件中汉字的个数,如何利用C语言程序的编写的形式来实现的呢
0
对于给定的N对双胞胎,是否有一个年龄序列的判断,运用C语言的程序的设计的思想去实现的方法
0
给定的一个字符串,统计其中数字字符出现的次数,怎么采用C语言来回答这个问题的
0
给定一个节点和关系集合,求图中包含节点和关系数量最多的路径
0
输出所有在给定范围内的水仙花数,怎么采用C语言的程序编写代码的技术方式去实现这个程序编写的?
0
读取文本文件并且统计给定文本文件中汉字的个数,怎么利用C语言的程序编程的方式来实现的?