标题:求教各位大神怎样将英文句子中出现给定单词的前后加上一个空格后输出?
只看楼主
gh2x
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2019-3-21
 问题点数:0 回复次数:1 
求教各位大神怎样将英文句子中出现给定单词的前后加上一个空格后输出?
【问题描述】
给定一个英文单词和一段英文句子,假设该单词和英文句子中只包含英文字母。编写一个程序,将英文句子中出现给定单词的前后加上一个空格后输出,以实现断词。要求若单词出现在句子的开头,则此单词之前不能添加空格;若单词出现在句子结尾,则此单词之后也不能添加空格;若单词在句子中连续出现,则单词与单词之间也只用一个空格断开。在句子中查找单词时大小写无关。
【输入形式】
先从控制台输入一英文单词(长度不超过10),然后在下一行输入一条英文句子(长度不超过50)。
【输出形式】
输出断词后的英文句子。
【输入样例】
the
Theschooltheboythethe
【输出样例】
The school the boy the the
【样例说明】
给定的单词为the,在给定的英文句子中,该单词出现了四次。第一次出现在句子开头,只在该单词后添加了一个空格,之前不能添加空格。第二次出现时前后各添加了一个空格。第三次与第四次连续出现,在第三次和第四次单词出现之间只加了一个空格,并且第四次出现在句子结尾,在其后也没有添加空格。
搜索更多相关主题的帖子: 英文 出现 给定 单词 空格 
2019-06-03 17:26
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
随手写了一个,我没时间去仔细罗列各种可能进行测试,你自己检查一下

程序代码:
#include <stdio.h>

const char* foo( const char* str, const char* substr )
{
    for( ; ; ++str )
    {
        for( const char *p=str, *s=substr; ; ++p,++s )
        {
            if( !*s )
                return str;
            if( !*p )
                return NULL;
            if( (*p&0x1F) != (*s&0x1F) ) // 只允许大小写英文字母
                break;
        }
    }
}

int main( void )
{
    char word[11];
    int wordlen;
    char sentence[51];
    scanf( "%s%n%s", word, &wordlen, sentence );

    for( const char *s=sentence,*p; *s; s=p+wordlen )
    {
        p = foo( s, word );
        if( !p )
        {
            printf( "%s%s", " "+(s==sentence), s );
            break;
        }
        else if( p == s )
        {
            printf( "%s%.*s", " "+(s==sentence), wordlen, p );
        }
        else
        {
            printf( "%s%.*s %.*s", " "+(s==sentence), (int)(p-s), s, wordlen, p );
        }
    }
}

2019-06-04 09:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-495080-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.248327 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved