题目分析:
对于任给的一台Turning机和任意给定的字符串w(w不含空格),编程模拟Turning的运行过程,要求输出从开始起的每一步骤的结果。
简单的图灵机UN+1:
00—>00R;内态为0,输入为0,右移
01—>11R;内态为0,输入为1,右移
10—>01stop;内态为1,输入为0,停止
11—>11R;内态为1,输入为1,右移
源代码:
#include<stdio.h>
#include<string.h>
int binary2decimal(char str[]) //将二进制数转化为十进制
{
int sum=0;
int j=1;
int pos=strlen(str)-1;
for(;pos>=0;pos--)
{
sum+=(str[pos]-'0')*j;
j*=2;
}
return sum;
}
void main()
{
int i,N,a=0,b=0;
int result;
int p[10]; //={0,0,0,0,0,0,0,0,0,0}
printf("请输入所要计算的值:");
scanf("%d",&N);
memset(p,0,sizeof(p)); //将数组元素全部赋值为0
for(i=1;i<N;i++)
{
p[i]=1;
}
for(i=0;i<10;i++)
{
if(p[b]==0&&a==0) //内态为0,输入为0
{
b++;
}
else if(p[b]==0&&a==1)
{
p[b]=1;
a=0;
b++;
}
else if(p[b]==1&&a==1)
{
b++;
}
else if(p[b]==1&&a==0)
{
b++;
a=1;
}
printf("%01d",p[b-1]);
}
result=binary2decimal("p[b-1]");
printf("\nOutput decimal:%d\n",result);
}