PAT-B 1009. 说反话

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

输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。

输出格式:每个测试用例的输出占一行,输出倒序后的句子。

输入样例:

Hello World Here I Come

输出样例:

Come I Here World Hello

程序代码:

#include<iostream>
#include<cstdio>
using namespace std;
#define MAX 500
struct stack
{
    char data[MAX];
    char* top;

};
void initStack(stack &a);
char pushStack(stack &a);
void popStack(stack &a, char c);
int isStackEmpty(const stack &a);
int main()
{
    stack a ;
    stack b;
    initStack(a);
    initStack(b);

    char temp;
    char c;
    scanf("%c",&c); 
    while(c!='\n')
    {
        if(c!=' ')
            popStack(a,c);
        else
        {
            while(!isStackEmpty(a))
            {
                temp = pushStack(a);
                popStack(b,temp);       
            }
            /*if(isStackEmpty(a)) * popStack(a,c);*/
        if(!isStackEmpty(b))
            {
                temp = pushStack(b);
                if(temp==' ')
                    popStack(b,temp);
                else
                    {
                        popStack(b,temp);   
                        popStack(b,' ');
                    }   
            }
        else
            popStack(b,' ');             
        }
        scanf("%c",&c);     
    }
    while(!isStackEmpty(a))
    {
        temp =pushStack(a);
        popStack(b,temp);   
    }
    while(!isStackEmpty(b))
        {
            temp =pushStack(b); 
            cout<<temp;
        }
    return 0;
}
void initStack(stack &a)
{
    a.top =a.data;
}
void popStack(stack &a, char c)
{
    a.top+=1;
    *a.top=c;
}
char pushStack(stack &a)
{
    char temp = *a.top;
    a.top-=1;
    return temp;
}
int isStackEmpty(const stack &a)
{
    if(a.top==a.data)
        return 1;
    else
        return 0;

}
全部评论

相关推荐

2025-12-29 20:37
已编辑
清华大学附属小学 Java
开始打牌offer啦:1.为什么要写这么多内容呀 2.什么叫做简历 3.什么样的内容可以写到简历上 4.项目可以包装,但是要有理有据呀,不能乱包装呀,比如 跨境能达到日均120万订单的在国内都是能叫的上名字的,而且这些工作也基本上不太会交给一个实习生去做 建议友友可以去网上或者找同学的简历看看,他们的简历是怎么写的,去找找上面的那四个问题的答案吧,然后要记住的是Java是服务于业务的,而不是服务于微服务或者技术的
最后再改一次简历
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务