Turing機UN 1的C語言實現

2021-09-13 03:14:05 字數 2050 閱讀 9532

對於任意給定的字串w(w不含空格),程式設計模擬turing機un+1的執行過程,要求輸出從開始執行起的每一步驟的結果。

turing機un+1的定義:

00→00r

01→11r

10→01stop

11→11r

#include #include #include #include int main()

if(flag == 0&&a[i] == '1') //01→11r

if(flag == 1&&a[i] == '0') //10→01stop

if(flag == 1&&a[i] == '1') //11→11r

} printf("the result of un+1 is %s\n",a);

clock_t endtime = clock();

printf("the time spent by this program is:%fs.\n",double(endtime - starttime) / clocks_per_sec);

system("pause");

return 0;

}

1、除錯

(1)輸入資料1010110。

(2)進行第一步運算:01→11r,結果為1010110。

(3)進行第二步運算:11→11r,結果為:1010110。

(4)進行第三步運算:10→01stop,結果為:1110110。

(5)輸出turing機un+1的結果:1110110。

2、測試

測試**:

clock_t starttime = clock();

............

clock_t endtime = clock();

printf("the time spent by this program is:%fs.\n",double(endtime - starttime) / clocks_per_sec);

system("pause");

測試截圖:

3、執行結果

五、經驗歸納

1、求字元陣列長度

strlen()函式求出的字串長度為有效長度,既不包含字串末尾結束符『\0』;sizeof()操作符求出的長度包含字串末尾的結束符『\0』;當在函式內部使用sizeof()求解由函式的形參傳入的字元陣列的長度時,得到的結果為指標的長度,既對應變數的位元組數,而不是字串的長度,此處一定要小心。

2、測試**

clock_t 在源**中我們可以看到,它的型別為長整形(long)。

clock()函式返回程式執行起(一般為程式的開頭),處理器時鐘所使用的時間(ms)。

clocks_per_sec數值上等於1000。

為了獲取 cpu 所使用的秒數,需要除以 clocks_per_sec。

定義個開始時間和結束時間,要測試的程式就放在這兩段**中間。

double(endtime - starttime) / clocks_per_sec 得到的就是程式執行的秒數。

C語言實驗1

實驗結論 總體來說,本次上機實驗較為順利,基本上出現的錯誤就是少符號之類的小問題,所以挑一些我覺得有收穫的方面寫在部落格上 1.2的練習印象比較深刻,因為這是我在電腦上嘗試著去敲完執行的第乙個 當時是在剛開始學c語言,照著書敲完一串 以後以為自己萬無一失了,一按編譯執行結果下面提示框居然說error...

C語言實現簡單的ATM機功能

6 模擬 atm機取款的過程 1 定義兩個能儲存 5個整形數的陣列,乙個用於儲存 5個人的卡號,乙個用於儲存對應卡號的密碼。2 判斷輸入的卡號是否在陣列中。3 如果在陣列中就讓輸入密碼,判斷是否和卡號對應的密碼匹配。4 判斷密碼,24小時內只允許輸入3次 錯誤的密碼。輸入錯誤應該提示還剩下的輸入次數...

自我複製機(C語言實現版)

剛看了北大劉田老師講的遞迴定理,忍不住好奇心,用c語言實現了他講的自我複製機。其中為了模擬圖靈機的可改變的輸入帶,我用了sprintf函式,使用字元陣列input來暫時儲存帶上的內容,方便改變。這裡,轉義字元是乙個大坑,所以我用deal字元陣列,來解決轉義字元的問題。實際上input和deal陣列裡...