好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

1164: 零起点学算法71——C语言合法标识符(存在问题)

1164: 零起点学算法71——C语言合法标识符

Time Limit: 1 Sec   Memory Limit: 64 MB   64bit IO Format: %lld
Submitted: 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语言合法标识符(存在问题)的详细内容...

  阅读:54次