編譯原理第一次作業(yè)_第1頁
編譯原理第一次作業(yè)_第2頁
編譯原理第一次作業(yè)_第3頁
編譯原理第一次作業(yè)_第4頁
編譯原理第一次作業(yè)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、編譯原理課程實驗報告實驗地點實驗時間實驗名稱:第一次使實驗實驗?zāi)康模褐販谻語言程序設(shè)計,重溫程序設(shè)計從編輯、編譯到連接的全過程,理解編譯器的重要性。實驗要求(詳見實驗講義與實驗指導(dǎo)書):1) 鍵盤輸入任意字符串,統(tǒng)計其中數(shù)字、字母的個數(shù)并輸出到終端。輸入:字符串輸出:(數(shù)字,SUMD);(字母,SUML)其中SUMD和SUML分別為統(tǒng)計出的數(shù)字和字母的個數(shù)。2) 查找給定文件中的C語言注釋行,并輸出其內(nèi)容。輸入:文本文件“test.txt”輸出:文件中C語言注釋行的內(nèi)容(注:結(jié)果同時輸出到文件)提示:注釋行以“/* */”或“/ ”標(biāo)示實驗內(nèi)容及關(guān)鍵步驟(算法描述(流程圖或偽代碼)、代碼)1.

2、1、算法描述(1) 輸入一個字符串(2) 使用for循環(huán)檢測每個字符,判斷是否為字母或數(shù)字,判斷的條件: 字母:if(stri >= 'A'&&stri <= 'Z'| stri >= 'a'&&stri<='z')字母數(shù)量+; 數(shù)字:if(stri >='0'&&stri<='9')數(shù)字?jǐn)?shù)量+;(3) 輸出最后結(jié)果1.2、流程圖描述開始輸入字符串循環(huán)檢測每個字符當(dāng)前字符為字母字母數(shù)量+是否當(dāng)前字符為數(shù)字?jǐn)?shù)字?jǐn)?shù)量+是

3、否i+i<字符串長度是否輸出結(jié)果結(jié)束2.1、算法描述(1) 讀取的模式打開一個txt的一個文件,逐行讀入文件的內(nèi)容(2) 檢測每行中的每個字符,判斷是否為/注釋行或為/*/注釋行(3) 判斷條件/注釋行:if (bufferi = '/'&&bufferi + 1 = '/'&&op =false)/當(dāng)前的字符為/,下個字符為/直接輸出注釋行內(nèi)容跳出當(dāng)行的字符循環(huán)/*/注釋行if (op = true)該字符是/*/內(nèi)的字符, 將該字符保存到pstr的字符串中if (bufferi = '/'&&am

4、p;bufferi + 1 = '*')以下是/*/注釋行的內(nèi)容memcpy(pstr, p + i, 1);/拷貝當(dāng)前字符op = true;/設(shè)置注釋行的類型,當(dāng)前為/*/的類型if (bufferi = '*'&&bufferi + 1 = '/'&&op = true) 檢測到注釋行的內(nèi)容結(jié)束memcpy(pstr, p + i+1, 1);/拷貝當(dāng)前字符continue;(4) 輸出結(jié)果2.2、算法流程圖統(tǒng)計數(shù)字和字母數(shù)量的結(jié)果截圖:實驗過程中遇到的問題解決辦法與實驗體會在這次的實驗中基本沒遇到什么問題,

5、只是c語言有點不熟練了*源代碼*#include"iostream"#include"string"using namespace std;int main()while(1)char str100;cin>>str;int k = 0;int j = 0;for(int i = 0;i < strlen(str);i+)if(stri >= 'A'&&stri <= 'Z'| stri >= 'a'&&stri<='z

6、9;)j+;if(stri >='0'&&stri<='9')k+;cout<<"數(shù)字:"<<k<<endl;cout<<"字母:"<<j<<endl<<endl;return 0;#include"iostream"#include"string"#include"fstream"using namespace std;int main()char b

7、uffer256;bool op = false;/判斷是否為/*/的注釋char* pstr = NULL;/記錄注釋內(nèi)容pstr = (char *)malloc(1024 * sizeof(char);char* ptempstr = NULL;/記錄pstr的首地址ptempstr = (char *)malloc(1024 * sizeof(char);ptempstr = pstr;ifstream fileopen;fileopen.open("d:com.txt");cout << "文件內(nèi)容如下:" << end

8、l;while (!fileopen.eof()fileopen.getline(buffer, 256, 'n');/讀入一行到控制臺char* p;/指向讀取文件的buffer緩沖區(qū)的首地址p = buffer;for (int i = 0; i<strlen(buffer); i+)/遇到“/”的注釋if (bufferi = '/'&&bufferi + 1 = '/'&&op =false)memset(pstr, 0, 1024);memcpy(pstr, p + i, strlen(buffer

9、) - i);cout << pstr << endl;break;/*/*/遇到“/*/”的注釋if (op = true)memcpy(pstr, p + i, 1);/拷貝當(dāng)前字符pstr += 1;if (bufferi = '/'&&bufferi + 1 = '*')memset(pstr, 0, 1024);ptempstr = pstr;memcpy(pstr, p + i, 1);/拷貝當(dāng)前字符pstr += 1;op = true;if (bufferi = '*'&&bufferi + 1 = '/'&&op

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論