| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
注意事项大总结(附源代码)共性:
1 、开头只能是小写字母
特性:
2、Java中不能出现_ Cpp中不能出现大写字母
3、Cpp中的_不能出现在结尾
4、Cpp中的_不能连续出现
格式:
5、数组的长度在100左右,如果直接输入输出,一定要开101;最后一个是用来存'\0'
6、题目上出现的这些黑体(加粗字):sample input #,一律不要打印出来。
技巧:
先判断输入的格式是Java 还是Cpp 还是Error的格式,然后再统一输出,这样子逻辑性比较强,易于分门另类处理,而且复杂度也只是O(n)而已。
总结:如果符合以上的条件,祝贺你,可以一次AC了!!!!
#include <iostream>
using namespace std;
//Accepted 216K 16MS
/**********************************************************************
* 判断是否是Java格式
**********************************************************************/
bool IsJava(char *str, int n)
{
int i;
if (!( str[0] >='a' && str[0]<='z') ) // 开头一定要是小写
{
return false;
}
for (i=1; i<=n-1; i++)
{
if (str[i]=='_') // 只要有_存在,那就不是Java
{
return false;
}
}
return true;
}
/**********************************************************************
* 判断是否是Cpp格式
**********************************************************************/
bool IsCpp(char *str, int n)
{
int i;
if (!( str[0] >='a' && str[0]<='z') ) // 开头一定要是小写
{
return false;
}
for (i=1; i<=n-1; i++)
{
if (str[i]>='a' && str[i]<='z')
{
continue;
}
else if (str[i]=='_' && str[i-1]=='_') // 连续两个__
{
return false;
}
else if(i==n-1 && str[i]=='_') // 最后一个是_
{
return false;
}
else if (str[i]>='A' && str[i]<='Z')// 大写的时候
{
return false;
}
}
return true;
}
/**********************************************************************
* 将Java格式按照Cpp格式打印出来
**********************************************************************/
void JavaToCpp(char *str, int n)
{
int i=0;
for (i=0; i<=n-1; i++)
{
if (str[i]>='A' && str[i]<='Z')
{
cout<<"_"<<char(str[i]+32);
}
else
{
cout<<str[i];
}
}
cout<<endl;
}
/**********************************************************************
* 将Cpp格式按照Java格式打印出来
**********************************************************************/
void CppToJava(char *str, int n)
{
int i=0;
for (i=0; i<=n-1; i++)
{
if (str[i] == '_')
{
str[i+1] -= 32;
}
else
{
cout<<str[i];
}
}
cout<<endl;
}
int main()
{
const int N=101;
char str[N];
// int n = 1;
bool isJava;
bool isCpp;
// cout<<"sample input #"<<n<<endl; // 这些是题目上加了粗黑体的字,千万不要打印出来
while (cin>>str)
{
isJava = IsJava(str, strlen(str));
isCpp = IsCpp(str, strlen(str));
// cout<<"sample output #"<<n<<endl;
// n++;
if (isJava==false && isCpp==false)
{
cout<<"Error!"<<endl;
}
else if (isJava==true && isCpp==false)
{
JavaToCpp(str, strlen(str));
}
else
{
CppToJava(str, strlen(str));
}
// cout<<"sample input #"<<n<<endl;
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator