zoukankan      html  css  js  c++  java
  • 状态机 判断实数

    #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[255] = "..11111111111119";
    
    	printf("\n%d\n",isRealNumber(str));
    	return 0;
    }
    

      

  • 相关阅读:
    sizeof、strlen、length、size
    extern关键字
    结构
    引用
    指针
    数组
    linux端口 ,打开服务端口
    linux用户禁用
    防止验证码的恶意发送
    springboot 项目windows下打包、注册服务。
  • 原文地址:https://www.cnblogs.com/mathzzz/p/2774313.html
Copyright © 2011-2022 走看看