图灵机的模拟实现(XN+1)
图灵机的编程模拟C语言实现
一、 题目分析
题目要求编程模拟Turing机。对于任意给定的一台Turing机和任意给定的字符串w ( w不含空格),编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。对于任意给定的一台Turing机和任意给定的字符串w ( w不含空格),编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。
二、 算法构造
三、 算法实现
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
int main(int argc, char *argv[])
{
printf("请输入二进制数(仅可包含0或1,输入2结束。)");
int i = 100, j = 1, k; //循环控制变量
int w[101];
int flag = 0; //进位状态与输入状态控制器
memset(a, 0, sizeof(a)); //初始化数组
for (i = 100; i >= 1; i--) //机器开始
{
scanf("%d", &a[i]);
if (w[i] == 2)
break;
}
for (j = i; j <= 100; j++)
{
if (a[j] == 0 && !flag) //判断是否0
{
a[j] = 1; //0改1
flag = 1; //进位状态改输入态
break;
}
else a[j] = 0; //1改0
}
if (!flag)w[100] = 1; //输入的二进制数均为1,在二进制数前补1以实现位
for (k=flag?99:100; k >= i; k--)
printf("%d ",w[k]); //输出
}
return 0;
}
四、调试及运行结果