codeforces gym 100286 I iSharp (字符串模拟)

题目链接

给定一个字符串。输入是int& a*[]&, b, c*;  

输出是

int&&[]* a;
int& b;
int&* c;

输入格式里逗号后面一定有个空格,把字母后面的符号逆序拿到前面来,按每个逗号分隔输出即可。

注意输出格式一定是定义类型+符号+空格+字母或字符串+分号。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
char s[345];
char c[345],cnt1=0;
int main()
{
    freopen("isharp.in","r",stdin);
    freopen("isharp.out","w",stdout);
    while(gets(s))
    {
        memset(c,0,sizeof(c));
        int len=strlen(s);
        for(int i=0;i<len;i++)
        {
            if(s[i]!=' ')
            c[i]=s[i];
            else
            {
                cnt1=i;
                break;
            }
        }
        //cout<<c<<endl;;
        int ss=cnt1+1;
        int ee=-1;
        for(int i=cnt1+1;i<len;i++)
        {
            if(s[i]!=','&&s[i]!=';')
                continue;
            else
            {
                ee=i-1;
                cout<<c;
                for(int j=ee;j>=ss;j--)
                {
                    if(!((s[j]>='a'&&s[j]<='z')||(s[j]>='A'&&s[j]<='Z')))
                    {
                        if(s[j]!=']')
                        printf("%c",s[j]);
                        else
                        {
                            printf("[]");
                            j--;
                        }
                    }
                    else
                    {
                        bool first=true;
                        for(int k=ss;k<=j;k++)
                        {
                            if(!((s[k]>='a'&&s[k]<='z')||(s[k]>='A'&&s[k]<='Z')))
                            printf("%c",s[k]);
                            else if(first)
                            {
                                printf(" %c",s[k]);
                                first=false;
                            }
                            else
                            printf("%c",s[k]);
                        }
                        printf(";
");
                        ss=ee+3;
                        i+=2;
                        break;
                    }
                }
            }
        }
    }
    return 0;
}
// int& a*[]&, b, c*;
原文地址:https://www.cnblogs.com/Ritchie/p/5869728.html