輸入一個字符串,判斷其是否是C的合法標識符。
Input
輸入數據包含多個測試實例,數據的第一行是一個整數n,表示測試實例的個數,然後是n行輸入數據,每行是一個長度不超過50的字符串。
Output
對於每組輸入數據,輸出一行。如果輸入數據是C的合法標識符,則輸出"yes",否則,輸出“no”。
Sample Input
3 12ajf fi8x_a ff ai_2
Sample Output
no yes no
/*C語言規定:標識符只能由字母、數字和下劃線3種字符組成,
且第一個字符必須爲字母或下劃線。*/
#include <algorithm>
#include <string.h>
#include <stdio.h>
int h(char a)/*判斷是否是字母或數字*/
{
if(a>='a'&&a<='z'||a>='A'&&a<='Z'||a>='0'&&a<='9')
return 1;
return 0;
}
int hs(char a)/*判斷是否是字母*/
{
if(a>='a'&&a<='z'||a>='A'&&a<='Z')
return 1;
return 0;
}
int main()
{
int n, d, i;
char sym[51];
scanf("%d%*c", &n);/*輸入n組,注意%*c是爲了跳過回車鍵的輸入*/
while (n--)
{
gets(sym);
if (sym[0] != '_' && !hs(sym[0]))
{
puts("no");
continue;
}
for (d = 1,i = 1 ; sym[i] ; i++)
{
if (!h(sym[i]) && sym[i] != '_')
{
d = 0;
break;
}
}
if(d==0)
{
puts("no");
}
else
{
puts("yes");
}
}
return 0;
}