Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

注意事项大总结(附源代码)

Posted by gfedcba at 2009-01-14 22:20:02 on Problem 3157 and last updated at 2009-01-14 22:34:44
共性:
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator