算是个比较坑题吧, 虽然不算太难,但是确实很多细节需要注意
具体情况看POJ讨论版吧~
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
char str[1001],ans[1001];
int main()
{
int cas=1;
while(gets(str)!=NULL)
{
int len=strlen(str),cur=0;
bool isc=0,error=0;
for(int i=0;i<len;i++)
if(str[i]=='_')
{
isc=1;
break;
}
if(str[0]=='_'||str[0]>='A'&&str[0]<='Z')
error=1;
else
{
for(int i=0;i<len;i++)
{
if(str[i]>='A'&&str[i]<='Z')
{
if(isc)
{
error=1;
break;
}
ans[cur++]='_';
ans[cur++]=str[i]-'A'+'a';
}
else if(str[i]=='_')
{
if(i+1==len)
{
error=1;
break;
}
if(i+1<len&&!(str[i+1]>='a'&&str[i+1]<='z'))
{
error=1;
break;
}
ans[cur++]=str[i+1]-'a'+'A';
i++;
}
else if(str[i]>='a'&&str[i]<='z')
ans[cur++]=str[i];
else
{
error=1;
break;
}
}
}
ans[cur]='\0';
if(error)
{
printf("Error!\n");
continue;
}
printf("%s\n",ans);
}
return 0;
}