杭电2024

C语言合法标识符

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 33428    Accepted Submission(s): 13470


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

 

要注意C语言合法标识符:

由字母、、数字这三个方面组成,但开头必须是字母或。
另外,关键字不能是,如main等。


只要将输入的字符逐个判断即可,代码如下:

#include <stdio.h>
#include <string.h>

void judge (char a[50]);

int main (void)
{
	int n;

	scanf("%d\n",&n);

	while (n!=0)
	{
		char a[50];
		gets(a);                       //注意gets函数接收数组时是全部接收之前输入的内容,解决办法是上边接收n时加个\n这样不会接收空格,然后在gets函数前面定义数组a,成功避免了gets函数把n也接收了。

		judge (a);

		n--;
	}

	return 0;
}


void judge (char a[50])                                 //judge函数是判断c语言合法标识符的函数
{
	int i,L;
	L = strlen(a);

	   if( ('a'<=a[0] && a[0]<='z') || ('A'<=a[0] && a[0]<='Z') ||a[0]=='_')

		{ 
		  for(i=1;i<L;i++) 
			{
			  if ( 
                   ('0'<=a[i] && a[i]<='9') || 
                   ('a'<=a[i] && a[i]<='z') || 
                   ('A'<=a[i] && a[i]<='Z') || 
                   (a[i]=='_')  
				 )
                              
				continue;       

				else break; 
			}

			if(i==L) printf("yes\n");

			else printf("no\n");     
		}

	   else printf("no\n");        


	return;
}


你可能感兴趣的:(杭电2024)