導航:首頁 > 源碼編譯 > 先給出偽代碼再寫出源碼

先給出偽代碼再寫出源碼

發布時間:2023-05-14 04:13:24

❶ C語言求大神

看一下f函數的構造:它一共有6句,消謹整體是一個if……else……結構。
分析一下運行情況,由於沒調用一次f,定義一個不同的變數t,為防止混淆,我們將按順序稱之為t1、t2……
主函數列印語句調用f(a,9)①
第一次進入f函數,n=9>1,定禪橋行義變數1,再調用t1=f(a,8)②
第二次進入f函數,n=8>1,定義變數t2,再調用t2=f(a,7)③
……
第八次 進入f函數,n=2>1,定義變數t8,再調用t8=f(a,1)④
第9次 進入f函數,n=1>1不成立,指向else,返回a[0],即元素8。
返回④,即t8=8,往下一步程序:計算並返回t8>a[1]?t8:a[1]=8>2?8:2=8(返回8與2之大數),往上返回。每一次都是返回比較大的數。
……
當然,f(a,7)返回的是賀嘩9。回到③,t2=9,下一步計算t2>a[7]?因t2=9,a[7]=7,返回較大的9。
程序回到②,t1=9,下一步比較t1與a[8](=5)的大小,顯然返回較大的9。此時就要把9返回主函數①處了。
回到①處,程序獲得f(a,9)的值9,並列印。

❷ 偽代碼與源代碼如何區分

偽代碼:只是一種描述演算法結構的語言,只是用來說明一些問題,偽代碼並不能執行。如大學課程《數據結構》。比如要描述一個流程,你可以這么寫偽代碼:
if
登陸成功
then
跳轉頁面
else
出錯
這一段看像是程序,實際上只有人能看懂,真正要編程語言來實現上面的功能,你就不能那麼寫。
源代碼:是用匯編、C、C++等編寫好但還沒編譯成機器可執行的代碼。

❸ 代碼和偽代碼什麼區別

區別:

1,面對對象不同,偽代碼是方便程序員便於理解,源代碼是面對電腦,使電腦編譯。

2,編譯方式不同,偽代碼無被電腦編譯,源代碼可以被電腦編譯。

3,編寫方式不同,在偽代碼中,每一條指令佔一 行,指令後不限任啊符號,源代碼一條指令客棧多行,可加符號。

在現代程序語言中,源代碼可以是以書籍或者磁帶的形式出現,但最為常用的格式是文本文件,這種典型格式的目的是為了編譯出計算機程序。




(3)先給出偽代碼再寫出源碼擴展閱讀:

偽代碼:是用介於自然語言和計算機語言之間的文字和符號(包括數學符號)來描述演算法。

偽代碼簡單示例:輸入3個數,列印輸出其中最大的數。可用如下的偽代碼表示:

Begin(演算法開始)

輸入 A,B,C

IF A>B 則 A→Max

否則 B→Max

IF C>Max 則 C→Max

Print Max

End (演算法結束)

偽代碼(Pseudocode)是一種演算法描述語言。它不是一一種現實存在的編程語言。使用為代碼的目的是為了使被描述的演算法可以容易地以任何一種編程語言(Pascal, C,java, etc) 實現。

源程序(source code)即代碼是指未編譯的按照一定的程序設計語言規范書寫的文本文件。源代碼(也稱源程序),是指一系列人類可讀的計算機語言指令。

❹ 什麼是偽代碼,它與源代碼有何區別

偽代碼就是寫出示意性的代碼,用來討論流程或者說明問題的,不要求能編譯通過。為的就是寫起來方便,快。
源代碼就是程序代碼,原則上是能編譯通過並運行的。

❺ matlab中偽代碼(pseudo-code)與命令(command)怎麼轉換呢高分在線等

P使MATLAB變成中文版BR2006-2-17 15:57:53BRMATLAB自6.X版以來的界面都是用Java實現的。在MATLAB的安裝目錄下有個java文件夾,裡面存著用來建立MATLAB界面的java程序包(.jar包)。用winrar等軟體打開一個jar包,通過層層目錄(com.mathworks....)後你會看到一個resource文件夾(不是每個jar包都有),打開這個文件夾你會發現3個以.properties為擴展名的文件。這些.properties文件就是MATLAB的「語言包」。MATLAB啟動時就是根據這些.properties文件來初始化界面語言的。三個文件中一個是英文版的、一個是日文版的(文件名中包含_ja_JP.properteis)、還有一個_mw_QE(這個不知哪國語言)。MATLAB啟動時,根據用戶機器的區域設置選擇語言包,如果沒有找到計算機區區域選項所設地區對應的properties文件,MATLAB就調用英文版。因為沒有與中文對應的properties文件,所以大家的MATLAB啟動時都是英文版的。上面將區域選項更改後,由於有日語properties文件,所以你看到了日語版的MATLAB。 怎麼將界面語言變為中文呢?這就需要製作中文版的properties文件。在Java中中文對應的後綴是_zh_CN,因此只要把英文版的properties文件中「=」後面的內容翻譯成中文,將文件轉換成Unicode字元,並在保存的時候在原英文版文件名後加_zh_CN.properties,然後將該文件加入到原英文版所在的目錄,下次MATLAB啟動時就會調用該文件,你的MATLAB就變成漢化版的了。BR裡面有關於Unicode字元的轉換問題,用下面的步驟做:BR名稱:Unicode轉換器 功能:將非Unicode字元轉換成可供Java調用的Unicode字元 用法:將下面的代碼保存為Html文件即可 lt;titlegt; Unicode轉換器 lt;/titlegt; lt;bodygt; lt;textarea cols=100 rows=20 id=codegt; lt;/textareagt; lt;input type=button onclick=encode(code,this) value=" 編碼 "gt; lt;brgt;lt;brgt;輸入要轉換的字元,然後按「編碼」按鈕即可將輸入內容轉換成可供Java調用的Unicode編碼。lt;brgt; 按「解碼」按鈕可轉換回原來的字元。lt;brgt;lt;brgt;-Junziyang lt;/bodygt; lt;scriptgt; var mode=" 編碼 "; function encode(obj,btn){ if(mode==" 編碼 "){ obj.value="/obj.value.replace(/["^\u0000-\u00FF]/g,function($0){return escape($0).replace(/(%u)(\w{4})/gi,"a\\u$2/A")});BRbtn.value=" 解碼 "; mode=" 解碼 "; }else{ obj.value="/unescape(obj.value.replace(/\\u/g,'%u')); btn.value="" 編碼 "; mode=" 編碼 "; } } lt;/scriptgt; =============================BRproperties文件在java類庫裡面使用的也非常多,有一個專門的類 Properties用來處理這種文件,而且還有一個工具來專門處理字元轉換問題,如果裝了jdk的話,不妨用這個工具來試試。翻譯的時候直接輸入中文,然後用 native2ascii file_zh file_unicode 轉換一下就可以了,非常方便。 非常感謝junziyang的發現與共享。 native2ascii - Native-to-ASCII Converter Converts a file with native-encoded characters (characters which are non-Latin 1 and non-Unicode) to one with Unicode-encoded characters. SYNOPSIS native2ascii [options] [inputfile [outputfile]] DESCRIPTION The Java compiler and other Java tools can only process files which contain Latin-1 and/or Unicode-encoded (\udddd notation) characters. native2ascii converts files which contain other character encodings into files containing Latin-1 and/or Unicode-encoded charaters. If outputfile is omitted, standard output is used for output. If, in addition, inputfile is omitted, standard input is used for input. OPTIONS -reverse Perform the reverse operation: convert a file with Latin-1 and/or Unicode encoded characters to one with native-encoded characters.BR-encoding encoding_name Specify the encoding name which is used by the conversion procere. The default encoding is taken from System property file.encoding. The encoding_name string must be taken from the first column of the table of supported encodings in the Supported Encodings document. -Joption Pass option to the Java virtual machine, where option is one of the options described on the reference page for the java application launcher. For example, -J-Xms48m sets the startup memory to 48 megabytes. 稍作配置即可用EditPlus直接將翻譯後的文件保存為_zh_CN.properties文件。配置方法如下: 1、打開EditPlus,工具/配置用戶工具; 2、按「添加工具」按鈕。菜單文本:Native2ascii。 3、點「命令」右邊的按鈕,選擇JDK中native2ascii.exe文件。 4、參數:"$(FilePath)" $(FileNameNoExt)_zh_CN.properties 5、初始目錄:$(FileDir)。 6、選中「捕獲輸出」。 以後翻譯時直接打開原英文文件,翻譯完後點工具菜單最下面的「Native2ascii」菜單項。你會發現在原英文文件目錄下多了一個文件,該文件名為原英文文件名_zh_CN.properties. 用這種方法你必須先安裝JDKBR------------------------BR用 UltraEdit 的朋友可以用下面的方法試一下~ 1、打開UltraEdit,菜單Advanced/Tool Configuration 2、單擊Command Line右邊的Browse按鈕,瀏覽選中jdk里bin目錄的native2ascii.exe,並且在其後追加如下參數: %F %P%N_zh_CN.properties 完成後,在我的機器上Command Line框中內容如下: E:\jdk\j2sdk1.4.2\bin\native2ascii.exe %F %P%N_zh_CN.propertiesBR3、MenuItem Name中填入: Native2Ascii 4、最好選中 Save all files first,在執行轉換前先保存翻譯的文檔 5、單擊右邊的按鈕insert,在點擊OK就完成了。 翻譯時打開原英文文件,完成後點擊菜單Advanced下的Native2Ascii菜單,或者使用該菜單對應的快捷鍵就可以了,在同一目錄下生成對應的轉換後的文件。 如果要將其添加到工具欄上,需要進行如下操作: 菜單 Advanced/Configuration - ToolBar選項卡在Feature List中後面找到UserTool 1 然後點擊Insert將其插入就可以了。/P

❻ 網路工程方面的程序

本節主要介紹Turbo C程序設計的基本步驟及如何編譯、調試和運行源程序。並給出Turbo C的常用編輯命令。最後介紹Turbo C編譯、連接和運行時的常見錯誤。

一、Turbo C程序設計基本步驟
程序設計方法包括三個基本步驟:
第一步: 分析問題。
第二步: 畫出程序的基本輪廓。
第三步: 實現該程序。
3a. 編寫程序
3b. 測試和調試程序
3c. 提供數據列印結果
下面, 我們來說明每一步的具體細節。
第一步: 分析問題
在這一步, 你必須:
a. 作為解決問題的一種方法, 確定要產生的數據(輸出)。作為這一子步的一部分, 你應定義表示輸出的變數。
b. 確定需產生輸出的數據(稱為輸入), 作為這一子步的一部分, 你應定義表示輸入的變數。
c. 研製一種演算法, 從有限步的輸入中獲取輸出。 這種演算法定義為結構化的順序操作, 以便在有限步內解決問題。就數字問題而言, 這種演算法包括獲取輸出的計算, 但對非數字問題來說, 這種演算法包括許多文本和圖象處理作。

第二步: 畫出程序的基本輪廓
在這一步, 你要用一些句子(偽代碼)來畫出程序的基本輪廓。每個句子對應一個簡單的程序操作。對一個簡單的程序來說, 通過列出程序順序執行的動作,便可直接產生偽代碼。然而, 對復雜一些的程序來說, 則需要將大致過程有條理地進行組織。對此, 應使用自上而下的設計方法。
當使用自上而下的設計方法時, 你要把程序分割成幾段來完成。列出每段要實現的任務, 程序的輪廓也就有了, 這稱之為主模塊。當一項任務列在主模塊時,僅用其名加以標識, 並未指出該任務將如何完成。這方面的內容留給程序設計的下一階段來討論。將程序分為幾項任務只是對程序的初步設計。整個程序設計歸結為下圖所示的流程圖1.。
┏━━━━━━━━━━━━━━━┓
┃ 主模塊 ┃
┏━━━━━━━┓ ┃ 輸入數據 ┃
┃ 主模塊 ┃ ┃ 計算購房所需的金額 ┃
┃ ┃ ┃ 計算裝修所需的金額 ┃
┃ 任務1 ┃ ┃ 計算總金額 ┃
┃ 任務2 ┃ ┃ 輸出計算結果 ┃
┃ 任務3 ┃ ┃ ┃
┃ 任務4 ┃ ┗━━━━━━━┳━━━━━━━┛
┃ ┃ ┏━━━━━┳━━━━━╋━━━━┳━━━━━┓
┃ ┃ ┏━━┻━┓┏━━┻━┓┏━━┻━┓┏━┻━┓┏━━┻━┓
┗━━━━━━━┛ ┃輸入數據┃┃購房額..┃┃裝修額..┃┃總額..┃┃輸出結果┃
┗━━━━┛┗━━━━┛┗━━━━┛┗━━━┛┗━━━━┛
圖1. 程序初步設計 圖2. 第二級程序設計

如果把主模塊的每項任務擴展成一個模塊, 並根據子任務進行定義的話, 那麼, 程序設計就更為詳細了(見圖2.)。這些模塊稱為主模塊的子模塊。程序中許多子模塊之間的關系可象圖2.中那樣歸結為一張圖。這種圖稱為結構圖。
要畫出模塊的輪廓, 你可不考慮細節。如果這樣的話, 你必須使用子模塊,將各個模塊求精, 達到第三級設計。繼續這一過程, 直至說明程序的全部細節。
這一級一級的設計過程稱為逐步求精法。在編寫程序之前, 對你的程序進行逐步求精, 對你來說, 是很好的程序設計實踐, 會使你養成良好的設計習慣。
我們則才描述了程序設計中自上而下的設計方法。實際上就是說, 我們設計程序是從程序的"頂部"開始一直考慮到程序的"底部"。

第三步: 實現該程序
程序設計的最後一步是編寫源碼程序。 在這一步, 把模塊的偽代碼翻譯成Turbo C語句。
對於源程序, 你應包含注釋方式的文件編制, 以描述程序各個部分做何種工作。此外, 源程序還應包含調試程序段, 以測試程序的運行情況, 並允許查找編程錯誤。一旦程序運行情況良好, 可去掉調試程序段, 然而, 文件編制應做為源程序的固定部分保留下來, 便於你或其他人維護和修改。
二、源程序的輸入、編譯和運行

C語言是一種中級語言, 用戶用C語言編寫的程序稱為源程序, 存放用C 語言所寫源程序文件名字最後的兩個字元一般必須為".c"。計算機硬體不能直接執行源程序, 必須將源程序翻譯成二進制目標程序。翻譯工作是由一個程序完成的,這個程序稱為編譯程序, 翻譯的過程稱為編譯, 編譯的結果稱為目標程序, 存放目標程序文件名字緊後的字元一般為".OBJ"或".O"。程序翻譯成目標程序後, 便可進行連接。"連接"的目的是使程序變成在計算機上可以執行的最終形式。在這一階段, 從系統程序庫來的程序要與目標程序連接, 連接的結果稱為執行程序,存放執行程序文件名字一般以".EXE"結尾。
在Turbo C集成開發環境中建立一個新程序通常有以下幾個步驟:
(1). 在編輯器中編寫源文件。
(2). 生成可執行文件。

在DOS提示符下鍵入TC, 即可進入Turbo C了。進入主TC屏後, 按F3鍵, 即可在隨之出現的框中輸入文件名, 文件名可以帶".C"也可以不帶( 此時系統會自動加上)。輸入文件名後, 按回車, 即可將文件調入, 如果文件不存在, 就建立一個新文件(也可用下面例子中的方法輸入文件名)。系統隨之進入編輯狀態。就可以輸入或修改源程序了, 源程序輸入或修改完畢以後, 按Ctrl+F9(同時按下Ctrl鍵和F9鍵), 則立即進行編譯、連接和執行, 這三項工作是連續完成的。
下面我們試著建立一個Turbo C名為"HELLO.C"的源程序(因程序很小, 這里就不畫出該程序的輪廓圖了):
1. 操作步驟:
(1). 將系統置於DOS提示符下:
(2). 鍵入命令:
tc hello.c
使系統進入Turbo C集成開發環境, 並建立一個名為HELLO.C的文件。這時, 系統進入Turbo C編輯環境。
(3). 通過鍵盤輸入程序, 例如:
main()
{
printf("Hello, world\n");
}
則程序進入計算機存貯器。
2. 程序存檔
為防止意外事故丟失程序, 最好將輸入的程序存貯到磁碟中。在編輯窗口下,可直接按F2鍵或按F10鍵, 再按F鍵進入File菜單項, 再按S或W鍵將文件存檔。存檔時屏幕最底行會顯示:
"saving edit file"
3. 編譯一個程序
對源程序進行編譯有兩種方法: (1). 直接按Alt+F9即可。(2). 按F10 鍵返回主菜單, 選擇Compile項, 屏幕顯示Compile 下拉菜單, 從下拉菜單中選擇Compile to .OBJ項, 按回車鍵。
進入編譯狀態後, 屏幕會出現一個編譯窗口, 幾秒鍾後, 屏幕顯示一閃爍信息:
Success: press any key
表示編譯成功。此時可按任意鍵, 編譯窗口消失, 游標返回主菜單。
如果編譯時產生警告Warning或出錯Error信息, 這些具體錯誤信息會顯示在屏幕下部的信息窗中, 必須糾正這些錯誤。對源程序進行修改, 重新進行編譯。
4. 運行程序
源程序經編譯無誤後, 可以投入運行。具體操作如下:
(1). 如果當前還在編輯狀態, 可按Alt+R, 再選擇RUN項即可。
(2). 按Ctrl+F9。
程序投入運行時, 屏幕會出現一個連接窗口, 顯示Turbo C 正在連接和程序所需的庫函數。連接完畢後, 會出現屏幕突然一閃, 後又回到TC主屏幕, 發生了什麼? 讓我們按Alt+F5看看, 此時屏幕被清除, 在頂部顯示"Hello, world"字樣。再按任意鍵, 即可又回到TC主屏幕。
5. 列磁碟文件目錄
現在請按Alt+X退出Turbo C, 返回DOS提示符, 鍵入dir hello.*, 回車, 則屏幕顯示:
HELLO C 42 1-09-93 10:18
HELLO OBJ 221 1-09-93 10:22
HELLO EXE 4486 1-09-93 10:25
...
第一個文件HELLO.C是源文件文本, 在DOS提示符下鍵入TYPE HELLO.C命令,可在屏幕上顯示該文件的內容。可看到該程序只有42個位元組。
第二個文件HELLO.OBJ是Turbo C編擇程序產生的二進制機器指令(目標碼),如果用DOS命令TYPE顯示該文件, 屏幕可能會出現混亂的信息。
第三個文件HELLO.EXE是Turbo C連接程序產生的實際可執行文件。在DOS 提示符下鍵入HELLO並按回車, 屏幕將顯示"Hello, world"。

Turbo C 常用的編輯命令
Turbo C編輯程序大約有50條命令, 用以移動游標, 按頁查看正文, 查找並替換字元串等。如下表所示。

表1. Turbo C編輯程序命令
━━━┳━━━━━━━━━┳━━━━━━━━━━━━━
類別 ┃ 功能 ┃ 默認鍵
━━━╋━━━━━━━━━╋━━━━━━━━━━━━━
┃ 字元左 ┃ Ctrl+S或Left
基 ┃ 字元右 ┃ Ctrl+D或Right
本 ┃ 字左 ┃ Ctrl+A
光 ┃ 字右 ┃ Ctrl+F
標 ┃ 上行 ┃ Ctrl+E或Up
移 ┃ 下行 ┃ Ctrl+X或Down
動 ┃ 上滾 ┃ Ctrl+W
命 ┃ 下滾 ┃ Ctrl+Z
令 ┃ 上一頁 ┃ Ctrl+R或PgUp
┃ 下一頁 ┃ Ctrl+C或PgDn
━━━╋━━━━━━━━━╋━━━━━━━━━━━━━
快 ┃ 行頭 ┃ Ctrl+QS或Home
速 ┃ 行尾 ┃ Ctrl+QD或End
光 ┃ 窗口頭 ┃ Ctrl+QE
標 ┃ 窗口底 ┃ Ctrl+QX
移 ┃ 文件頭 ┃ Ctrl+QR
動 ┃ 文件尾 ┃ Ctrl+QC
命 ┃ 塊頭 ┃ Ctrl+QB
令 ┃ 塊尾 ┃ Ctrl+QK
┃ 上次游標位置 ┃ Ctrl+QP
━━━╋━━━━━━━━━╋━━━━━━━━━━━━━
輸 ┃ 插入模式 ┃ Ctrl+V或Ins
入 ┃ 插入行 ┃ Ctrl+N
與 ┃ 刪除行 ┃ Ctrl+Y
刪 ┃ 刪除至行尾 ┃ Ctrl+QY
除 ┃ 刪除游標左邊字元┃ Ctrl+H或Backspace
命 ┃ 刪除游標處字元 ┃ Ctrl+G或Del
令 ┃ 刪除游標右邊字元┃ Ctrl+T
━━━╋━━━━━━━━━╋━━━━━━━━━━━━━
┃ 標記塊首 ┃ Ctrl+KB
┃ 標記塊尾 ┃ Ctrl+KK
┃ 標記單個字 ┃ Ctrl+KT
塊 ┃ 復制塊 ┃ Ctrl+KC
命 ┃ 刪除塊 ┃ Ctrl+KY
令 ┃ 塊取消 ┃ Ctrl+KH
┃ 塊移動 ┃ Ctrl+KV
┃ 讀塊 ┃ Ctrl+KR
┃ 寫塊 ┃ Ctrl+KW
━━━╋━━━━━━━━━╋━━━━━━━━━━━━━
┃ 異常結束操作 ┃ Ctrl+U或Ctrl+Break
┃ 製表 ┃ Ctrl+L或Tab
其 ┃ 自動縮進 ┃ Ctrl+OI
┃ 定界符配對 ┃ Ctrl+Q[或Ctrl+Q]
它 ┃ 查找 ┃ Ctrl+QF
┃ 查找並替換 ┃ Ctrl+QA
┃ 查找標記 ┃ Ctrl+QN
┃ 退出編輯 ┃ Ctrl+KQ
━━━┻━━━━━━━━━┻━━━━━━━━━━━━━

Turbo C 程序的調試

一個程序設計好了以後, 通常會有一些錯誤, 查找和修改程序中的錯誤是令人頭痛的事。Turbo C集成開發環境提供了一調試裝置, 使得這一個工作容易了許多, 程序調試達到了編譯和運行級。

一、TC消息窗口

使用TC最好的理由之一是它允許用戶修改語法錯誤(編譯時) 和評估編譯器給出的警告。TC將編譯器和連接器發出的消息收集到一緩沖區中, 然後在消息窗口中顯示, 這樣在訪問源代碼的同時, 還能一下看到這些消息。
現將上面的HELLO.C製造一點語法錯誤, 將第一行包含語句的#去掉, 再去掉第五行printf語句中的後引號。現在程序看上去是這樣的:
include <stdio.h>
main()
{
printf("Hello, world\n);
}
按CTRL+F9重新編譯之。編譯窗口將顯示有多少錯誤和警告: 應為兩個錯誤, 0個
警告。
當看見編譯窗口中的Press anykey提示時, 按空格鍵, 消息窗口立刻被激活,亮條出現在第一個錯誤或警告上, 這時編輯窗口中也會有一亮條--- 它標志著編譯器給出的錯誤或警告在源代碼中的相應位置。
這時可用游標鍵將消息窗口中的亮條上下移動, 注意到編輯窗口中的亮條也隨著跟蹤源代碼中錯誤發生的位置。如果將亮條置於"compile"上, 則編輯器顯示文件的最後位置。
如果消息窗口太長看不見, 可用左、右游標水平滾動消息, 為了一次能夠多看點信息, 可按F5放大消息窗口。放大後, 編輯窗口不可見了, 因此不進行錯誤跟蹤。現在, 保持分屏模式。
為了改正錯誤, 將消息窗口中的亮條置於第一個錯誤消息上, 回車, 游標移到編輯窗口中錯誤產生處, 注意, 編輯器狀態給出所選消息( 這在放大模式下是有用的)改正之。(將第一行拿走的#重新寫上)。
當不只一個錯誤時, 可用兩種方法來修改下一錯誤。
第一種方法和前面一樣, 按F6回到消息窗口選擇想修改的下一條消息。
第二種方法不用回到消息窗口, 只要按Alt+F8, 編譯器就會將游標移至消息窗口中列的下一個錯誤。按Alt+F7可移至前一個錯誤。
這兩種方法各有長短, 視情況而定。有時源代碼中一個愚蠢的錯誤把編譯弄糊塗了, 產生好多消息, 這時選擇修改第一條消息就使得其餘的一些錯誤消息沒有什麼意義了, 這種情況發生時, 使用方法一會方便些, 一修改完第一個錯誤之後回到消息窗口, 再滾動到下一個有意義的消息上, 選擇之。在別的情況下, 按Alt+F8會方便得多。
記住, Alt+F7和Alt+F8是熱鍵, TC中無論何時均起作用。因此在消息窗口中按Alt+F8得到的不是當前亮行消息, 而是下一個消息(按Enter選擇當前消息)。
但如果沒別的編譯消息, Alt+F8就不起作用了。
注: 可以如此法選擇連接消息, 但它們不跟蹤源文件。在修改語法錯誤的過程當中, 經常需要增加、刪除正文, 編輯器是記住的, 依然能正確定位錯誤位置。
沒有必要記住行號和增加、刪除的正文行。

二、Turbo C集成調試器

一旦修改好語法錯誤之後程序編譯就沒什麼問題了, 但還是可能不按要求運行, 因為可能有邏輯錯誤(運行錯誤)。這種錯誤跟蹤就無助於發現錯誤位置了。TC有一個集成調試器可以跟蹤運行錯誤。通過調試器可以運行, 在斷點處暫停,檢查變數的值, 甚至可以改變之, 以看程序會有什麼反應。
Turbo C集成調試器是源程序級的調試器, 即用同你編寫程序一樣的" 語言"來控制調試器。例如, 為了顯示數組中的一個元素的值, 可告訴調試器顯示這樣的表達式的值:
Ctrl+F4 Debug/Eavluate 計算表達式, 允許修改變數的值。
Debug/Find Function 查找函數定義, 顯示在編輯窗口中。 僅在調試時才有效。
Ctrl+F3 Debug/Call Stack 顯示調用棧, 可顯示任何函數的當前執行位置, 其方法是在調用棧中選擇相應的
函數名。僅在調試時有效。
Debug/Source Debugging 控制是否允許調試: 置為On時, 集成調
試器和單獨調試器均可用 ; 置為
Standalone時, 只能用單獨調試器
調試, 雖然還能在TC中運行; 置為
None時, 在.EXE文件不置調試信息,
兩種調試均不能調試。
Ctrl+F4 Break/Watch/Add Watch 增加一監視表達式。
Break/Watch/Delete Watch 刪除一監視表達式。
Break/Watch/Edit 編輯一監視表達式。
Break/Watch/Remove All 刪除所有監視表達式。
Watches
Ctrl+F8 Break/Watch/Toggle 設置或清除游標所在行的斷點。
Breakpoint
Break/Watch/Clear 刪除程序中所有斷點。
Breakpoint
Break/Watch/Next 顯示下一斷點
Breakpoint
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

表3. 調試器菜單命令及其熱鍵
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
熱鍵 菜單命令 功能
———————————————————————————————————
F5 在整屏和分屏之間放大縮小活動窗口。
Alt+F5 將顯示轉到用戶屏, 擊任意鍵返回。
F6 在編輯窗口與監視窗口或消息窗口間
切換。
Alt+F6 若編輯窗口是活動的, 轉到最近一次
裝入編輯器的文件; 若下面窗口是活
動的, 則在監視窗口和消息窗口間切換。
Ctrl+F9 Run/Run 調試運行或不調試運行程序, 必要時
編譯、連接源文件, 若編譯、 連接時
Debug/Source Debuging和O/C/C/OBJ
Debug Information為On, 則運行程序
到斷點或程序末尾。
Project/Remove Messages 刪除消息窗口中的內容。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

判斷程序是否出錯或者為什麼出錯是編程中最有挑戰意義的一方面。這里建義你進行預防性設計, 具體做法為:
(1). 將代碼寫清楚點, 應作適當縮進, 使用文字說明和描述性的變數名。
(2). 代碼應簡單, 把精力放在簡單語句中的復雜表達式, 而不是一些復雜語句。Turbo C的代碼優化機制將大大提高代碼的效率, 而且調試、閱讀、 修改
起來容易。
(3). 盡量用目的簡單、好定義的函數構建程序。 這會便於編制調試程序和分析結果, 而且閱讀、修改起來也要容易一些。
(4). 應盡量減少各個函數要求的數據和改變數據的元素個數。這也會便於編制測試程序和分析結果; 同樣便於閱讀、修改程序。並且還限制了出錯函數可能造成的巨大混亂的牽涉面, 便得能在一個調試節中多運行函數幾次。
(5). 要留心編寫程序中的公共函數, 或者說在其它程序中可再用的函數.編寫、調試一個一般性的函數通常要比編寫、調試兩個或更多的特殊函數要容易。

Turbo C編譯、連接和運行時的常見錯誤
一、編譯時的常見錯誤
1. 數據類型錯誤。此類錯誤是初學者編程時的常見現象, 下面是一些要引起注意的錯誤:
(1) 所有變數和常量必須要加以說明。
(2) 變數只能賦給相同類型的數據。
(3) 對scanf()語句, 用戶可能輸入錯誤類型的數據項, 這將導致運行時出錯, 並報出錯信息。為避免這樣的錯誤出現, 你就提示用戶輸入正確類型的數據。
(4) 在執行算術運算時要注意:
a. 根據語法規則書寫雙精度數字。要寫0.5, 而不是寫.5; 要寫1.0,
而不是1。盡管C語言會自動地把整型轉換成雙精度型, 但書寫雙精
度型是個好習慣。讓C語言為你做強行轉換這是一種效率不高的程序
設計風格。 這有可能導致轉換產生錯誤。
b. 不要用0除。這是一個災難性的錯誤, 它會導致程序失敗, 不管C
語言的什麼版本, 都是如此, 執行除法運算要特別小心。
c. 確保所有的雙精度數(包括那些程序輸入用的雙精度數) 是在實數
范圍之內。
d. 所有整數必須在整數允許的范圍內。這適用於所有計算結果,包括中間結果。

2. 將函數後面的";"忘掉。此時錯誤提示色棒將停在該語句下的一行, 並顯示:
Statement missing ; in function <函數名>

3. 給宏指令如#include, #define等語句尾加了";"號。

4. "{"和"}"、"("和")"、"/*"和"*/"不匹配。 引時色棒將位於錯誤所在的行, 並提示出有關丟掉括弧的信息。

5. 沒有用#include指令說明頭文件, 錯誤信息提示有關該函數所使用的參數未定義。

6. 使用了Turbo C保留關鍵字作為標識符, 此時將提示定義了太多數據類型。

7. 將定義變數語句放在了執行語句後面。此時會提示語法錯誤。

8. 使用了未定義的變數, 此時屏幕顯示:
Undefined symbol '<變數名>' in function <函數名>

9. 警告錯誤太多。忽略這些警告錯誤並不影響程序的執行和結果。編譯時當警告錯誤數目大於某一規定值時(預設為100)便退出編譯器, 這時應改變集成開發環境Options/Compiler/Errors中的有關警告錯誤檢查開關為off。

10. 將關系符"=="誤用作賦值號"="。此時屏幕顯示:
Lvalue required in function <函數名>

二、連接時的常見錯誤

1. 將Turbo C庫函數名寫錯。這種情況下在連接時將會認為此函數是用戶自定義函數。此時屏幕顯示:
Undefined symbol '<函數名>' in <程序名>

2. 多個文件連接時, 沒有在"Project/Project name中指定項目文件 (.PRJ文件), 此時出現找不到函數的錯誤。

3. 子函數在說明和定義時類型不一致。
4. 程序調用的子函數沒有定義。

三、運行時的常見錯誤

1. 路徑名錯誤。在MS-DOS中, 斜杠(\)表示一個目錄名; 而在Turbo C 中斜杠是個某個字元串的一個轉義字元, 這樣, 在用Turbo C 字元串給出一個路徑名時應考慮"\"的轉義的作用。例如, 有這樣一條語句: file=fopen("c:\new\tbc.dat", "rb");
目的是打開C盤中NEW目錄中的TBC.DAT文件, 但做不到。這里"\"後面緊接的分別是"n"及"t", "\n"及"\t"將被分別編譯為換行及tab字元, DOS將認為它是不正確的文件名而拒絕接受, 因為文件名中不能和換行或tab字元。正確的寫法應為:
file=fopen("c:\\new\\tbc.dat", "rb");
2. 格式化輸入輸出時, 規定的類型與變數本身的類型不一致。例如:
float l;
printf("%c", l);
3. scanf()函數中將變數地址寫成變數。例如:
int l;
scanf("%d", l);
4. 循環語句中, 循環控制變數在每次循環未進行修改, 使循環成為無限循
環。
5. switch語句中沒有使用break語句。
6. 將賦值號"="誤用作關系符"=="。
7. 多層條件語句的if和else不配對。
8. 用動態內存分配函數malloc()或calloc()分配的內存區使用完之後, 未用free()函數釋放, 會導致函數前幾次調用正常, 而後面調用時發生死機現象,不能返回操作系統。其原因是因為沒用空間可供分配, 而佔用了操作系統在內存中的某些空間。
9. 使用了動態分配內存不成功的指針, 造成系統破壞。
10. 在對文件操作時, 沒有在使用完及時關閉打開的文件。

❼ c語言求大神

100以內素數

#include<stdio.h>	/*printf(),putchar()*/
#include<conio.h> /*getch()*/

/*試除法判斷素數*/
/*大於1的自然數num,若其不能被2~num^1/2(num的平方根)之間的任一自然襲擾數整除,則其為素數*/
/*num是素數返回1,否則返回0*/
intisPrime(intnum){
inti;
if(num<=1)/*素數必須是大於1的自然數*/
return0;
if(num%2==0&&num!=2)/*除2之外的偶數顯然不是素數*/
return0;
for(i=2;i*i<=num;i++)
if(num%i==0)
return拍轎旦0;
return1;
}

intmain(void){
inti;
for(i=2;i<=100;i++)
if(isPrime(i))
printf("%3d",i);
putchar(' ');

getch();/*屏幕暫留*/
return0;
}

❽ 求將偽代碼改為源代碼。數據結構

typedef struct
{
int *d;
int length;
}SQList ;
void init(SqList*sq,int n){
if(!sq)return ;
if(n<=0){sq->length=0;return;}
sq->length=n;
sq->d=(int *)malloc(sizeof(int)*n);
}
void init_byarr(SQList *sq,int a[],int n)
{
if(!sq)return ;
if(n<=0){sq->length=0;return ;
sq.length=n;
sq->d=(int *)malloc (sizeof(int)*n);
for(int i=0;i<n;I++)sq->d[i]=a[i];
}
void Destory(SQList *sq)
{
if(!sq)return;
if(sq->d) free(sq->d);
sq->length=0;
}
void MergeSQList(SQList *a,SQList *b,SQList *c)
{
int i,j,k;
if(!a && !b) return ;
if(a &&a->length==0)
{
if(!b)return ;
if( b->length==0)return;
init_byarr(c,b,b->length);
return ;
}
if(b && b->length==0)
{
if(!a)return ;
if( a->length==0)return;
init_byarr(c,a->d,a->length);
return;
}
init(c,a->length+b->length);

for(i=0,j=0,k=0;i<a->length && j<a->length;)
{
if(a->d[i]>b->d[i])c->d[k++]=a.d[i++];else c->d[k++]=b->d[j++];
}

while(i<a->length) c->d[k++]=a->d[i++];
while(j<a->length) c->d[k++]=b->d[j++];
}
}

void PrintSQList(SQList* sq)
{
int i=0;
if(!sq)return;
while(i<sq-length)printf("%d ",sq->d[i]);
printf("\n");
}
int main()
{
int a[]={3,5,8,11};
int b[]={2,6,8,9,11,15,20};
SQList LA,LB,LC;
init_byarr(&LA,a,sizeof(a)/sizeof(a[0]));
init_byarr(&LB,b,sizeof(b)/sizeof(b[0]));
printf("LA=");
PrintSqList(&LA);
printf("LB=")
PrintSQList(&LB);
printf("Merge(LA,LB)=");
MergeSQList(&LA,&LB,&LC);
PrintSQList(&LC);
Destory(&LA);
Destory(&LB);
Destory(&LC);
return 0;
}

閱讀全文

與先給出偽代碼再寫出源碼相關的資料

熱點內容
安卓三星手機怎麼截屏 瀏覽:97
程序員高級演算法 瀏覽:127
pythonbinlog 瀏覽:429
編譯原理箭頭上面一個加號乘號 瀏覽:664
螺桿式無油壓縮機 瀏覽:995
代碼編譯要多久 瀏覽:333
領導錯誤命令怎麼處理 瀏覽:948
怎麼看手機各app內存 瀏覽:477
程序員栽在背景調查 瀏覽:779
什麼是車場伺服器 瀏覽:910
手機伺服器怎麼上網 瀏覽:997
linuxtime命令 瀏覽:859
資深程序員夢想成一個特工 瀏覽:254
程序員沒禿 瀏覽:669
安卓如何下載手機米兔app 瀏覽:75
pdf在線處理 瀏覽:292
鑽圓周孔編程 瀏覽:955
交差編譯怎麼指定編譯工具鏈 瀏覽:461
java程序是jvm編譯的嗎 瀏覽:169
win7文件夾和文件一起排序 瀏覽:566