1. 程式人生 > >2024 C語言合法識別符號

2024 C語言合法識別符號

C語言合法識別符號

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


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

合法的識別符號,由字母數字下劃線組成,第一個字元不能是數字,用字元陣列存下來,用一個開關標記是否符合題意,單個判斷就可以了,程式碼比較繁瑣,可以用寫一個函式,比較直觀一些...

#include<stdio.h>
#include<string.h>
bool hefa(char x)
{
	if(!((x>='a'&&x<='z')||(x>='A'
	&&x<='Z')||(x>='0'&&x<='9')||(x=='_')))
	{
		return 0;
	}
	else
	{
		return 1;
	}
}
int main()
{
	int i,t,ok;char x[55];
	scanf("%d",&t);
	getchar();
	while(t--)
	{
		memset(x,0,sizeof(x));
		gets(x);ok=1;
		if(hefa(x[0])==1&&!(x[0]>='0'&&x[0]<='9'))
		{
			for(i=1;x[i]!=0;++i)
			{
				if(hefa(x[i])==0)
				{
					ok=0;
					break;
				}
			}	
		}
		else
		{
			ok=0;
		}
		if(ok==1)
		{
			printf("yes\n");
		}
		else
		{
			printf("no\n");
		}	
	}
	return 0;
}