fsmnum.cpp
来自「编译原理课程中通过有限状态机模型实现判定输入字符串是否为实数的源程序。」· C++ 代码 · 共 96 行
CPP
96 行
#include "stdio.h"
int isRealNumber(char *p)
{
int state=1;
int resualt=-1;
while (*p)
{
switch(state)
{
case 1:
if ('+'==*p||'-'==*p)
{
state=2;
}
else if (*p>='0'&&*p<='9')
{
state=4;
}
else if ('.'==*p)
{
state=3;
}
else
{
state=0;
}
break;
case 2:
if (*p>='0'&&*p<='9')
{
state=4;
}
else if ('.'==*p)
{
state=3;
}
else
{
state=0;
}
break;
case 3:
if (*p>='0'&&*p<='9')
{
state=5;
}
else
{
state=0;
}
break;
case 4:
if (*p>='0'&&*p<='9')
{
state=4;
}
else if ('.'==*p)
{
state=5;
}
else
{
state=0;
}
break;
case 5:
if (*p>='0'&&*p<='9')
{
state=5;
}
else
{
state=0;
}
break;
}
if ('0'==state)
{
return -1;
}
p++;
}
if (4==state||5==state)
{
resualt=0;
}
return resualt;
}
int main()
{
// char* str="123.234";
char str[255];
gets(str);
printf("\n%d\n",isRealNumber(str));
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?