单词接龙 (C语言)

内容:

单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含关系,例如at和atide间不能相连。

输入格式:

输入的第一行为一个单独的整数n(n<=20)表示单词数,以下n行每行有一个单词(只含有大写或小写字母,长度不超过20),输入的最后一行为一个单个字符,表示“龙”开头的字母。你可以假定以此字母开头的“龙”一定存在。

输出格式:

只需输出以此字母开头的最长的“龙”的长度。

输入样例:

在这里给出一组输入。例如:

5
at
touch
cheat
choose
tact
a

输出样例:

在这里给出相应的输出。例如:

23

代码:

好的,让我来为你进行对C语言的词法分析。 C语言单词符号包括关键字、标识符、常量、运算符和界符等五种类型。下面我们将分别进行词法分析。 1. 关键字 C语言中的关键字包括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等共32个关键字。 识别关键字的算法可以采用关键字表的形式,即将所有关键字存入一个关键字表中,然后将输入的字符串与关键字表进行匹配,如果匹配成功,则说明该单词符号为关键字。 2. 标识符 C语言中的标识符由字母、数字、下划线组成,且第一个字符必须为字母或下划线。标识符的长度不得超过31个字符。 识别标识符的算法可以采用正则表达式或有限状态自动机的方式实现。具体来说,我们可以定义标识符的正则表达式为:^[a-zA-Z_][a-zA-Z0-9_]{0,30}$,表示第一个字符必须为字母或下划线,后面跟着零个或多个字母、数字或下划线。如果输入的字符串符合该正则表达式,则说明该单词符号为标识符。 3. 常量 C语言中的常量包括整型常量、浮点型常量、字符常量和字符串常量等。其中,整型常量分为十进制、八进制和十六进制三种格式,浮点型常量分为小数和指数两种格式,字符常量用单引号括起来,字符串常量用双引号括起来。 识别常量的算法可以采用有限状态自动机的方式实现。对于整型常量,我们可以定义三个状态:开始状态、十进制状态和八进制/十六进制状态。对于浮点型常量,我们可以定义四个状态:开始状态、小数状态、指数状态和结束状态。对于字符常量和字符串常量,我们可以定义三个状态:开始状态、转义状态和结束状态。在每个状态中,我们对输入字符进行识别和记录,并根据不同的状态转移规则将状态转换到下一个状态。如果最终状态为结束状态,则说明该单词符号为常量。 4. 运算符 C语言中的运算符包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符和指针运算符等。具体包括+、-、*、/、%、<、>、<=、>=、==、!=、&&、||、!、&、|、^、~、<<、>>、=、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=、?、:、->和.等。 识别运算符的算法可以采用运算符表的形式,即将所有运算符存入一个运算符表中,然后将输入的字符串与运算符表进行匹配,如果匹配成功,则说明该单词符号为运算符。 5. 界符 C语言中的界符包括分号、逗号、括号、方括号和花括号等。 识别界符的算法可以采用界符表的形式,即将所有界符存入一个界符表中,然后将输入的字符串与界符表进行匹配,如果匹配成功,则说明该单词符号为界符。 最终,我们可以将词法分析得到的单词符号转换成属性字输出,属性字包括单词类型、单词值和单词位置等属性。这样,我们便完成了对C语言的词法分析。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一颗草莓~( ̄▽ ̄~)~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值