導航:首頁 > 源碼編譯 > 編譯原理MD

編譯原理MD

發布時間:2022-05-02 04:07:32

① DB偽指令的使用!

DB XXDB的作用就是定義位元組型數據...比如:DB ? ;定義一個隨即值的空間</b>DB '$' ;定義'$'(結束符)
DB 5 ;定義數字5
DB 5,? ;定義5和隨即值的連續空間
和高級語言里聲明一個常量作用是一樣的...就是在內存中放了個數據...

你這里的SQRTAB里的DB定義的是一個數據區0,1,4,9,16,然後第二個數據區是25,36,49,64,81,學編程的都知道就是類似數組的作用.但是這里並不一定是數組,編譯原理不一樣.
[木頭愛編程 [email protected]]

② 編程菜鳥

計算機語言的種類非常的多,總的來說可以分成機器語言,匯編語言,高級語言三大類。
電腦每做的一次動作,一個步驟,都是按照以經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過計算機語言向計算機發出命令

計算機所能識別的語言只有機器語言,即由0和1構成的代碼。但通常人們編程時,不採用機器語言,因為它非常難於記憶和識別。

目前通用的編程語言有兩種形式:匯編語言和高級語言。

匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。

高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。

高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的VB、VC、FoxPro、Delphi等,這些語言的語法、命令格式都各不相同。

高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類:

解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。

編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* .OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如Visual C++、Visual Foxpro、Delphi等。

不要過度貶低編碼

不要真的認為"不少大師級的計算機技術研究者是不懂編程的",做軟體開發編碼是最最基礎的東西,只有踏踏實實的掌握好這個基礎你才有辦法往上走,不管做分析做設計做項目管理你都需要能清楚東西是如何實現的?可不可以實現?否則肯定出現大量的:"設計是設計,編碼是編碼","產品都是代碼人員從頭到尾實現的","究竟需花多少時間,難度有多大,開發人員說了算","質量/成本/進度全是黑匣子"...現象,如果你是做編碼那編碼就更重要了:).所以對於有志從事這個行業(軟體開發)的個人來說,必須先從"重視編碼"開始.過了這一關才能去考慮做系統分析,做項目管理...

軟體開發的各個環節是相輔相承的,分析有分析的重要,設計有設計的重要,編碼有編碼的重要,測試實施也各有其地位,任何一個環節搞不好就如同我們熟悉的木桶理論,"最薄弱的一個環節制約著其總容量".

既然編碼重要,那該如何學編碼?

專心學好一門語言

算算自己用過的語言也不少(括弧里為使用該語言寫的比較有代表性的東東),C(dos版的圖像/圖標編輯工具,96年的《電腦報》有介紹),C++(可自定義方塊形狀的方塊游戲,被收錄於99年《軟體》雜志的附送光碟上),匯編(DOS漢字系統,97年底完成),PB(學校自動排課/排考模塊,98年),ASP(一套web版的企業信息系統,99年),VB(企業信息系統的核心組件,99年),delphi(工作流平台,組件式GIS系統等),Java(Delphi Client + J2EE Server協同實現),.Net(規則引擎),PHH...

看起來好象也不少,回過頭來想想自己真正認真學過的語言只有一個,就是「C」, Dos年代的TC2.0,用它寫了大量的小程序,比較系統的了解了編程是怎麼一回事,記得那個時候看到什麼軟體都要琢磨它是如何實現的?如果讓我來實現該如何做?也模仿了不少東西,雖然多是很表面的模仿但對自己編程思維的鍛煉很有好處.後來用其它語言基本上都只是翻翻幫助,然後找找其Demo代碼來看看,很快就可進入狀態.

語言都是差不多的,重要的是「編碼的思想」,具備了該思想語言就只是工具了,用什麼工具實現都差不多,該思想的形成是需要「磨練」的,就是「專心使用一門語言」來磨練(甚至需要有「咬文嚼字的孔已己作風」),然後可「一理通百理通」,不然你只是浮於表面的去學再多的語言都沒有.都不能拿來做真正的開發.都不能了解「編碼」的內涵.

如在今年招聘面試的時候看到太多寫著什麼語言都精通(或熟練)的畢業生,我慣用的方法是給他(她)一張紙一支筆,讓他(她)用自己最了解的語言寫一個算階乘的函數,這個問題你一看肯定說很簡單,好,接著我會往下問,可以有多少種方法來實現:循環,遞歸…還有嗎?你能寫出多少種來?(代碼基本結構模式的考察).代碼質量如何? 有沒有考慮錯誤處理(太多人寫的代碼會進入死循環比如輸入的是負數) ? int的上限是多少,用long? 如果輸入值比較大,算得出結果嗎,該如何去實現可以計算很大數的該函數?...看著他(她)寫出來的代碼一個個問題的問就得了,不管你用什麼語言,不管你「精通」多少種語言,我只問這些用什麼語言來解決問題都需要的基礎的東西, 就是「編碼的思想」.

在學專一門語言的基礎上新東西當然要跟,不然在這個行業你是很難「混下去」的,但有這「學專一門」的前提後,你跟起來就輕鬆了,而不用總是得「追」~

在「專」一門語言的過程中為解決問題你會發現「演算法」很重要,這就是接下來要說的「基礎」了.

基礎很重要

面試的時候我一般都會問,基礎知識學得如何? 一般重點問的是:《數據結構》, 《編譯原理》, 《資料庫原理》的內容.至於《由》文提到的:《匯編語言》,《 Windows 程序設計》我是不會問的.這些是可以進一步學習的東西,但對現在的開發來說不是必須的.《軟體工程》我向來不問,教材理論跟實際差得太遠了~

《數據結構》很重要,不懂數據結構很多編碼就是「蠻干」,而且往往把「簡單問題復雜化」,甚至復雜到不可能解決.認真學習《數據結構》並多做嘗試用你熟悉的語言去實現裡面的演算法,你會發覺「世界真奇妙」~不要認為你不會去開發「編程語言」不需要學習《編譯原理》, 《編譯原理》裡麵包含了太多開發軟體的「奇妙」的思想案例,認真體會你肯定會被其解決問題的方法折服,從中你能體會到很多東西,對以後做軟體(不管是設計還是編碼等)大有幫助,裡面有很多現存的方法可用在你的項目中,而這些跟《數據結構》是互為補充的.在這些基礎上接下來《設計模式》一書你也一定得看看.

很多應用都離不開資料庫,最終總得找個地方來「操縱,存儲,分析數據」,關於範式,關於鎖,關於SQL,關於笛卡兒那一套你總得了解了解,不然無法入手,這就需要好好學習《資料庫原理》了.單純知道幾條SQL語句是遠遠不夠的,如何保證數據的完整性,安全性?如何提高效率等等都需要這些基礎的支持~

當然英文也是基礎,看英文資料確實重要,不單是書,還有網路上的大量資料,論壇…看的時候別害怕就是了,畢竟都是受過高等教育的,英語也學了那麼多年起碼都有點底吧,配合這兩個工具:《金山詞霸》及Google.com,不懂的單詞「即指即譯」,但很多名詞或基礎知識不是靠單詞解釋能清楚的,配合搜索引擎查查相關資料看看,記住一點,看到不懂的東西多看幾遍,默記一小會,日積月累你能看懂的東西就多了。

興趣

最後該說說的就是興趣問題,如果你能對它真正感興趣(如果要從事軟體開發又沒興趣的話趕緊先培養興趣去^_^),對看技術資料就想別人看武俠小說看球賽一樣的話,再配合上面提到的幾點(踏實, 先專後廣, 基礎扎實)相信在這一行多少是可以做點東西出來的~~

③ c++什麼是使用/md編譯

With these options, you can select either single-threaded or multithreaded run-time routines, indicate that a multithreaded mole is a dynamic-link library (DLL), and select the retail or debug version of the library.

/MD就是鏈接多線程版的運行時庫,/ML是鏈接單線程版的。

/MD Multithreaded DLL Defines _MT and _DLL so that both multithread- and DLL-specific versions of the run-time routines are selected from the standard .H files. This option also causes the compiler to place the library name MSVCRT.LIB into the .OBJ file.
Applications compiled with this option are statically linked to MSVCRT.LIB. This library provides a layer of code that allows the linker to resolve external references. The actual working code is contained in MSVCRT.DLL, which must be available at run time to applications linked with MSVCRT.LIB.

/ML Single-Threaded Causes the compiler to place the library name LIBC.LIB into the .OBJ file so that the linker will use LIBC.LIB to resolve external symbols. This is the compiler』s default action. LIBC.LIB does not provide multithread support.

④ MD是什麼意思

MD的全稱為:MachineDescription文件,是一個開發文件,用於程序。

⑤ C語言system()函數里的參數可以是變數嗎

  1. system是執行DOS的指令,在DOS下能執行的指令,用system都可以執行

  2. 把dos的命令直接放到它的參數裡面就可以執行

  3. system("cls")對應控制台程序,可以清屏

  4. 計算機組成原理→DOS命令→匯編語言→C語言(不包括C++)、代碼書寫規范→數據結構、編譯原理、操作系統→計算機網路、資料庫原理、正則表達式→其它語言(包括C++)、架構……

    .
    .
    BREAKSetsorclearsextendedCTRL+Cchecking.
    (ACLs)offiles.
    .
    .
    .
    .
    .
    .
    CLSClearsthescreen.
    .
    .
    .
    .
    .Youcannotconvertthe
    currentdrive.
    .
    DATEDisplaysorsetsthedate.
    DELDeletesoneormorefiles.
    .
    .
    .
    DOSKEYEditscommandlines,recallsWindows2000commands,andcreatesmacros.
    ECHODisplaysmessages,orturnscommandechoingonoroff.
    .
    ERASEDeletesoneormorefiles.
    EXITQuitstheCMD.EXEprogram(commandinterpreter).
    ,anddisplaysthedifferences
    betweenthem.
    .
    .
    .
    .
    .

    batchprogram.

    mode.
    .
    .
    LABELCreates,changes,.
    MDCreatesadirectory.
    MKDIRCreatesadirectory.
    MODEConfiguresasystemdevice.
    .
    .
    .
    .
    .
    PRINTPrintsatextfile.
    .
    .
    RDRemovesadirectory.
    .
    REMRecordscomments(remarks)inbatchfilesorCONFIG.SYS.
    RENRenamesafileorfiles.
    RENAMERenamesafileorfiles.
    REPLACEReplacesfiles.
    RMDIRRemovesadirectory.
    SETDisplays,sets,.
    .
    .
    SORTSortsinput.
    .
    .
    .
    .EXEsession.
    .
    .
    .

    correctlytoadisk.
    .
    .

⑥ 懸賞80分:計算機等級考試,VF的評分該怎麼來實現。

二級(Visual FoxPro資料庫程序設計)考試大綱
公共基礎知識
基本要求
1. 掌握演算法的基本概念。
2. 掌握基本數據結構及其操作。
3. 掌握基本排序和查找演算法。
4. 掌握逐步求精的結構化程序設計方法。
5. 掌握軟體工程的基本方法,具有初步應用相關技術進行軟體開發的能力。
6. 掌握資料庫的基本知識,了解關系資料庫的設計。
考試內容
1. 具有資料庫系統的基礎知識。
2. 基本了解面向對象的概念。
3. 掌握關系資料庫的基本原理。
4. 掌握資料庫程序設計方法。
5. 能夠使用Visual FoxPro建立一個小型資料庫應用系統。
考試內容
一、Visual Foxpro基礎知識
1. 基本概念:
資料庫,數據模型,資料庫管理系統,類和對象,事件,方法。
2. 關系資料庫:
(1) 關系資料庫:關系模型,關系模式,關系,元組,屬性,域,主關鍵字和外部關鍵字。
(2) 關系運算:選擇、投影、連接。
(3) 資料庫的一致性和完整性:實體完整性、域完整性、參照完整性。
3. Visual FoxPro系統特點與工作方式:
(1) Windows版本資料庫的特點。
(2) 數據類型和主要文件類型。
(3) 各種設計器和向導。
(4) 工作方式:交互方式(命令方式、可視化操作)和程序運行方式。
4. Visual Foxpro的基本數據元素:
(1) 常量,變數,表達式。
(2) 常用函數:字元處理函數,數值計算函數,日期時間函數,數據類型轉換函數,測試函數。
二、Visual FoxPro資料庫的基本操作
1. 資料庫和表的建立、修改與有效性檢驗:
(1) 表結構的建立與修改。
(2) 表記錄的瀏覽、增加、刪除與修改。
(3) 創建資料庫,向資料庫添加或移出表。
(4) 設定欄位級規則和記錄級規則。
(5) 表的索引:主索引,候選索引,普通索引,唯一索引。
2. 多表操作:
(1) 選擇工作區。
(2) 建立表之間的關聯,一對一的關聯,一對多的關聯。
(3) 設置參照完整性。
(4) 建立表間臨時關聯。
3. 建立視圖與數據查詢:
(1) 查詢文件的建立、執行與修改。
(2) 視圖文件的建立、查看與修改。
(3) 建立多表查詢。
(4) 建立多表視圖。
三、關系資料庫標准語言SQL
1. SQL的數據定義功能:
(1) CREATE TABLE-SQL。
(2) ALTER TABLE-SQL。
2. SQL的數據修改功能:
(1) DELETE-SQL。
(2) INSERT-SQL。
(3) UPDATE-SQL。
3. SQL的數據查詢功能:
(1) 簡單查詢。
(2) 嵌套查詢。
(3) 連接查詢。
內連接
外連接:左連接,右連接,完全連接
(4)分組與計算查詢。
(5) 集合的並運算。
四、項目管理器、設計器和向導的使用
1. 使用項目管理器:
(1) 使用「數據」選項卡。
(2) 使用「文檔」選項卡。
2. 使用表單設計器:
(1) 在表單中加入和修改控制項對象。
(2) 設定數據環境。
3. 使用菜單設計器:
(1) 建立主選項。
(2) 設計子菜單。
(3) 設定菜單選項程序代碼。
4. 使用報表設計器:
(1) 生成快速報表。
(2) 修改報表布局。
(3) 設計分組報表。
(4) 設計多欄報表。
5. 使用應用程序向導。
6. 應用程序生成器與連編應用程序。
五、Visual FoxPro程序設計
1. 命令文件的建立與運行:
(1) 程序文件的建立。
(2) 簡單的互動式輸入、輸出命令。
(3) 應用程序的調試與執行。
2. 結構化程序設計:
(1) 順序結構程序設計。
(2) 選擇結構程序設計。
(3) 循環結構程序設計。
3. 過程與過程調用:
(1) 子程序設計與調用。
(2) 過程與過程文件。
(3) 局部變數和全局變數,過程調用中的參數傳遞。
4. 用戶定義對話框(MESSAGEBOX)的使用。
考試方式
1. 筆試:90分鍾,滿分100分,其中含公共基礎知識部分的30分。
2. 上機考試:90分鍾,滿分100分。
(1) 基本操作。
(2) 簡單應用。
(3) 綜合應用。

----------------------------------------
如何應考二級FoxBASE+語言

1998年,根據我國計算機應用水平的實際情況,教育部考試中心頒布了新的考試大綱。新大綱中關於二級FoxBASE語言考試部分變化不大。今後,適應我國計算機應用水平的發展,教育部考試中心將會不斷更新考試大綱,可能在近幾年內會以二級FoxPro考試取代目前的二級FoxBASE考試。
在全國計算機等級考試的各個級別的各種類別、語言的考試中,二級FoxBASE考試逐漸成為應試人員最多的一門考試,發展趨勢之快是其它門考試所不能及的。但應試人數的增多並不代表這門考試較其它容易過關,尤其上機考試部分的編程題,對於非計算機專業的考生來說是有一定的難度的。因此,在進行考前復習時,要有重點、有針對性。至於什麼是重點、要針對什麼復習,我們通過對近幾年來二級FoxBASE考試的試卷作的一些分析研究,又參考新大綱中有關二級FoxBASE的考綱和模擬考題,提出下面一些分析結果供大家參考。

首先,分析筆試試卷。筆試考試時間兩小時,考題分單項選擇題和填空題,其中單項選擇題有50題,前40題每題1分,後10題每題2分;而填空題共有20個空(不是20題),每空2分。考試內容涉及了兩大部分:
第一部分是計算機的基礎知識與基本操作。
在以往幾次筆試中這一部分共佔30分(選擇題第1-20題,填空題第1-5空),新大綱頒布後,如果僅根據大綱中提供的模擬試題,這一部分可能會減至25分(選擇題減少5題)。其主要由以下幾個方面內容組成:
DOS的基本操作,佔10分以上。需要注意的是,這一方面題大部分題型靈活多變,要求我們熟練掌握文件、目錄、路徑的使用和常用命令的基本格式及其參數(注意命令格式中重定向符>和>>的使用和區別)。
計算機的常用數制及其轉換;數據基本單位,包括位、字、節以及漢字編碼的概念和有關運算,例如點陣漢字所佔位元組數的運算,佔5分以上。這一方面題要求我們熟練掌握這些轉換和運算的公式,不妨在復習時列一個公式表出來以便重點記憶。
特別提一下,①、②兩方面的內容通常是有關這一部分的填空題5個空所涉及的內容。
多媒體技術、計算機網路的一般知識;WINDOWS的基本操作。這三部分是新大綱中新增內容,每部分至少會有1-2分的題,因為是首次考,我想暫時主要考的是它們的基本概念和一些基本組成、特點等等。
其它內容。例如計算機的基本構成、計算機的使用注意、病毒的常識等等。
③、④兩方面對應的考題多為基本概念和基本常識題,復習時通常只要針對書中有關內容進行多次仔細閱讀,使我們能留下較深刻的印象,不必死記硬背。

第二部分是資料庫語言程序設計。
這一部分考題中選擇題與填空題相比難易度和題型都區別較大,因此我分開來分析。
一、選擇題。
它主要含有以下三個方面:
資料庫系統及FoxBASE+的基礎知識。這一方面題所涉及的都是一些固定不變的概念,包括:資料庫、資料庫管理系統、資料庫系統、資料庫模型的概念及其相互關系;關系資料庫中的關系術語和關系運算,特別是幾種關系運算在FoxBASE+中的體現;FoxBASE+的系統性能與工作方式等。
表達式和函數的單獨應用以及它們的組合應用。對於表達式,應掌握各類型表達式的組成以及它們所涉及的運算符、運算符的優先順序別、運算規則等;對於函數,要仔細閱讀每個常用函數的有關組成,包括:函數名、函數的自變數的個數、每個自變數的類型、函數值的運算、函數值的類型等,其中應特別注意以下三類:一些比較難於理解的函數,如宏替換函數&;一些容易出錯的函數,如求余數函數MOD();一些很少使用的函數,如文件測試函數FILE()。只有熟練掌握了以上這些基礎,仔細理解書中有關這些表達式和函數的例題,才能對這一方面的題應付自如。
命令的簡單應用。這里的命令是廣義的,還包含有與程序有關的命令和語句、SET命令等。如同上面所說的函數一樣,在熟練掌握常用命令的格式和功能之餘,也要求我們了解那些不常用命令,另外就是許多命令的格式中含有的可選項的使用。
與填空題比較起來,選擇題較簡單,但涉及的知識面相當廣,許多我們平常學習時容易忽略的知識點都有可能在它之中出現。
二、填空題。
它主要有兩種類型的題:命令序列的填空題和程序填空題,每種題型又分三種方式:補充填空,即命令序列或程序中缺失的整條命令語句填空;完整填空,即序列或程序中某條命令語句不完整,對缺失部分填空;結果填空,即對序列或程序的運行結果進行填空。
就我認為,做填空題中最大的難點是閱讀量大,雖說與資料庫有關的空只有15個,但往往會有10組(個)左右的命令序列和程序需要閱讀,
這中間還包括理解題意和瀏覽有關的資料庫文件等。與選擇題相反,它所涉及的知識點與面較小,都是一些常用命令和與程序有關的常用命令語句,這中間難一點的是多重資料庫操作,其次就是與子程序和過程文件有關的內容,還有用SET命令進行開關狀態的設置和環境參數的設置,比如說顏色的設置等,偶爾也會出現一些較偏一點的函數和命令填空,例如函數FILE()、匯總命令TOTAL等等。閱讀程序和命令序列沒有什麼竅門,只有能熟練掌握資料庫的命令,並進行大量的習題練習,培養出進行快速、准確閱讀的能力,考試才能作出正確的思考和判斷,填寫正確的結果。
以上是我對筆試考試的分析,應考時要注意時間的分配,不要在某一小題、某一空上浪費過多時間。
接下來,分析上機考試的試卷。上機考試時間一小時,由考試系統自動計時,考題共三大題:
第一大題:操作系統考試題。分數30分,含五或六小題,涉及的DOS命令以DOS 5.0為基準,理論上包括所有的內部和外部命令,當然,一些具有進攻性的命令除外,例如磁碟格式化命令FORMAT、硬碟分區命令FDISK等能導致軟體系統被破壞的命令。在以往幾次考試中,只考過以下六個命令:建目錄命令MD、刪目錄命令RD、刪文件命令DEL、文件復制(或文件順序連接)命令COPY、文件更名命令REN、設置文件屬性命令ATTRIB,現在依舊不排除會考其它命令的可能。這一大題考的是對DOS命令及其命令參數的使用,因此在考試時要依題意做出正確的命令及命令參數,以期得到正確的結果;如果做某一題時確實發現與這一題相關的源文件或目錄不存在(這種情況很少存在),只要命令和參數輸入正確,即使得不到正確結果,同樣給分。
通過我對近幾次考試的觀察,現提出應考時的幾點竅門:
對於上面六個命令,除了復制命令外,其它五個命令輸入完後回車,若操作系統沒有任何提示出現,往往就表示這一答案正確。對於復制命令,根據題目要求,若系統提示中有「x file(s) copied」(翻譯為:x個文件被復制),多數時候可以認為答案正確。
對於刪除X子目錄下的Y子目錄的考題時,應首先檢查Y子目錄下是否有下一級文件,如沒有,可以直接用RD命令,若出錯,應首先檢查目錄名是否輸錯。
另外還有幾點注意:
假若這一題要求產生新的文件或目錄,而你將新文件名或目錄名輸錯,那隻好看你發現沒有,系統是不會提示的。
考題中除非有特別提示,做題時能用上面六個命令做到的,就不要使用其它命令,例如說使用DELTREE命令來刪除目錄或文件、使用XCOPY命令來復制文件等,否則可能這一題無分。最為重要的是考試時不可脫離考生目錄,切記。
第二大題:程序修改考試題。分數30分,僅一道題,需修改的源程序存放在MODI1.PRG文件中。二級各語言考試的程序修改題中共有三種題型:填空、填寫語句和改錯,但在以往二級FoxBASE+語言的幾次考試中只使用了改錯這一種題型,其餘兩種考試中出現的較少。
在做程序修改題時,首先要找出程序的修改點。這一點不難做到,因為在源程序中提供了幾行這樣的注釋行:「***found***」或「***FOUND***」,稱為標識行,用來標識修改點所在,指出修改點就是它下面幾行語句中的某一行,而且就我注意往往是它下面的第一行。有幾個標識行就有幾個修改點,一般來說源程序中有三處。找到修改點後,知道了哪一行語句需修改,再根據題意以及上下關系來修改就容易多了。如果是屬於改錯語句,大多數時候它所給出的命令動詞都是對的,需要修改的只是該命令根據上下文所應有的范圍、表達式以及條件不正確;少數時候正好反過來,僅需修改命令動詞。
最後當程序修改完畢以後,必須要運行該程序,判斷其運行結果是否符合題意:若正確,即可認為修改題滿分;若不正確,返回去再修改,直至正確。實在做不出來,考試評分系統也會檢測修改點,評估有幾個修改點正確,並按比例給分。
做程序修改題中有幾個注意點:
一般不允許增或刪行數(包括空行),修改點所在行只能修改或填寫一個或幾個地方。
不能刪除或移動標識行,否則將會直接影響考生這部分的成績。
對於運行結果,它可能在屏幕上直接有顯示,也可能沒有顯示,而是直接存放在結果輸出文件中,這時需要去打開該文件來檢查運行結果。
第三大題:程序設計考試題。分數40分,也是僅一道題,其部分源程序存放在文件PROG1.PRG中,不過多數時候這個所謂「部分」可以說沒有。程序設計題只有一種題型:編寫部分程序、過程或函數。
考試時,考生必須首先要理解試題,分析出試題要求做什麼,然後進行編程,最後必須運行程序以得到運行結果並存放到指定的結果輸出文件中,編程題的評分規則是判定最終的運行結果,按正確結果的多少按比例進行給分。
在近幾次的考試中,編程題都是對資料庫的操作題,而且越來越接近實際應用,不過非常簡單化。這些編程題中,總要要求有一個庫文件用來存放最終的結果,稱之為結果輸出文件。需要注意的是這個結果輸出文件有時在考題中已經提供,有時要求在程序中通過已有的庫文件產生,有時又要在編程前用CREATE命令建立。後兩種情況對於考生是很有利的,當你的程序無法得到最終的正確結果時,只要你產生了這個結果輸出文件就會得到一定的分數。
編程前,首先要做三件事:閱讀並分析試題、仔細瀏覽試題中所涉及的資料庫文件的庫結構和看一下庫記錄。其實由於上機考試是無紙無筆操作,光考記憶一下子是記不了這全部內容,因此這三件事是在編程過程中常常要做的。
接下來就是進行編程及調試。觀察近幾次考試的編程題,編出來的程序其主體多涉及到多重資料庫操作以及循環嵌套和分支嵌套,尤其是它們的混合使用,由於題目中往往是要求對庫記錄的數據進行修改,因而在程序中最常使用的命令是欄位替換命令REPLACE。
能獨立編寫程序非一日之功,雖有各種竅門,要想化為己用,還的靠大量的練習。
上機考試時要注意心理狀態和時間分配。心理上,即使做不到當作一次普通的上機練習,也起碼應把它當作一次普通的筆試類考試,只不過這個試卷是一台計算機罷了;時間上,前兩大題花20多分鍾足以,剩下時間用於編程題,如果直到最後10分鍾編程題還未編完,甚或還沒有頭緒,最好先返回去仔細檢查前兩大題,確保這兩題沒有錯誤,以便得到或接近60分,再回頭來編寫程序並運行使自己能夠得到部分的最終正確結果,例如就產生一個上文所說的結果輸出文件(無結果數據)也行,而不要去強求編完全部程序後再來產生一個有結果數據的結果輸出文件,正確與否還不得而知。
以上所有就是我分析幾年來全國計算機等級考試二級FoxBASE語言考試得到的一點心得,希望能給廣大考生應考提供有益的幫助。

⑦ 如何判斷一個lib是用/ mt還是/ md編譯的

VS2008,項目——屬性——配置屬性——C/C++——代碼生成:他有/MT,/MTd,/Md,/MDd四個選項,你必須讓所有使用的庫都使用相同的配置,否則就會有相應的提示,甚至可能會出現無法解析的函數。有時我們使用的庫不是自己可以控制的,那麼就只能把工程屬性設置成河你使用的庫相同的選項。
錯誤 1 error LNK2005: _free 已經在 libcmtd.lib(dbgheap.obj) 中定義 MSVCRT.lib
錯誤 2 error LNK2005: _malloc 已經在 libcmtd.lib(dbgheap.obj) 中定義 MSVCRT.lib
.....

如果有一堆的重定義錯誤發生在同一個lib中,而且跟它沖突的也是同一個lib,那麼這個兩個lib的功能應該是一樣的,可以2選一,只要在「忽略特定的庫」內填入需要忽略的庫。

項目屬性-配置屬性-鏈接器-輸入-忽略特定的庫:libcmtd.lib
項目屬性-配置屬性-常規-MFC的使用:在共享 DLL 中使用 MFC

MSVCRT.lib 和libcmt.lib的沖突還是比較常見的。
從錯誤信息可以看出是msvcrt.lib和libcmt.lib庫中重復定義了__isctype等符號。為什麼會出現這樣的問題呢?這就要從這兩個庫的作用說起了。
msvcrt.lib是VC中的Multithreaded DLL 版本的C運行時庫,而libcmt.lib是Multithreaded的運行時庫。在同一個項目中,所有的源文件必須鏈接相同的C運行時庫。如果某一文 件用了Multithreaded DLL版本,而其他文件用了Single-Threaded或者Multithreaded版本的庫,也就是說用了不同的庫,就會導致這個警告的出現。

告警信息的意思我們明白之後,就要找造成這個問題的原因了。在項目設置中我們可以看到當前項目使用的是Multithreaded非DLL版本的運 行時庫,這說明項目中還有其他文件用到了不是這個版本的運行時庫。很顯然,就是openssl的靜態庫。查看openssl中ms下的nt.mak,我們 可以發現靜態庫版本中openssl使用編譯開關/MD進行編譯的,也就是說openssl靜態庫是默認用的Multithreaded DLL 版本的C運行時庫。

原因找到了。那麼解決方法,很明顯有兩個。總之就是將兩個項目的運行時庫統一。

簡單的方式就是將項目的動態庫修改為使用Multithreaded DLL 版本的C運行時庫即可。
某些情況下你的項目可能不能改變當前的運行時庫,你可以將openssl的nt.mak中的/MD開關修改為/MT然後重新編譯openssl靜態庫就可以了。

默認庫「library」與其他庫的使用沖突;請使用 /NODEFAULTLIB:library LNK4098 的解決辦法
您試圖與不兼容的庫鏈接。

注意
運行時庫現在包含可防止混合不同類型的指令。如果試圖在同一個程序中使用不同類型的運行 時庫或使用調試和非調試版本的運行時庫,則將收到此警告。例如,如 果編譯一個文件以使用一種運行時庫,而編譯另一個文件以使用另一種運行時庫(例如單線程運行時庫對多線程運行時庫),並試圖鏈接它們,則將得到此警告。應 將所有源文件編譯為使用同一個運行時庫。有關更多信息,請參見使用運行時庫(/MD、/MT 和 /LD)編譯器選項。

可以 使用鏈接器的 /VERBOSE:LIB 開關來確定鏈接器搜索的庫。如果收到 LNK4098,並想創建使用如單線程、非調試運行時庫的可執行文件,請使用 /VERBOSE:LIB 選項確定鏈接器搜索的庫。鏈接器作為搜索的庫輸出的應是 LIBC.lib,而非 LIBCMT.lib、MSVCRT.lib、LIBCD.lib、LIBCMTD.lib 和 MSVCRTD.lib。對每個要忽略的庫可以使用 /NODEFAULTLIB,以通知鏈接器忽略錯誤的運行時庫。

⑧ c語言輸出數據對齊不了怎麼弄

實在不行用printf()輸出
%md:m為指定的輸出欄位的寬度。如果數據的位數小於m,則左端補以空格,若大於m,則按實際位數輸出。%-md表示靠左輸出,右邊補空格 ;

閱讀全文

與編譯原理MD相關的資料

熱點內容
噴油螺桿製冷壓縮機 瀏覽:569
python員工信息登記表 瀏覽:369
高中美術pdf 瀏覽:153
java實現排列 瀏覽:505
javavector的用法 瀏覽:974
osi實現加密的三層 瀏覽:225
大眾寶來原廠中控如何安裝app 瀏覽:906
linux內核根文件系統 瀏覽:235
3d的命令面板不見了 瀏覽:520
武漢理工大學伺服器ip地址 瀏覽:141
亞馬遜雲伺服器登錄 瀏覽:517
安卓手機如何進行文件處理 瀏覽:65
mysql執行系統命令 瀏覽:923
php支持curlhttps 瀏覽:136
新預演算法責任 瀏覽:437
伺服器如何處理5萬人同時在線 瀏覽:244
哈夫曼編碼數據壓縮 瀏覽:418
鎖定伺服器是什麼意思 瀏覽:378
場景檢測演算法 瀏覽:611
解壓手機軟體觸屏 瀏覽:342