您的位置:首页 > 其它

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

2009-09-21 23:27 253 查看
答案不标准也不一定是最佳,仅供参考



#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);

}

完整内容所在目录:http://www.mythroad.net/tag/q_written_examination_and_interview_code_title/

更多精彩内容来自:魔豆之路 - 神秘前路,待拨迷雾http://www.mythroad.net
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐