版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGE6程序設(shè)計基礎(chǔ)(C語言)PAGE7第1章C語言概述第1章C語言概述C語言是國際上廣泛流行的、很有發(fā)展前途的高級程序設(shè)計語言,它既可以用來編寫系統(tǒng)軟件,又可以用來編寫應(yīng)用軟件。C語言也是大學生學習程序設(shè)計選用最多的語言。本章主要介紹C語言的發(fā)展歷史、C語言的特點、C程序的結(jié)構(gòu)和C程序的上機步驟。通過本章的學習,讀者應(yīng)重點掌握C語言的特點、C程序的結(jié)構(gòu)和上機運行C程序的方法。1.1C語言的發(fā)展和特點自從計算機誕生以來,為了更好地進行軟件的設(shè)計,各種高級程序設(shè)計語言也在不斷地發(fā)展、進步和完善。C語言就是其中最優(yōu)秀的程序設(shè)計語言之一。1.1.1C語言的發(fā)展過程C語言是目前世界上最流行、使用最廣泛的高級程序設(shè)計語言。在設(shè)計操作系統(tǒng)等系統(tǒng)軟件和需要對硬件進行操作時,使用C語言編程明顯優(yōu)于其他高級語言,許多大型應(yīng)用軟件和系統(tǒng)軟件都是用C語言編寫的。C語言的起源可以追溯到ALGOL60。1963年英國的劍橋大學在ALGOL60的基礎(chǔ)上推出了CPL語言,但是CPL語言難以實現(xiàn)。1967年英國劍橋大學的MatinRichards對CPL語言作了簡化,推出了BCPL語言。1970年美國貝爾實驗室的KenThompson以BCPL語言為基礎(chǔ),又作了進一步的簡化,設(shè)計出了很簡單且接近硬件的B語言,并用B語言寫了第一個UNIX操作系統(tǒng),在DECPDP-7型計算機上實現(xiàn)。1971年在DECPDP-11上實現(xiàn)了B語言。1972年由美國的DennisM.Ritchie在B語言的基礎(chǔ)上設(shè)計出了C語言,并首次在UNIX操作系統(tǒng)的DECPDP-11計算機上使用。為了推廣UNIX操作系統(tǒng),1977年DennisM.Ritchie發(fā)表了不依賴于具體機器系統(tǒng)的C語言編譯文本《可移植的C語言編譯程序》。1978年BrianW.Kernighian和DennisM.Ritchie出版了名著《TheCProgrammingLanguage》,從而使C語言成為目前世界上流行最廣泛的高級程序設(shè)計語言。隨著微型計算機的日益普及,出現(xiàn)了許多C語言版本。由于沒有統(tǒng)一的標準,使得這些C語言之間出現(xiàn)了一些不一致的地方。為了改變這種情況,1983年美國國家標準研究所(ANSI)為C語言制定了第一個ANSI標準,稱為ANSIC。1987年美國國家標準研究所又公布了新的C語言標準,稱為87ANSIC。這個標準在1989年被國際標準化(ISO)組織采用,被稱為ANSI/ISOStandardC(即C89)。BrianW.Kernighian和DennisM.Ritchie根據(jù)這個標準,重寫了他們的經(jīng)典著作,并發(fā)表了《TheCProgrammingLanguage,SecondEdition》。1995年又為C語言增加了一些新的函數(shù),使之具有C++的一些特征,使C89成為C++的子集。1999年推出的C99在基本保留C語言特征的基礎(chǔ)上,增加了一系列面向?qū)ο蟮男绿卣?。C語言也從面向過程的語言發(fā)展成為面向?qū)ο蟮恼Z言。C語言是C++的基礎(chǔ),因此,掌握了C語言,再進一步學習C++就能以一種熟悉的語法來學習面向?qū)ο蟮恼Z言,從而達到事半功倍的目的。本課程是按照ANSI/ISOStandardC(即C89)來講授C語言的。目前最流行的C語言有MicrosoftC或稱MSC、TurboC和AT&TC。這些C語言版本不僅實現(xiàn)了ANSIC標準,而且在此基礎(chǔ)上各自作了一些擴充,使之更加方便、完美。本課程使用TurboC作為上機環(huán)境。1.1.2C語言的主要特點C語言發(fā)展迅速,而且成為最受歡迎的語言之一,主要因為它具有強大的功能。許多著名的系統(tǒng)軟件,如dBASEIIIPLUS、dBASEIV都是由C語言編寫的。用C語言加上一些匯編語言子程序,就更能顯示C語言的優(yōu)勢,像PC-DOS、WordSTAR等就是用這種方法編寫的。歸納起來C語言具有下列特點:1.C語言簡潔、緊湊、方便、靈活C語言共有32個關(guān)鍵字,9種控制語句,程序書寫自由,主要用小寫字母表示,壓縮了一些不必要的成分。2.運算符豐富C語言的運算符包括的范圍很廣泛,共有34個運算符。C語言把括號、賦值、強制類型轉(zhuǎn)換等都作為運算符處理。從而使C語言的運算類型極其豐富、表達式類型多樣化,靈活使用各種運算符可以實現(xiàn)在其他高級語言中難以實現(xiàn)的運算。3.數(shù)據(jù)結(jié)構(gòu)豐富C語言的數(shù)據(jù)類型有整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、聯(lián)合體類型等,能用來實現(xiàn)各種復(fù)雜的數(shù)據(jù)類型的運算。并引入了指針概念,使程序效率更高。另外TurboC語言具有強大的圖形功能,支持多種顯示器和驅(qū)動器。且計算功能、邏輯判斷功能強大。4.C語言是結(jié)構(gòu)化語言結(jié)構(gòu)化語言的顯著特點是代碼及數(shù)據(jù)的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?,便于使用、維護以及調(diào)試。C語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便地調(diào)用,并具有多種循環(huán)語句、條件語句來控制程序流程,從而使程序完全結(jié)構(gòu)化。5.C語法限制不太嚴格,程序設(shè)計自由度大一般的高級語言語法檢查比較嚴,能夠檢查出幾乎所有的語法錯誤。而C語言放寬了語法檢查,允許程序編寫者有較大的自由度。這是C語言的優(yōu)點,也是C語言的缺點。限制嚴格就失去了靈活性,而強調(diào)靈活必然要放松限制。在程序設(shè)計中,程序員不要過分地依賴編譯器的語法檢查。因此,對于初學者,編寫一個正確的C語言程序比編寫一個其他高級語言程序更難些。6.C語言允許直接訪問物理地址,可以直接對硬件進行操作C語言既具有高級語言的特點,又具有低級語言的許多功能,能夠像匯編語言一樣對位、字節(jié)和地址進行操作,而這三者是計算機最基本的工作單元,可以用來寫系統(tǒng)軟件。因此,有人把C語言稱為“中級語言”。7.C語言程序生成的代碼質(zhì)量高程序執(zhí)行效率高,一般只比匯編程序生成的目標代碼效率低10%~20%。8.C語言適用范圍大,可移植性好C語言有一個突出的優(yōu)點就是適合于多種操作系統(tǒng),如DOS、UNIX,也適用于多種機型。1.2C程序的結(jié)構(gòu)用C語言編寫的程序稱為C語言源程序,簡稱為C程序。為了說明C語言源程序結(jié)構(gòu)的特點,先看以下幾個程序。這幾個程序由簡到難,雖然有關(guān)內(nèi)容還未介紹,但可從這些例子中了解到組成一個C程序的基本部分和書寫格式。【例1-1】輸出一行信息的C程序。voidmain(){printf("Hello,world!\n");}main是主函數(shù)的函數(shù)名,表示這是一個主函數(shù)。每一個C程序都必須有主函數(shù),且只能有一個主函數(shù)。printf是輸出函數(shù),它的功能是把要輸出的內(nèi)容送到顯示器去輸出。printf函數(shù)是一個由系統(tǒng)定義的標準函數(shù),可在程序中直接調(diào)用。執(zhí)行這個程序,會在顯示器上輸出:Hello,world!【例1-2】計算三角函數(shù)的C程序。#include<math.h> /*#include稱為文件包含命令,擴展名為.h的文件稱為頭文件*/#include<stdio.h>voidmain(){doublex,s; /*定義兩個實數(shù)變量,以被后面程序使用*/printf("Inputaangle:"); /*顯示提示信息*/scanf("%lf",&x); /*從鍵盤獲得一個實數(shù)x*/s=sin(x*3.14159/180.0); /*求x的正弦,并把它賦給變量s*/printf("sineof%lfis%lf\n",x,s); /*顯示程序運算結(jié)果*/printf("Strikeanykeytocontinue!\n");getch(); /*按任何鍵回到集成開發(fā)環(huán)境*/}程序的功能是從鍵盤輸入一個數(shù)x,求x的正弦值,然后輸出結(jié)果。在main()之前的兩行稱為預(yù)處理命令(詳見后文)。預(yù)處理命令還有其他幾種,這里的#include稱為文件包含命令,其意義是把尖括號<>或引號""內(nèi)指定的文件包含到本程序來,成為本程序的一部分。被包含的文件通常是由系統(tǒng)提供的,其擴展名為.h。因此也稱為頭文件或首部文件。C語言的頭文件中包括了各個標準庫函數(shù)的函數(shù)原型。因此,凡是在程序中調(diào)用一個庫函數(shù)時,都必須包含該函數(shù)原型所在的頭文件。在本例中,使用了3個庫函數(shù):輸入函數(shù)scanf、正弦函數(shù)sin和輸出函數(shù)printf。sin函數(shù)是數(shù)學函數(shù),其頭文件為math.h文件,因此在程序的主函數(shù)前用#include命令包含了math.h。scanf和printf是標準輸入/輸出函數(shù),其頭文件為stdio.h,在主函數(shù)前也用#include命令包含了stdio.h文件。在程序的每行后用/*和*/括起來的內(nèi)容為注釋部分,程序不執(zhí)行注釋部分。需要說明的是,C語言規(guī)定對scanf和printf這兩個函數(shù)可以省去對其頭文件的包含命令。所以在本例中也可以刪去第2行的包含命令#include<stdio.h>。在例題中的主函數(shù)體中又分為兩部分,一部分為說明部分,另一部分為執(zhí)行部分。說明是指變量的類型說明。例題1-1中未使用任何變量,因此無說明部分。C語言規(guī)定,源程序中所有用到的變量都必須先說明后使用,否則將會出錯。這一點是編譯型高級程序設(shè)計語言的一個特點。說明部分是C程序結(jié)構(gòu)中很重要的組成部分。本例中使用了兩個變量x和s,用來表示輸入的自變量和正弦函數(shù)值。由于正弦函數(shù)要求這兩個量必須是雙精度浮點型,故用類型說明符double來說明這兩個變量。說明部分后的4行為執(zhí)行部分或稱為執(zhí)行語句部分,用以完成程序的功能。執(zhí)行部分的第1行是輸出語句,調(diào)用printf函數(shù)在顯示器上輸出提示字符串,請操作人員輸入自變量x的值。第2行調(diào)用scanf函數(shù),接受鍵盤上輸入的實數(shù)并存入變量x中。第3行是調(diào)用正弦函數(shù)并把函數(shù)值送到變量s中。第4行是用printf函數(shù)輸出變量s的值,即x的正弦值。程序結(jié)束。運行本程序時,首先在顯示器屏幕上給出提示串Inputaangle:這是由執(zhí)行部分的第1行完成的。用戶在提示串下輸入某一數(shù),如60,按下回車鍵,接著在屏幕上給出計算結(jié)果。【例1-3】包含自定義函數(shù)的C程序。#include<stdio.h>voidmain() /*主函數(shù)*/{intx,y,z; /*變量說明*/intmax(int,int); /*函數(shù)原型聲明*/printf("Inputtwonumbers:\n");scanf("%d%d",&x,&y); /*輸入x,y值*/z=max(x,y); /*調(diào)用max函數(shù)*/printf("maxmum=%d\n",z); /*輸出*/printf("Strikeanykeytocontinue!\n");getch(); /*按任何鍵回到集成開發(fā)環(huán)境*/}intmax(inta,intb) /*定義max函數(shù)*/{if(a>b)returna;elsereturnb; /*把結(jié)果返回主調(diào)函數(shù)*/}程序的功能是由用戶輸入兩個整數(shù),程序執(zhí)行后輸出其中較大的數(shù)。本程序由兩個函數(shù)組成,即主函數(shù)和max函數(shù),兩函數(shù)之間是并列關(guān)系,可從主函數(shù)中調(diào)用其他函數(shù)。max函數(shù)的功能是比較兩個數(shù),然后把較大的數(shù)返回給主函數(shù)。max函數(shù)是一個用戶自定義函數(shù)。因此在主函數(shù)中要給出函數(shù)原型??梢?,在程序的說明部分中,不僅有變量說明,還可以有函數(shù)原型說明。關(guān)于函數(shù)的詳細內(nèi)容將在第6章介紹。以上程序的執(zhí)行過程是,首先在屏幕上顯示提示串,請用戶輸入兩個數(shù),然后由scanf函數(shù)接收這兩個數(shù)送入變量x、y中,接著調(diào)用max函數(shù),并把x、y的值傳送給max函數(shù)的參數(shù)a和b。在max函數(shù)中比較a、b的大小,把大數(shù)返回給主函數(shù)的變量z,最后在屏幕上輸出z的值。通過以上3個例子,可以概括出C語言源程序的結(jié)構(gòu)特點:(1)一個C語言源程序可以由一個或多個源文件組成。(2)每個源文件可由一個或多個函數(shù)組成。(3)一個源程序不論由多少個文件組成,都有一個且只能有一個名字為main的函數(shù)(主函數(shù))。(4)源程序中可以有預(yù)處理命令(#include命令僅為其中的一種),預(yù)處理命令通常應(yīng)放在源文件或源程序的最前面。(5)每一個說明、每一個語句都必須以分號結(jié)尾。但預(yù)處理命令、函數(shù)頭和最后一個花括號“}”之后不能加分號。(6)標識符、關(guān)鍵字之間必須至少加一個空格以示分隔。若已有明顯的分隔符,也可不再加空格。程序的書寫格式非常自由,但從書寫清晰,便于閱讀、理解、維護的角度出發(fā),建議在書寫程序時應(yīng)遵循以下規(guī)則:(1)一個說明或一個語句占一行。(2)用{}括起來的部分,通常表示了程序的某一層次結(jié)構(gòu)。{}一般與該結(jié)構(gòu)語句的第一個字母對齊,并單獨占一行。(3)低一層次的語句或說明可比高一層次的語句或說明縮進若干格后書寫,以便看起來更加清晰,增加程序的可讀性。在編程時應(yīng)力求遵循這些規(guī)則,以養(yǎng)成良好的編程習慣。1.3TurboC上機步驟TurboC是美國Borland公司的產(chǎn)品,Borland公司是一家專門從事軟件開發(fā)、研制的公司。該公司相繼推出了一套Turbo系列軟件,如TurboBASIC、TurboPascal、TurboProlog。該公司在1987年首次推出TurboC1.0產(chǎn)品,以后又升級到2.0版。這套軟件使用了全新的集成開發(fā)環(huán)境,使用了一系列下拉式菜單,將文本編輯、程序編譯、連接以及程序運行一體化,大大方便了程序的開發(fā)。1.3.1TurboC2.0文件簡介TurboC的主要文件包括:INSTALL.EXE——安裝程序文件TC.EXE——集成編譯TCINST.EXE——集成開發(fā)環(huán)境的配置設(shè)置程序TCHELP.TCH——幫助文件THELP.COM——讀取TCHELP.TCH的駐留程序GRAPHICS.LIB——圖形庫EMU.LIB——8087仿真庫FP87.LIB——8087庫*.h——TurboC頭文件*.BGI——不同顯示器圖形驅(qū)動程序*.C——TurboC例行程序(源文件)1.3.2TurboC啟動在DOS環(huán)境下運行TurboC時,只要在TC子目錄下輸入TC并按Enter鍵即可進入TurboC集成開發(fā)環(huán)境。注意,TC下有兩個目錄LIB和INCLUDE。LIB子目錄中存放庫文件,INCLUDE子目錄中存放所有頭文件。在Windows環(huán)境下運行TurboC時,只要在文件夾中雙擊TC.EXE即可進入TurboC集成開發(fā)環(huán)境。1.3.3源程序的輸入、編譯、連接和運行C語言是一種高級語言,存放C程序的文件擴展名必須為“.c”。計算機硬件不能直接執(zhí)行源程序,必須將源程序翻譯成二進制目標程序。翻譯工作是由一個系統(tǒng)軟件完成的,這個軟件稱為編譯程序,翻譯的過程稱為編譯,編譯的結(jié)果稱為目標程序,存放目標程序的文件擴展名為“.OBJ”。程序翻譯成目標程序后,便可進行連接?!斑B接”的目的是使程序變成在計算機上可以執(zhí)行的最終形式。在這一階段,把系統(tǒng)程序庫中的函數(shù)與目標程序連接,連接的結(jié)果稱為可執(zhí)行程序,存放可執(zhí)行程序的文件擴展名為“.EXE”。1.源程序的輸入啟動TurboC后,就可以在編輯窗口輸入或修改程序。例如輸入以下程序:voidmain(){printf("Hello,world!\n");}則程序進入計算機存儲器。2.程序存盤為防止意外事故丟失程序,最好將輸入的程序存儲到磁盤中。在編輯窗口下,可直接按F2鍵或F10鍵,再按F鍵進入File菜單項,接著按S鍵或W鍵將文件存盤。3.編譯程序?qū)υ闯绦蜻M行編譯有兩種方法:(1)直接按Alt+F9鍵即可。(2)按F10鍵返回主菜單,選擇Compile項,屏幕顯示Compile下拉菜單,從下拉菜單中選擇Compileto.OBJ項,按回車鍵。進入編譯狀態(tài)后,屏幕會出現(xiàn)一個編譯窗口,幾秒鐘后,如果屏幕顯示一閃爍信息:Success:pressanykey表示編譯成功。此時可按任意鍵,編譯窗口消失,光標返回主菜單。如果程序有語法錯誤,編譯時會產(chǎn)生出錯(Error)信息或警告(Warning)信息,這些具體錯誤信息會顯示在屏幕下部的信息窗口中。對源程序進行修改后,要重新進行
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版行政合同行政主體特權(quán)與公眾權(quán)益保護協(xié)議3篇
- 2025年度離婚房產(chǎn)贈與合同附帶配偶經(jīng)濟補償協(xié)議
- 2025年度解除租賃合同簡易協(xié)議書(教育培訓場地)
- 2025年度舞蹈表演培訓學員招生合同書
- 二零二五年度裝合同終止協(xié)議書:商業(yè)辦公樓裝修工程終止協(xié)議
- 二零二五年度私人車輛抵押借款合同(含車輛貸款利率優(yōu)惠)
- 二零二五年度煙酒店線上線下融合支付合同
- 2025年度股東變更及公司社會責任履行與監(jiān)督協(xié)議
- 2025年度電動車租賃安全責任保險合作協(xié)議
- 二零二五年度商鋪購買合同主體變更協(xié)議
- 2024年遼寧石化職業(yè)技術(shù)學院單招職業(yè)適應(yīng)性測試題庫含答案
- 廣西桂林市2023-2024學年高二上學期期末考試物理試卷
- 財務(wù)指標與財務(wù)管理
- 2023-2024學年西安市高二數(shù)學第一學期期末考試卷附答案解析
- 部編版二年級下冊道德與法治第三單元《綠色小衛(wèi)士》全部教案
- 【京東倉庫出庫作業(yè)優(yōu)化設(shè)計13000字(論文)】
- 保安春節(jié)安全生產(chǎn)培訓
- 初一語文上冊基礎(chǔ)知識訓練及答案(5篇)
- 血液透析水處理系統(tǒng)演示
- GB/T 27030-2006合格評定第三方符合性標志的通用要求
- GB/T 13663.2-2018給水用聚乙烯(PE)管道系統(tǒng)第2部分:管材
評論
0/150
提交評論