Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
An identifier is a sequence of characters. A valid identifier can contain only upper and lower case alphabetic characters, underscore and digits, and must begin with an alphabetic character or an underscore. Given a list of chararcter sequences, write a program to check if they are valid identifiers.
The first line of the input contains one integer, N, indicating the number of strings in the input. N lines follow, each of which contains at least one and no more than 100 characters. (only upper and lower case alphabetic characters, digits, underscore (" "), hyphen ("-"), period ("."), comma (","), colon (":"), semicolon (";"), exclamation mark ("!"), question mark ("?"), single and double quotation marks, parentheses, white space and square brackets may appear in the character sequences.)
For each of the N lines, output "Yes" (without quote marks) if the character sequence contained in that line make a valid identifier; output "No" (without quote marks) otherwise.
7 ValidIdentifier valid_identifier valid_identifier 0 invalid identifier 1234567 invalid identifier adefhklmruvwxyz12356790 -.,:;!?'"()[]ABCDGIJLMQRSTVWXYZ
Yes Yes Yes No No No No
山东省第二届ACM大学生程序设计竞赛
解题思路:
判断是否输入的字符串为合法标识符。
1、字符序列的输入用到 getline(cin,st[i]);
2、在cin>>n 与 getline(cin,st[i]); 之间需要使用 getchar(); 获取输入输入n 之后的回车符。
3、string 与 char [] 类型函数使用不同。 int len =st[i].length(); int len=strlen(st[i]);
4、判断字符c是否为字母和数字的函数(头文件#include
代码:
#include
#include
#include
#include
#include
using namespace std;
string st[10005];
int i,j,k;
int n;
int main()
{
cin>>n;
getchar();
for(i=1;i<=n;i++)
{
getline(cin,st[i]);
// for(j=0;st[i][j]!='\0';j++)
// {
// cout<
// cout<
int len=st[i].length();
//cout<
{
cout<<"No"<
}
for(j=1;j
if(!isalpha(st[i][j]) && st[i][j]!='_' && !isdigit(st[i][j]))
{
b1=0;
break;
}
}
if(b1)
{
cout<<"Yes"<
else
cout<<"No"<
return 0;
}