图灵机的模拟实现(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;
}

四、调试及运行结果
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值