1164: 零起点学算法71——C语言合法标识符
Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lldSubmitted: 1080 Accepted: 484
[ Submit ][ Status ][ Web Board ]
Description
输入一个字符串,判断其是否是C的合法标识符。
Input
输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。
Output
对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。
Sample Input
3 12ajf fi8x_a ff ai_2
Sample Output
no yes no
HINT
请注意编译器的差异,可以使用TEST功能获得帮助。
Source
零起点学算法
1 #include<stdio.h> 2 #include<ctype.h> 3 int main(){ 4 int n; 5 char a[ 50 ]; 6 scanf( " %d%*c " ,& n); 7 while (n-- ){ 8 int d= 1 ; 9 gets(a); 10 if (a[ 0 ]!= ' _ ' && !isalpha(a[ 0 ])){ 11 printf( " no\n " ); 12 } 13 else { 14 for ( int j= 1 ;a[j]!= ' \0 ' ;j++ ){ 15 if (a[j]!= ' _ ' &&! isalnum(a[j])){ 16 17 printf( " no\n " ); 18 break ; 19 } 20 else { 21 printf( " yes\n " ); 22 break ; 23 } 24 } 25 } 26 } 27 return 0 ; 28 }
//按理来说,跳出第一层循环后不会输出yes 为什么会有这种情况
AC代码:
1 #include<stdio.h> 2 #include<ctype.h> 3 int main(){ 4 int n; 5 char a[ 50 ]; 6 while (scanf( " %d%*c " ,&n)!= EOF){ 7 while (n-- ){ 8 int d= 1 ; 9 gets(a); 10 if (a[ 0 ]!= ' _ ' && !isalpha(a[ 0 ])){ 11 printf( " no\n " ); 12 } 13 else { 14 for ( int j= 1 ;a[j]!= ' \0 ' ;j++ ){ 15 if (a[j]!= ' _ ' &&! isalnum(a[j])){ 16 17 d= 0 ; 18 break ; 19 } 20 } 21 puts(d ? " yes " : " no " ); 22 } 23 } 24 } 25 return 0 ; 26 }
查看更多关于1164: 零起点学算法71——C语言合法标识符(存在问题)的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did238289