能识别浮点数的简单词法分析程序(C语言实现)
时间: 2023-12-05 13:03:00 浏览: 25
以下是一个简单的 C 语言程序,可以识别浮点数:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[20];
int i = 0;
int flag = 0;
printf("请输入一个字符串:");
scanf("%s", str);
// 判断字符串是否为浮点数
while (str[i]) {
if (isdigit(str[i])) {
i++;
} else if (str[i] == '.') {
i++;
flag = 1;
} else {
printf("输入的字符串不是浮点数\n");
return 0;
}
}
if (flag == 1) {
printf("输入的字符串是浮点数\n");
} else {
printf("输入的字符串不是浮点数\n");
}
return 0;
}
```
程序运行后,会提示用户输入一个字符串,然后判断该字符串是否为浮点数。该程序的基本思路是:遍历字符串,如果字符串中既有数字又有小数点,就认为它是浮点数。如果字符串中包含其他字符,就认为它不是浮点数。
相关问题
能识别浮点数词法分析程序(C语言实现)
以下是一个可以识别浮点数的词法分析程序,使用 C 语言实现:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[20];
int i = 0;
int flag = 0;
printf("请输入一个字符串:");
scanf("%s", str);
// 判断字符串是否为浮点数
while (str[i]) {
if (isdigit(str[i])) {
i++;
} else if (str[i] == '.') {
i++;
flag = 1;
break; // 有且只有一个小数点
} else {
printf("输入的字符串不是浮点数\n");
return 0;
}
}
if (flag == 1) {
while (str[i]) { // 判断小数点后面的数字
if (isdigit(str[i])) {
i++;
} else {
printf("输入的字符串不是浮点数\n");
return 0;
}
}
printf("输入的字符串是浮点数\n");
} else {
printf("输入的字符串不是浮点数\n");
}
return 0;
}
```
相比于简单的浮点数识别程序,词法分析程序加入了对小数点后面数字的判断,确保字符串中只有一个小数点,并且小数点后面跟着至少一个数字。
能识别浮点数的简单词法分析程序(C语言实现)的DFA图
下面是一个简单的浮点数词法分析程序的DFA图示,包括4个状态和4个输入符号。
![浮点数词法分析程序的DFA图示](https://i.imgur.com/Twz2XwD.png)
其中,圆圈表示状态,箭头表示转换,标签表示输入符号。每个状态都有一个编号,分别是0、1、2和3。在起始状态0中,可以接受数字作为输入,转换到状态1。在状态1中,可以接受数字、小数点和指数符号作为输入,转换到状态1、2或3。在状态2中,可以接受数字和指数符号作为输入,转换到状态3。在状态3中,只能接受数字作为输入,转换到状态3。如果输入符号不是数字、小数点或指数符号,则DFA停留在当前状态。如果DFA在任何状态中停留时接受了输入字符串,则该字符串被识别为不是浮点数。如果DFA在状态1、2或3中接受了输入字符串,则该字符串被识别为浮点数。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)