C語言模擬圖靈機X+1
阿新 • • 發佈:2017-10-09
[] ems 掃描 program 循環控制 class cnblogs add 循環
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 }
C語言模擬圖靈機X+1