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://www.haodehen.cn/did238289