首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有人能解释一下这个状态机程序是如何工作的吗?

有人能解释一下这个状态机程序是如何工作的吗?
EN

Stack Overflow用户
提问于 2018-12-02 08:17:37
回答 1查看 44关注 0票数 2

我不明白这个程序是怎么工作的,有人能解释一下吗?

我知道它与状态机相关联,但我不明白状态机是如何工作的。

代码语言:javascript
复制
void abba();

int main()
{
    printf("Enter 10 characters, a or b.\n");
    abba();

    return 0;
}

void abba() 
{
    int x = 0;
    char  a;

    while ((scanf_s("%c", &a) == 1) && (a == 'a' || a == 'b')) {
        switch (x) {
        case 0:
            if (a == 'a')
                x = 1;
            break;
        case 1:
            if (a == 'b')
                x = 2;
            break;
        case 2:
            if (a == 'b')
                x = 3;
            else
                x = 1;
            break;
        case 3:
            if (a == 'b')
                x = 0;
            else {
                puts("abba is found !");
                x = 4;
            }
            break;
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-02 08:31:20

这是您的代码的状态机。

如你所见,有四个州。

对每个州的解释

  1. 状态0 -,如果您接收到char a,则移动到状态1,否则您将停留在状态0。
  2. 状态1 -如果接收到char b,则移动到状态2,否则将停留在状态1。
  3. 状态2 --如果接收到状态3,则再次从状态1移回状态1,需要读取bb才能到达状态3。
  4. 状态3 -如果收到char a,则读取完整的abba,否则需要从一开始就读取输入。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53578569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档