-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
给定一个不包含空白符的字符串,请判断是否是C语言合法的标识符号(注:题目保证这些字符串一定不是C语言的保留字)。
C语言标识符要求:
1. 非保留字;
2. 只包含字母、数字及下划线(“_”)。
3. 不以数字开头。
输入
- 一行,包含一个字符串,字符串中不包含任何空白字符,且长度不大于20。 输出
- 一行,如果它是C语言的合法标识符,则输出yes,否则输出no。 样例输入
-
RKPEGX9R;TWyYcp
样例输出
-
no
来源
北京大学 计算概论 06 心理及信管 期末考试
刚开始一看,感觉这题好水...
于是我肥肠愉快的打下了这条代码...
#include<stdio.h>
#include<string.h>
char a[101]={0};
int main()
{
int i,n;
gets(a);
n=strlen(a);
if(a[0]>='0'&&a[0]<='9')
{
printf("no");
return 0;
}
for(i=0;i<n;i++)
{
if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z'||a[i]=='_')
{
printf("yes");
}
else printf("no");
}
return 0;
}
后面就收到了来自Noip的结果...Wrong Answer...
对此一脸懵逼...
后面发现自己特别蠢,因为我只判断了循环语句中i当前的字母就直接输出了结果...
然后改了改就过了...
源代码如下:
#include<stdio.h>
#include<string.h>
char a[25];
int main()
{
int i,n;
gets(a);
n=strlen(a);
if(a[0]>='0'&&a[0]<='9')
{
printf("no");
}
else
for(i=0;i<n;i++)
{
if(!((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')||(a[i]>='0'&&a[i]<='9')||(a[i]=='_')))
{
printf("no");
break;
}
}
if(i==n)
{
printf("yes");
}
return 0;
}