C语言合法标识符

C语言合法标识符TimeLimit:1000MSMemoryLimit:65536KTotalSubmit:258Accepted:76Description输入一个字符... C语言合法标识符

Time Limit:1000MS Memory Limit:65536K
Total Submit:258 Accepted:76

Description

输入一个字符串,判断其是否是C的合法标识符。
你可以参考以下命名规则:
1.由英文字母、数字、下划线组成;
2.用英文字母、下划线打头。

Input

输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。

Output

对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。

Sample Input

3
12ajf
fi8x_a
ff ai_2

Sample Output

no
yes
no
展开
 我来答
咸长钰不方
2020-04-18 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:32%
帮助的人:578万
展开全部
标识符定义:以字母或下划线开头,由字母、数字和下划线组成的字符串

正确标识符:conn
temp_test
test_1
_studentName

错误标识符:)abc
23bcd
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
呼延又夏满藏
2019-05-23 · TA获得超过3万个赞
知道大有可为答主
回答量:9944
采纳率:29%
帮助的人:628万
展开全部
还需要排出关键字,设置一个关键字表,如果在这个表中,也提示为非法标识符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
倪斯荣莹然
2019-10-06 · TA获得超过3776个赞
知道小有建树答主
回答量:3032
采纳率:26%
帮助的人:226万
展开全部
定义成keyword[23][10]根本就是语法错误,一共32个关键字不是
getchar()的作用只是清空输入流,用fflush(stdin)也是一样
另外程序就算不改结果也不对吧?
IsKey要改成
bool
IsKey(char
*sptr)
{
bool
flag=false;
char
*keyword[]={"auto",
"break",
"case",
"char",
"const",
"continue",
"default",
"do",
"double",
"else",
"enum",
"extern",
"float",
"for",
"goto",
"if",
"int",
"long",
"register",
"return",
"short",
"signed",
"sizeof",
"static",
"struct",
"switch",
"typedef",
"union",
"unsigned",
"void",
"volatile",
"while"};
for
(int
index=0;index<32;++index)
{
if
(strcmp(sptr,keyword[index])==0)
{
flag=true;
break;
}
}
return
flag;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
疾似云流
2009-03-31 · TA获得超过1159个赞
知道小有建树答主
回答量:1093
采纳率:0%
帮助的人:476万
展开全部
把符合要求的标志符做成一个表(字母,下划线),然后扫描字符串,如果里面的字符是标志符表里没有的,便停止扫描,判断出它不合法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
左禄咎季
2019-08-15 · TA获得超过3万个赞
知道小有建树答主
回答量:1.1万
采纳率:31%
帮助的人:779万
展开全部
C++里面的标识符是以字母或下滑线打头,后面加上任意数字,字母,下划线.ff
ai_2里面有个空格,所以不是标识符.
画个有限状态自动机就很清楚了
比如S代表开始状态,S1代表标识符首字合法状态,eS代表输入合法,eF代表输入非法.A代表字母或下滑线,
B代表任意数字,字母,下划线,E代表结束符,那么自动机如下
S下输入字符属于A的话进入S1,否则经入eF;
S1下输入字符属于A或B,进入eS,否则进入eF
eS下输入字符属于A或B,进入eS,否则进入eF
eF下输入结束符号,进入最终状态,并且得到输入的不是标识符
eS下输入结束符号,进入最终状态,并且得到输入的是标识符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式