Problem Description
输入一个字符串,判断其是否是C的合法标识符。
Input
输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。
Output
对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。
Sample Input
3
12ajf
fi8x_a
ff ai_2
Sample Output
no
yes
no
AC代码:
#include<stdio.h> #include<string.h> int main() { //只能由字母、数字、下划线组成,且数字不能做开头 int n; char bsf[50]; scanf("%d", &n); getchar(); while(n--) { int flag = 0; gets(bsf); int len = strlen(bsf); if(bsf[0] >= '0' && bsf[0] <= '9') { printf("no\n"); continue; } for(int i = 0; i < len; i++) { if((bsf[i] >= '0' && bsf[i] <= '9' )|| (bsf[i] >= 'a' && bsf[i] <= 'z' )|| (bsf[i] >= 'A' && bsf[i] <= 'Z') || bsf[i] == '_' ) { flag ++; } else { printf("no\n"); break; } } if(flag == len) printf("yes\n"); } return 0; }
得考虑全C语言标识符的定义, 按照定义来做,考虑要全面.
第一次上交想要投机取巧,看到第三个有个空格就只考虑若字符串里面含空格就输出no, 但是只符合输出样式的答案不一定就能AC。
做题不能投机取巧