图灵机的模拟实现(XN+1)

图灵机的编程模拟C语言实现

一、 题目分析
题目要求编程模拟Turing机。对于任意给定的一台Turing机和任意给定的字符串w ( w不含空格),编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。对于任意给定的一台Turing机和任意给定的字符串w ( w不含空格),编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果。

二、 算法构造

图灵机的模拟实现(XN+1)

三、 算法实现

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

四、调试及运行结果
图灵机的模拟实现(XN+1)