HardBirch

2010年广州周立功单片机(致远电子) 机试题(4)答案

时间:09-09-21 栏目:系统技术篇 作者:鲁智森也有文化 评论:0 点击: 1,471 次

答案不标准也不一定是最佳,仅供参考

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct _STATE
{
 char data;
 struct _STATE *zero;//指向0跳转的下一个状态
 struct _STATE *one;//指向0跳转的下一个状态
}STATE,*pSTATE;

STATE charState[8];//八种状态
STATE beginNode;

void InitStateMachine(STATE charState[])
{
 charState[0].data='A';
 charState[1].data='B';
 charState[2].data='C';
 charState[3].data='D';
 charState[4].data='E';
 charState[5].data='F';
 charState[6].data='G';
 charState[7].data='H';
 charState[4].one=&charState[0];
 charState[4].zero=&charState[2];
 charState[0].one=&charState[2];
 charState[0].zero=&charState[1];
 charState[1].one=&charState[5];
 charState[1].zero=&charState[3];
 charState[2].one=&charState[3];
 charState[2].zero=&charState[3];
 charState[3].one=&charState[6];
 charState[3].zero=&charState[7];
 charState[5].one=NULL;
 charState[5].zero=NULL;
 charState[6].one=&charState[4];
 charState[6].zero=&charState[4];
 charState[7].one=&charState[5];
 charState[7].zero=&charState[5];

 beginNode.data=0;
 beginNode.one=&charState[0];
 beginNode.zero=&charState[2];
}

void StateMachine(const char *pStates,char *pOutput)
{
 pSTATE p=&beginNode;
 unsigned int length = strlen(pStates),i;
 for(i=0 ; i<length ; i++)
 {
  if(pStates[i] == '0')
  {
   if(p->zero == NULL)
   {
    printf("/n");
    return;
   }
   p=p->zero;
   printf("%c",p->data);
  }
  else
  {
   if(pStates[i] == '1')
   {
    if(p->one == NULL)
    {
     printf("/n");
     return;
    }
    p=p->one;
    printf("%c",p->data);
   }
  }
 }
 printf("/n");
}

void main()
{
 
 char States[50],Output[50];
 InitStateMachine(charState);
 printf("请输入01字串(最长50个字符) :");
 scanf("%s",States);
 StateMachine(States,Output);
}

声明: 本文由( 鲁智森也有文化 )原创编译,转载请保留链接: 2010年广州周立功单片机(致远电子) 机试题(4)答案

2010年广州周立功单片机(致远电子) 机试题(4)答案:等您坐沙发呢!

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐