状态机简单概念:
满足一个状态时将会跳转到下一个状态,当所有状态都满足(或执行完所有的状态时),将会完成所要的结果。
eg:密码锁的密码设为13579,则状态机总共有6中状态。可以定义为state1~state6。
当输入1,跳转到state1(当前状态就设为了state2)
当输入3,跳转到state2(当前状态就设为了state3)
.
.
.
当输入9,跳转到state5(当前状态就设为了state6)
当状态机处于状态6时,密码锁即可打开。
C语言代码实现:
#include <stdio.h>
typedef enum // 利用枚举定义状态机的状态集
{
STATE1,
STATE2,
STATE3,
STATE4,
STATE5,
STATE6,
}STATE;
int main(void)
{
int num = 0;
STATE state = STATE1;
printf("请输入密码\n");
while(1)
{
scanf("%d", &num);
printf("The number you entered is:%d\n", num);
switch(state)
{
case STATE1:
if(num == 1)
{
state = STATE2;
}
break;
case STATE2:
if(num == 3)
{
state = STATE3;
}
break;
case STATE3:
if(num == 5)
{
state = STATE4;
}
break;
case STATE4:
if(num == 7)
{
state = STATE5;
}
break;
case STATE5:
if(num == 9)
{
state = STATE6;
}
break;
default:
state = STATE1;
}
if(state == STATE6)
{
printf("密码正确\n");
break;
}
}
return 0;
}
注:程序可能存在bug,不过只要理解何为状态机即可。