用C写一个状态机

好的,下面是一个状态机的例子:

#include <stdio.h>

typedef enum {
  STATE_A,
  STATE_B,
  STATE_C,
  NUM_STATES
} State;

int main() {
  State current_state = STATE_A;
  int input;
  while (1) {
    switch (current_state) {
      case STATE_A:
        printf("Enter 1 to go to state B, 2 to go to state C: ");
        scanf("%d", &amp;input);
        if (input == 1) {
          current_state = STATE_B;
        } else if (input == 2) {
          current_state = STATE_C;
        }
        break;
      case STATE_B:
        printf("You are in state B. Enter 3 to go back to state A: ");
        scanf("%d", &amp;input);
        if (input == 3) {
          current_state = STATE_A;
        }
        break;
      case STATE_C:
        printf("You are in state C. Enter 4 to go back to state A: ");
        scanf("%d", &amp;input);
        if (input == 4) {
          current_state = STATE_A;
        }
        break;
      default:
        printf("Invalid state\n");
        return 1;
    }
  }
  return 0;
}

这个状态机有三个状态:A、B 和 C。它会不断地循环,每次询问用户输入,根据输入和当前状态进行转移。在状态 A 中,如果用户输入 1,则转移到状态 B;如果用户输入 2,则转移到状态 C。在状态 B 和 C 中,如果用户输入相应的数字,则转移回状态 A。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值