《第1章C語言概述》_第1頁
《第1章C語言概述》_第2頁
《第1章C語言概述》_第3頁
《第1章C語言概述》_第4頁
《第1章C語言概述》_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第1章 C語言概述計(jì)算機(jī)系統(tǒng)包括硬件系統(tǒng)和軟件系統(tǒng),硬件系統(tǒng)(稱為裸機(jī))是計(jì)算機(jī)的物質(zhì)基礎(chǔ),而軟件系統(tǒng)則是計(jì)算機(jī)的靈魂所在。所有的軟件都是用程序設(shè)計(jì)語言編寫的。程序設(shè)計(jì)語言的發(fā)展經(jīng)歷了從機(jī)器語言、匯編語言到高級語言的歷程,而C語言正是眾多高級語言中的一種。C語言是一種面向過程的計(jì)算機(jī)高級程序設(shè)計(jì)語言,它適合作為系統(tǒng)描述語言,既可用于編寫系統(tǒng)軟件,也可用于編寫用戶應(yīng)用軟件。經(jīng)過長期的改進(jìn)和發(fā)展,C語言的應(yīng)用范圍已經(jīng)相當(dāng)廣泛,它是目前國際上廣泛流行的計(jì)算機(jī)高級語言之一。1.1 C語言產(chǎn)生的歷史背景1C語言的產(chǎn)生和發(fā)展過程由于匯編語言程序依賴于計(jì)算機(jī)硬件,其可讀性和可移植性差,而一般的高級語言又難以

2、實(shí)現(xiàn)對計(jì)算機(jī)硬件的直接操作,于是人們希望有一種能對計(jì)算機(jī)硬件進(jìn)行直接操作的高級程序語言,C語言就是在這樣的背景下產(chǎn)生的。1972年至1973年間,美國貝爾實(shí)驗(yàn)室的D.M.Ritchie在B語言的基礎(chǔ)上設(shè)計(jì)出了C語言的雛形。最初的C語言保持了B語言的優(yōu)點(diǎn),它只是為了描述和實(shí)現(xiàn)UNIX操作系統(tǒng)而提供的一種工作語言。后來C語言多次做了改進(jìn),直到1975年NUIX第6版發(fā)布后,C語言的突出優(yōu)點(diǎn)才引起人們的普遍注意。1978年以后,C語言先后移植到大型、中型、小型和個(gè)人計(jì)算機(jī)上,已獨(dú)立于UNIX了。從此開始C語言便很快風(fēng)靡全世界,成為世界上應(yīng)用最廣泛的幾種計(jì)算機(jī)語言之一。2C語言的幾種不同版本 目前常見

3、的C語言系統(tǒng)有Turbo C/C+,Borland C+,MS(Micro Software)C+和Visual C+ 等,他們都是以ANSI(美國國家標(biāo)準(zhǔn)化協(xié)會)C為基礎(chǔ)開發(fā)出來的,并包含了C的幾乎所有功能。本書選定的上機(jī)運(yùn)行環(huán)境是Visual C+6.0系統(tǒng)。1.2 C語言的特點(diǎn)一種語言之所以能生存和發(fā)展,并具有較強(qiáng)的生命力,總是有其不同于其他語言的特點(diǎn)。C語言的主要特點(diǎn)如下。(1)語言簡潔緊湊,使用方便靈活。C語言共有32個(gè)關(guān)鍵字(見附錄B),9種控制語句,C程序書寫形式自由,主要用小寫字母表示,壓縮了一切不必要的成分。C程序語言簡練,源程序短,減少了程序輸入的工作量。(2)運(yùn)算符豐富。

4、C語言共有44種運(yùn)算符(見附錄C),C語言把括號、賦值和強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理,從而使C語言的運(yùn)算類型及其豐富,表達(dá)式類型多樣化。(3)數(shù)據(jù)類型豐富,具有現(xiàn)代語言的各種數(shù)據(jù)結(jié)構(gòu)。C語言提供的數(shù)據(jù)類型有:整形、浮點(diǎn)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等,能用來實(shí)現(xiàn)各種復(fù)雜數(shù)據(jù)結(jié)構(gòu)(如鏈表、樹、棧等)的運(yùn)算。(4)具有結(jié)構(gòu)化的控制語句(如ifelse語句、while語句、dowhile語句、switch語句、for語句)。C程序以函數(shù)作為基本模塊單位,便于實(shí)行程序的模塊化設(shè)計(jì)。(5)語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。在書寫C語言源程序時(shí)不像FORTRAN語言那樣有嚴(yán)格的

5、格式要求,其書寫形式比較隨意。比如在C程序中,一行可以寫多個(gè)語句,也可以將一個(gè)語句分成多行來寫。(6)C語言允許直接訪問物理地址。在C語言程序中能進(jìn)行位(bit)操作,能實(shí)現(xiàn)匯編語言的大部分功能,可以直接對硬件進(jìn)行操作。因此C語言既具有高級語言的功能又具有低級語言的許多功能,可用來編寫系統(tǒng)軟件。C語言既是成功的系統(tǒng)描述語言又是通用的程序設(shè)計(jì)語言。(7)生成的目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。C語言一般只比匯編程序的目標(biāo)代碼效率低10%到20%。(8)用C語言編寫的程序可移植性好。C語言編寫的程序,基本上不做任何修改就能用于各種型號的計(jì)算機(jī)和各種操作系統(tǒng)。在C語言的基礎(chǔ)上,1983年貝爾實(shí)驗(yàn)室又推

6、出了C+語言。C+語言進(jìn)一步擴(kuò)充和完善了C語言,C+是一種面向?qū)ο蟮母呒壋绦蛟O(shè)計(jì)語言。C語言是C+語言的基礎(chǔ),C+語言和C語言在很多方面是兼容的。掌握了C語言,再進(jìn)一步學(xué)習(xí)C+語言就更容易了,并能達(dá)到事半功倍的效果。1.3 簡單的C語言程序介紹1.3.1 幾個(gè)簡單的C語言程序舉例【例1.1】編寫C程序,在屏幕顯示輸出一行信息“這是我的第一個(gè)C程序!”。#include “stdio.h” /*包含標(biāo)準(zhǔn)輸入輸出庫函數(shù)的頭文件stdio.h */void main() /*主函數(shù)頭部分*/ /*主函數(shù)開始*/printf(“這是我的第一個(gè)C程序!n”); /*調(diào)用庫函數(shù)printf()輸出一個(gè)字符

7、串*/ /*主函數(shù)結(jié)束*/程序中,第一行的作用是把標(biāo)準(zhǔn)輸入輸出庫函數(shù)的頭文件stdio.h包含進(jìn)來,以便在下面的程序中調(diào)用它們(比如printf()函數(shù))。C語言程序是由函數(shù)組成,其中主函數(shù)main()有且僅有一個(gè)。在程序中void main()表示主函數(shù)返回類型為空類型,而在花括號中的內(nèi)容為主函數(shù)的函數(shù)體部分,在函數(shù)體中調(diào)用了stdio.h中的輸出函數(shù)printf()用來輸出一行字符?!纠?.2】編寫C程序求兩個(gè)整數(shù)之和123+456,并顯示輸出結(jié)果。#include “stdio.h”void main() /*函數(shù)頭部分*/ int a,b,sum; /*定義3個(gè)整形變量a,b,sum*

8、/ a=123; b=456; /*為變量a,b分別賦值123和456*/ sum=a+b; /*求a,b的和到sum中*/ printf(“sum is: %d n”,sum); /*調(diào)用printf函數(shù)輸出:sum si:*/ 【例1.3】通過調(diào)用自定義函數(shù)求兩個(gè)數(shù)中的較大者。#include “stdio.h” /*包含標(biāo)準(zhǔn)輸入輸出庫函數(shù)的頭文件stdio.h*/ int max(int x,int y) /*函數(shù)max()的作用為輸入兩個(gè)整形返回一個(gè)整形*/ int c=x; /*定義一個(gè)整形變量c并賦于初值為x的值*/ if(cy)c=y; /*使c為x,y中的最大值*/ retur

9、n(c); /*返回變量c的值*/void main() /*主函數(shù)首部*/ int a,b,c; /*定義3個(gè)整形變量a,b,c*/ scanf(“%d,%d”,&a,&b); /*調(diào)用庫函數(shù)scanf()從鍵盤輸入兩個(gè)整形變量a,b的值*/ c=max(a,b); /*調(diào)用自定義函數(shù)max()返回a,b的最大值到變量c中*/ printf(“最大數(shù)是:%dn”,c); /*調(diào)用系統(tǒng)函數(shù)printf()輸出“最大數(shù)是:”*/1.3.2 C程序的特點(diǎn)根據(jù)以上幾個(gè)簡單例子,下面給出C語言源程序的組成和運(yùn)行特點(diǎn)。1C程序的構(gòu)成C程序是由程序源文件組成的,每個(gè)程序文件都是由函數(shù)構(gòu)成的,函數(shù)是C程序的

10、基本單位。在一個(gè)C程序中,有且僅有一個(gè)主函數(shù)main(),同時(shí)還可以包含若干個(gè)其它函數(shù)。C語言程序的這種特點(diǎn)使得容易實(shí)現(xiàn)程序的模塊化。2C程序中函數(shù)之間的關(guān)系在C程序中主函數(shù)main()可以調(diào)用其它函數(shù),反之不然;其它函數(shù)之間可以相互調(diào)用。程序中的所有函數(shù)都是獨(dú)立的,即不能在一個(gè)函數(shù)中包含另一個(gè)函數(shù)。3C程序中函數(shù)的來源C程序中的函數(shù)由兩部分組成,即庫函數(shù)和用戶自定義函數(shù)。ANSI(美國國家標(biāo)準(zhǔn)化協(xié)會)C提供的庫函數(shù)有300多個(gè),使用庫函數(shù)時(shí)要先用#include命令將其所在函數(shù)庫的頭文件包含進(jìn)來;在調(diào)用自定義函數(shù)時(shí),要先定義后使用。4C程序中一個(gè)函數(shù)的組成(1)函數(shù)首部 函數(shù)首部為該函數(shù)代碼

11、的第1行,包括函數(shù)類型、函數(shù)名、函數(shù)形參類型、形參名。例如,在【例1.3】中求最大值的函數(shù)首部為:int max(int a,int b),其中每一部分的含義如圖1-1所示。(2)函數(shù)體 函數(shù)體為函數(shù)首部下面一對花括號即內(nèi)部的語句部分。如果一個(gè)函數(shù)內(nèi)有多對花括號,則最外層的一對為函數(shù)體的范圍。函數(shù)體內(nèi)一般包括以下兩個(gè)部分:聲明部分: 在聲明部分定義所有用到的變量和聲明程序中所有調(diào)用的自定義函數(shù)。執(zhí)行部分: 執(zhí)行部分由若干個(gè)語句組成,用以完成該函數(shù)的特定功能。例如,在【例1.2】中主函數(shù)的第2行:“int a,b,sum;”為聲明部分,第3、4、5行為執(zhí)行部分。5C程序的執(zhí)行過程 一個(gè)C程序總是

12、從主函數(shù)main()中的第一個(gè)語句開始執(zhí)行,到主函數(shù)的最后一個(gè)語句運(yùn)行結(jié)束,而不論main()在程序中的位置如何。6C程序的書寫格式 在C程序中,一行可以寫多個(gè)語句也可以將一個(gè)語句分成幾行來寫。每個(gè)語句的最后必須有一個(gè)分號“;”作為該語句的結(jié)束標(biāo)記。7C程序的輸入與輸出C語言本身沒有專用的輸入和輸出語句,C語言系統(tǒng)的輸入和輸出(i/o)操作是通過調(diào)用標(biāo)準(zhǔn)輸入輸出庫函數(shù):printf()、scanf()、getchar()、putchar()等來完成的,在調(diào)用這些庫函數(shù)前要先用命令“#include”將函數(shù)所在的頭文件stdio.h包含進(jìn)來。C語言的這一特點(diǎn)使得C語言源程序的規(guī)模變小,編譯程序簡

13、單,同時(shí)增加了程序的可移植性。8C程序的注釋在編寫C語言源程序時(shí),可以對程序的任何部分進(jìn)行注釋。在程序中加上必要的注釋說明可以增加程序的可讀性。在C+環(huán)境中有以下兩種注釋語句格式:(1)塊注釋 在塊注釋中以“/*”表示塊注釋開始,以“*/”表示塊注釋結(jié)束。例如:/*語句“printf(“a=%d,b=%dn”,a,b);”表示輸出整形變量a、b的值*/(2)行注釋 行注釋只能在C+運(yùn)行環(huán)境中使用,行注釋以“/”表示注釋開始,本行中/后面的內(nèi)容為注釋部分。例如:/語句“printf(“a=%d,b=%dn”,a,b);”表示輸出整形變量a、b的值1.4 C語言程序的編輯與運(yùn)行方法介紹1.4.1

14、運(yùn)行C語言程序的步驟前面已經(jīng)列舉了幾個(gè)C語言源程序。所謂程序,是一組計(jì)算機(jī)能識別和執(zhí)行的指令的集合,其中每條指令使計(jì)算機(jī)執(zhí)行特定的操作。用高級語言編寫的程序稱為源程序。由于計(jì)算機(jī)只能識別和執(zhí)行由0和1組成的二進(jìn)制指令,而不能識別和執(zhí)行用高級語言編寫的指令。為此,在源程序運(yùn)行之前必須用相應(yīng)的編譯程序?qū)⑵滢D(zhuǎn)換為計(jì)算機(jī)能識別的二進(jìn)制的目標(biāo)程序,然后再將該目標(biāo)程序與系統(tǒng)中的庫函數(shù)以及其它目標(biāo)程序連接起來形成可執(zhí)行程序。在Visual C+6.0中,C語言程序的運(yùn)行過程是:(1)上機(jī)編輯C語言源程序代碼文件(file.cpp)(2)對源程序文件進(jìn)行編譯生成目標(biāo)程序(file.obj)(3)將目標(biāo)程序、程

15、序中的庫函數(shù)進(jìn)行連接生成可執(zhí)行程序(file.exe)(4)運(yùn)行可執(zhí)行程序得到結(jié)果。如果程序的運(yùn)行結(jié)果不正確或編譯時(shí)存在語法錯(cuò)誤等問題,都要從修改源程序開始重復(fù)上面的各個(gè)步驟,直到運(yùn)行結(jié)果正確為止。以上程序的執(zhí)行過程如圖1-2所示。1.4.2 使用Visual C+6.0編輯和運(yùn)行C語言程序1進(jìn)入Visual C+6.0的集成環(huán)境(1)在Windows操作系統(tǒng)的桌面菜單中點(diǎn)擊開始(2)在開始菜單中點(diǎn)擊所有程序子菜單(3)在所有程序菜單中點(diǎn)擊Microsoft Visual Studio 6.0子菜單(4)在Microsoft Visual Studio 6.0菜單中點(diǎn)擊Microsoft Vi

16、sual C+ 6.0子菜單,如圖1-3所示。此時(shí)進(jìn)入Visual C+ 6.0的集成環(huán)境如圖1-4所示。2在Visual C+6.0中建立程序所在的工程(1)點(diǎn)擊圖1-4中的文件子菜單(2)在文件菜單中點(diǎn)擊新建子菜單(3)點(diǎn)擊新建菜單中的工程子菜單,此時(shí)進(jìn)入Visual C+ 6.0的工程集成環(huán)境如圖1-5所示。(4)在工程菜單中選中Win32 Console Application選項(xiàng)(5)在平臺菜單中選中Win32(6)在位置菜單中輸入工程所在的目錄(本文為:D:VC60)(7)在工程名菜單中輸入工程名(本文為:C程序2010)(8)單擊確定選中An empty project單擊完成單

17、擊確定后就建立了一個(gè)名為“C程序2010”的工程。該工程的主窗體如圖1-6所示。3進(jìn)入VC+6.0的集成編輯環(huán)境(1)在圖1-6中點(diǎn)擊文件子菜單進(jìn)入文件子窗體如圖1-7所示。(2)在文件菜單中選中C+ Source File(3)文件名菜單中輸入源文件名(本文中輸入:ch1.cpp)(4)選中添加工程(5)單擊確定后就進(jìn)入了對源程序文件的編輯界面如圖1-8所示。4源程序ch1.cpp的編輯、編譯、運(yùn)行(1)在圖1-8的窗體中輸入【例1.1】的程序(2)點(diǎn)擊編譯窗體中的構(gòu)建C程序2010.exe或快捷鍵F7,進(jìn)行編譯和連接生成可執(zhí)行程序。其編譯過程如圖1-9所示。(3)在以上操作無誤的情況下點(diǎn)擊

18、窗體中的“!”或快捷鍵Ctrl+F5運(yùn)行該程序。結(jié)果如圖1-10所示。如果發(fā)現(xiàn)有語法錯(cuò)誤或運(yùn)行結(jié)果不正確,就要重新修改源程序,并重復(fù)上述(1)、(2)、(3)的步驟,直至得到正確的結(jié)果為止。1.5 習(xí) 題一、選擇題1以下并非C語言特點(diǎn)的是( )。 A. C語言簡潔和緊湊 B. 能夠編寫出功能復(fù)雜的程序 C. C語言可以直接對硬件進(jìn)行操作 D. C語言的可移植性好2一個(gè)C程序的執(zhí)行是( )。 A. 從main()函數(shù)開始,直到main()函數(shù)結(jié)束 B. 從第一個(gè)函數(shù)開始,直到最后一個(gè)函數(shù)結(jié)束 C. 從main()函數(shù)開始,直到最后一個(gè)函數(shù)結(jié)束 D. 從第一個(gè)語句開始,直到最后一個(gè)語句結(jié)束3在一個(gè)

19、C程序中,main()函數(shù)的位置( )。 A. 必須放在它所調(diào)用的函數(shù)之后 B. 可以在程序的任意位置 C. 必須作為程序的最后一個(gè)函數(shù) D. 必須是程序的第一個(gè)函數(shù)4一個(gè)C程序是由( )組成的。 A. 一個(gè)或多個(gè)函數(shù) B. 若干個(gè)主函數(shù) C. 若干個(gè)子程序 D. 一個(gè)主程序和若干個(gè)子程序5以下說法中正確的是( )。 A. 在執(zhí)行C程序時(shí)不是從main()函數(shù)開始的 B. C程序的書寫格式限制嚴(yán)格,一行內(nèi)必須寫一條語句 C. C程序的書寫格式比較自由,寫一條語句可以分成多行書寫 D. 在C程序中每行寫一條語句,并且要求有行號二、填空題6一個(gè)C源程序有( )個(gè)main()函數(shù)和( )個(gè)其它函數(shù)。7一條C語句必須以( )結(jié)束。8組成C語言源程序的基本單位是( )。9C編譯程序的功能是( )。10本章中討論的3類計(jì)算機(jī)語言是( )語言、( )語言和( )語言。11把高級語言編寫的源程序翻譯成機(jī)器語言程序的過程稱為( )。12開發(fā)一個(gè)C語言程序可以分為

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論