⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linmin.c

📁 自动机实现
💻 C
字号:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void playA();
void playB();
void playD();
char ch;
char state='A';
void main()
{  
     int j;
	 int i=0;
	 char str[100];
	 printf("请输入一个字符串: ");
	 scanf("%s",&str);
	 j=strlen(str)-1;
	 for(i=0;i<=j;i++)
	  { 
		ch=str[i];
		putchar(ch);
		switch(state)
			  {
		case 'A':
			playA();break;
		case 'B':
			playB();break;
		case 'D':
			playD();break;
			  }
	 }
	printf(" 你可以达到的终点为 %c,",state);
	if (state=='D')
	{
		printf("你输入的字符串是可以通的并能到达 D*!\n\n");
	}
	else if(state=='A'||state=='B')
	{
		printf(" 路径能通但不能到达D* !\n\n");
	}
	else
	{
		printf(" %c  是不通的!程序退出\n\n",str[i-1]);
		exit(0);
	}
}


void playA()
{
switch(ch)
{
case 'a':
	state='B';
	break;
case 'b':
	state='A';
	break;
default:
	state='k';  //如果路径不通则将STATE设为f;
}
}


void playB()
{
switch(ch)
{
case 'a':
	state='B';
	break;
case 'b':
	state='D';
	break;
default:
	state='f';    //如果路径不通则将STATE设为f;
}
}


void playD()
{
switch(ch)
{
case 'a':
	state='B';
	break;
case 'b':
	state='A';
	break;
default:
	state='f';   //如果路径不通则将STATE设为f;
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -