- 总时间限制:
- 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; }