1 #include "stdafx.h"
2 #include <iostream>
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <memory.h>
6 /* run this program using the console pauser or add your own getch, system("pause") or input loop */
7
8 int main(int argc, char *argv[]) {
9 int i = 100, j = 1, k;//循环控制变量
10 int a[200+1];//限定是100个但我们这里使用200个变量来模似无限tape
11 int flag = 0;//进位状态与输入状态控制器
12 memset(a, 0, sizeof(a));//初始化数组
13 for (i = 100; i >= 1; i--) {//机器开始
14 scanf_s("%d", &a[i]);//扫描第一个方格里的数据
15
16 if (a[i] == 2) {//判断是否到行尾(这一块无关图灵机)
17 i++;
18 break;
19 }
20 else { a[i] = a[i] % 2; }//鉴于可能遇到非二进制数
21
22 }
23 for (j = i; j <= 100; j++) {//这里我们从右往左扫描
24 if (a[j] == 0 && !flag) {//看看是否是0
25 a[j] = 1;//0改1
26 flag = 1;//进位状态改输入态
27 break;
28 }else a[j] = 0;//1改0
29 }
30 if (!flag)a[101] = 1;//特殊情况:从头到尾没一0出现 往前补1实现进位
31 for (k=flag?100:101; k >= i; k--){
32 printf("%d ",a[k]);//输出
33 }
34 return 0;
35 }