HDOJ 2024 C言語合法識別子(水題、講義識別子)

1706 ワード

C言語正当識別子
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 42681    Accepted Submission(s): 17117
Problem Description
Cの正当な識別子かどうかを判断する文字列を入力します.
 
Input
入力データには複数のテストインスタンスが含まれ、データの最初の行は整数nであり、テストインスタンスの数を表し、次いでn行入力データであり、各行は50を超えない文字列である.
 
Output
入力データのセットごとに1行出力します.入力データがCの正当な識別子である場合、「yes」が出力され、そうでない場合、「no」が出力される.
 
Sample Input

   
   
   
   
3 12ajf fi8x_a ff ai_2

 
Sample Output

   
   
   
   
no yes no

 
问题解:问题は简単で、难しさとテクニックはありません.C言語の合法的な識別子に重点を置いて話します.
   定義:コンピュータの高度な言語では、変数、シンボル定数名、関数、配列、タイプなどの名前を付ける有効な文字列を総称して識別子と呼びます.
   
   注意:1.C言語では、識別子はアルファベット、数字、下線の3文字のみで構成され、1番目の文字はアルファベットまたは下線でなければなりません.
               2.コンパイルシステムは、大文字と小文字を2つの異なる文字と見なします.
MACコードは以下の通りである.
#include<stdio.h>
#include<string.h>
int main()
{
	int len,n,i;
	char str[55];
	scanf("%d",&n);
	getchar();//        
	while(n--)
	{
		gets(str);
		if((str[0]<65||str[0]>122)&&str[0]!='_')
		  printf("no
"); else { int k=0; len=strlen(str); for(i=1;i<len;i++) { if((str[i]<48||(str[i]<65&&str[i]>57)||str[i]>122)&&str[i]!='_') { k=1;break; } } if(!k) printf("yes
"); else printf("no
"); } } return 0; }