好的,下面是一个状态机的例子:
#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", &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", &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", &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。