[PTA]7-32 说反话-加强版

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PTA]7-32 说反话-加强版相关的知识,希望对你有一定的参考价值。

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。

输出格式:

每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。

输入样例:

Hello World   Here I Come
结尾无空行

输出样例:

Come I Here World Hello
结尾无空行
  • 提交结果:

  • 源码:
#include<stdio.h>
#include<string.h>

int main()
{
    char word[500001];
    int  tail = -1, head = -1;                  // tail和head一前一后确定每个单词
    int isPrintBlank = 1;                       // isPrintBlank判断是否需要输出空格

    gets(word);

    for (int i = strlen(word) - 1; i >= 0; i--) // 倒序依次输出每个单词
    {
        if (word[i] != ' ' && tail < 0)         // 单词尾
        {
            tail = i;
        }

        if ((word[i] != ' ' && word[i - 1] == ' ') || (i == 0) && tail >= 0) // 单词头
        {
            head = i;
        }

        if (head >= 0 && tail >= 0)             // 输出当前单词
        {
            if (isPrintBlank != 1)
            {
                putchar(' ');
            }

            for (head; head <= tail; head++)
            {
                printf("%c", word[head]);
            }

            isPrintBlank = 0;
            tail = -1;
            head = -1;
        }
    }

    return 0;
}

以上是关于[PTA]7-32 说反话-加强版的主要内容,如果未能解决你的问题,请参考以下文章

PTA-说反话(加强版)-C语言

团体程序设计天梯赛-练习集(7-32 说反话-加强版)

PTA 乙级 1009 说反话

PTA(BasicLevel)-1009 说反话

1009 说反话

[PTA]7-38 数列求和-加强版