我不明白这个程序是怎么工作的,有人能解释一下吗?
我知道它与状态机相关联,但我不明白状态机是如何工作的。
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;
}
}
}发布于 2018-12-02 08:31:20
这是您的代码的状态机。

如你所见,有四个州。
对每个州的解释
char a,则移动到状态1,否则您将停留在状态0。char b,则移动到状态2,否则将停留在状态1。bb才能到达状态3。char a,则读取完整的abba,否则需要从一开始就读取输入。https://stackoverflow.com/questions/53578569
复制相似问题