第1章 C語言程序設計初步_第1頁
第1章 C語言程序設計初步_第2頁
第1章 C語言程序設計初步_第3頁
第1章 C語言程序設計初步_第4頁
第1章 C語言程序設計初步_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第1章 C語言程序設計初步本章是語言程序設計的入門部分, 從整體上介紹語言的起源和發(fā)展,講述語言的特點、結構和基礎語法要點。1.1 語言概述1.1.1 語言的發(fā)展語言是界上廣泛流行的的程序設計語言之一,它適合于作系統(tǒng)描述語言,即用來寫系統(tǒng)軟件,也可以用來寫應用軟件。早期的操作系統(tǒng)等系統(tǒng)軟件主要是用匯編語言編寫的(包括UNIX操作系統(tǒng)在內)。但是匯編語言存在明顯的缺點,即可讀性和可移植性都比較差,為了提高可讀性和可移植性,最好改用高級語言,但是一般高級語言難以實現(xiàn)匯編語言的某些功能(匯編語言可以直接對硬件進行操作,例如對內存地址的操作、位操作等)。人們希望能找到一種既具有一般高級語言特性,又具有

2、低級語言底層操作能力的語言,集它們的優(yōu)點于一身,于是語言在70年代初應運而生了。1978年由美國電話電報公司(AT&T)的貝爾實驗室正式發(fā)表了語言,同時由B.W.Kernighan和D.M.Ritchit合著了影響深遠的“THE C PROGRAMMING LANGUAGE”一書,通常簡稱為K&R,也有人稱之為K&R標準。但是,在K&R中并沒有定義一個完整的標準C語言,許多開發(fā)機構推出了自己的C語言版本,這些版本之間的微小差別不時引起兼容性上的問題,后來由美國國家標準學會ANSI(American National Standard Institute)在各種C

3、語言版本的基礎上制定了一個C 語言標準,于1983年發(fā)表。通常稱之為ANSI C。1987年ANSI又公布了新標準87 ANSI C。目前廣泛流行的各種C編譯系統(tǒng)都是以它為基礎的。早期的C語言主要是用于UNIX系統(tǒng),由于語言的強大功能和各方面的優(yōu)點逐漸為人們認識,到了八十年代,C語言開始進入其它操作系統(tǒng),并很快在各類大、中、小和微型計算機上得到了廣泛的使用,成為當代最優(yōu)秀的程序設計語言之一。在C的基礎上,1983年又由貝爾實驗室的Bjarne Strou-strup推出了C+。 C+進一步擴充和完善了語言,成為一種面向 對象的程序設計語言。C+提出了一些更為深入的概念,它所支持的這些面向對象的

4、概念容易將問題空間直接地映射到程序空間,為程序員提供了一種與傳統(tǒng)結構程序設計不同的思維方式和編程方法。因而也增加了整個語言的復雜性,掌握起來有一定難度。但是,C是C+的基礎,C+語言和語言在很多方面是兼容的。因此,掌握了語言,再進一步學習C+就能以一種熟悉的語法來學習面向對象的語言,從而達到事半功倍的目的。目前最流行的語言有以下幾種:·Microsoft C 或稱 MS C·Borland Turbo C 或稱 Turbo C·AT&T C這些語言版本不僅實現(xiàn)了ANSI C標準,而且在此基礎上各自作了一些擴充,使之更加方便、完美。這些不同版本C語言之間有一

5、定的差別,但對初學者來說,不必過多理會他們的差別,重在理解C語言的特點和編程方法。本書的敘述以TURBO C為準。 語言的特點語言是一種通用、靈活、結構化、標準化、使用廣泛的編程語言,能完成用戶的各種任務,特別適合進行系統(tǒng)程序設計和對硬件進行操作的場合。C語言本身不對程序員施加過多限制,是一種專業(yè)程序員優(yōu)先選擇的語言。它有如下主要特點:1. 語言簡潔緊湊,壓縮了一切不必要的成分。ANSI C有32個關鍵字,TURBO C有58個關鍵字,9種控制語句,書寫形式自由。2. 語言運算豐富,將括號、賦值、強制類型轉換、取變量地址等都以運算實現(xiàn)。ANSI C提供34種運算符,TURBO C提供了44種運

6、算符,靈活使用這些運算符可以實現(xiàn)其它高級語言難以實現(xiàn)的操作。C語言的表達式簡練、多樣、靈活、實用,加上分號可以構成語句。3. C語言數(shù)據(jù)類型豐富,具有現(xiàn)代語言的各種數(shù)據(jù)類型,用戶還能擴充它,實現(xiàn)各種復雜的數(shù)據(jù)結構,完成各種問題的數(shù)據(jù)描述。尤其是C語言的指針類型,非常有特色,可指向各種數(shù)據(jù),完成數(shù)據(jù)的高效處理。C語言不但對數(shù)據(jù)作類型上的描述,還提供存儲屬性考慮。4. C語言是一種結構化程序設計語言,層次清晰,便于按模塊化方式組織程序,易于調試和維護。C程序由若干程序文件組成,一個程序文件由若干函數(shù)構成。5. 語言可以直接訪問物理地址,進行位(bit)一級的操作,能實現(xiàn)匯編語言的大部分功能。由于語

7、言實現(xiàn)了對硬件的編程操作,因此語言集高級語言和低級語言的功能于一體的表現(xiàn)能力和處理能力極強,有時也被稱作中級語言。6. C語言提供了預處理機制,有利于大型程序的編寫和調試。7. C語言生成的目標代碼質量很高,程序執(zhí)行效率很高。一般只比匯編程序生成的目標代碼效率低1020%。8. 用語言寫的程序可移植性好(與匯編語言比)?;旧喜蛔餍薷木涂梢杂糜诟鞣N型號的計算機和各種操作系統(tǒng)。9. C語言語法限制不太嚴格,程序員設計自由度較大。例如,對數(shù)組下標越界不做檢查,由程序員自己保證程序的正確。一般的高級語言語法檢查比較嚴,能檢查出幾乎所有的語法錯誤,而C語言允許程序員有較大的自由度,因此放寬了語法檢查。

8、限制與靈活是一對矛盾,限制嚴格,就失去靈活性;而強調靈活,就必然放松限制。一個不熟練的人員,編一個正確的C程序可能會比編一個其它高級語言程序難一些。也就是說,對用C語言的人,要求對程序設計更熟練一些。1.2 基本語法成分本節(jié)介紹C語言的字符集、關鍵字、標識符、運算符、分隔符和注釋符等基本語法成分。 語言的字符集字符是組成語言的最基本的元素。語言字符集由字母,數(shù)字,空格,標點和特殊字符組成。在字符串常量和注釋中還可以使用漢字或其它可表示的圖形符號。1.字母小寫字母az共26個,大寫字母AZ共26個。2.數(shù)字09共10個3.空白符空格符、制表符、換行符等統(tǒng)稱為空白符??瞻追辉谧址A亢妥址A?/p>

9、中起作用。在其它地方出現(xiàn)時,只起間隔作用,編譯程序對它們忽略。因此在程序中使用空白符與否,對程序的編譯不發(fā)生影響,但在程序中適當?shù)牡胤绞褂每瞻追麑⒃黾映绦虻那逦院涂勺x性。 4.標點和特殊字符 主要有 ! # % & + - * / = < > | . , : ; ? ” ( ) 等等。由字符集中的字符可以構成C語言進一步的語法成分,如標識符、關鍵字、特殊的運算符等。 標識符在程序中使用的變量名、函數(shù)名、標號等統(tǒng)稱為標識符,用來標識各種程序成分。除庫函數(shù)的函數(shù)名由系統(tǒng)定義外,其余都由用戶自定義。C語言規(guī)定,標識符只能是由字母(AZ,az)、數(shù)字(09)、下劃線(_)組成的字

10、符串,并且其第一個字符必須是字母或下劃線。以下標識符是合法的:a , x , x3 , BOOK1 ,sum5 , num_1以下標識符是非法的:3s 以數(shù)字開頭s*T 出現(xiàn)非法字符*-3x 以減號開頭 bowy-1 出現(xiàn)非法字符-(減號)在使用標識符時還必須注意以下幾點:(1) 標準C不限制標識符的長度,但它受各種版本的C 語言編譯系統(tǒng)限制,同時也受到具體機器的限制。例如在某版本C 中規(guī)定標識符前八位有效,當兩個標識符前八位相同時,則被認為是同一個標識符。TURBO C中標識符最大長度為32個字符。(2) 在標識符中,大小寫是有區(qū)別的。例如BOOK和book 是兩個不同的標識符。習慣上符號常

11、量用大寫字母表示,而變量名等用小寫字母表示。(3) 標識符雖然可由程序員隨意定義,但不能與關鍵字同名,也不能與系統(tǒng)預先定義的標準標識符(如標準函數(shù))同名。標識符是用于標識某個量的符號,因此,命名應盡量有相應的意義,以便閱讀理解,做到“見名知義”。 關鍵字關鍵字是由語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。如類型說明符int,double等;語句特征if、switch、while等;預處理命令include、define等。關鍵字是構成C語言的語法基礎,用戶定義的標識符不應與關鍵字相同,也不能對關鍵字進行重新定義。常見的關鍵字參見附錄1。運算符語言中含有相當豐富的運算符。運算符與變量、函

12、數(shù)一起組成表達式,表示各種運算功能。運算符由一個或多個字符組成。根據(jù)參加運算對象的個數(shù),運算符可分為單目運算符、雙目運算符和三目運算符。C語言中的運算符都由特定的意義和格式,這些將在后續(xù)章節(jié)中詳述,并請讀者參考附錄3。 分隔符C語言中的分隔符有逗號和空格兩種,逗號主要用在類型說明和函數(shù)參數(shù)表中,分隔各個變量??崭穸嘤糜谡Z句各單詞之間,作間隔符。在關鍵字、標識符之間必須要有一個以上的空格符作間隔, 否則將會出現(xiàn)語法錯誤。例如把“int a;”,寫成“ inta;”,C編譯器會把“inta”當成一個標識符處理,其結果必然出錯。 注釋符注釋符是以“/*”開頭并以“*/”結尾的串。在“/*”和“*/”

13、之間的即為注釋。程序編譯時,不對注釋作任何處理。注釋可出現(xiàn)在程序中的任何位置。注釋用來向用戶提示或解釋程序的意義。在調試程序時對暫不使用的語句也可用注釋符括起來,使編譯跳過不作處理,待調試結束后再去掉注釋符。 1.3 程序結構為了說明語言源程序結構的特點,先看以下幾個程序。這幾個程序由簡到難,表現(xiàn)了語言源程序在組成結構上的特點。雖然有關內容還未介紹,但可從這些例子中了解到組成一個C源程序的基本部分和書寫格式?!纠?-1】main() printf("Hello world!n");main是主函數(shù)的函數(shù)名,表示這是一個主函數(shù)。每一個C源程序都必須有,并且只能有一個主函數(shù)(m

14、ain函數(shù)),這是整個C程序運行的入口點。printf是C語言中的輸出函數(shù)(詳見第4章),是一個由系統(tǒng)定義的標準函數(shù),可在程序中直接調用,它的功能是把要輸出的內容送到顯示器去顯示。雙引號內字符串原樣輸出,“n”是回車換行符?!纠?-2】/* 例1-2,求兩數(shù)的和。*/main()int a,b,sum; /* 這是定義變量*/a=12; b=34;sum=a+b; printf("sum is %dn",sum); 本程序的作用是求兩個整數(shù)a和b之和。/*/表示注釋部分,為便于理解,這兒用漢字表示注釋,當然也可以用英語或漢語拼音作注釋。注釋只是用來向用戶提示或解釋程序的意義

15、,對程序編譯不起任何作用。注釋可出現(xiàn)在程序中的任何位置。程序第三行是變量說明部分,說明a和b是整型(int)變量。第四行是兩個賦值語句,使a和b的值分別為12和34。第五行使sum的值為a+b。第六行中“%d”是輸入輸出的格式字符串,用來指定輸入輸出時的數(shù)據(jù)類型和格式(詳見第四章),“%d”表示十進制整數(shù)類型。在執(zhí)行輸出時此位置上代以一個十進制整數(shù)值。printf函數(shù)中括號內最右端sum是要輸出的變量,現(xiàn)在它的值為46(即12+34=46),因此輸出一行信息為:sum is 46【例1-3】/* 例1-3 此函數(shù)的功能是輸入兩個整數(shù),輸出其中的大數(shù)。*/#include “”int max(i

16、nt a,int b); /*函數(shù)說明*/main() /*主函數(shù)*/int x,y,z; /*變量說明*/printf("input two numbers:n");scanf("%d%d",&x,&y); /*輸入x,y值*/z=max(x,y); /*調用max函數(shù)*/ printf("maxmum=%d",z); /*輸出*/int max(int a,int b) /*定義max函數(shù)*/if(a>b) return a;else return b; 上面程序的功能是由用戶輸入兩個整數(shù),程序執(zhí)行后輸出其中

17、較大的數(shù)。本程序由兩個函數(shù)組成,主函數(shù)和max 函數(shù),兩者之間是并列關系。max 函數(shù)是一個用戶自定義函數(shù), 要先給出說明(程序第二行),它的功能是比較兩個數(shù),然后把較大的數(shù)返回。程序的執(zhí)行過程是,首先在屏幕上顯示提示字符串,請用戶輸入兩個數(shù),回車后由scanf函數(shù)語句接收這兩個數(shù)送入變量x,y中,然后調用max函數(shù),并把x,y 的值傳送給max函數(shù)的參數(shù)a,b。在max函數(shù)中比較a,b的大小,把大者返回給主函數(shù)的變量z,最后在屏幕上輸出z的值。有關函數(shù)、參數(shù)等的概念以后章節(jié)會詳細講述,這兒只想使讀者有個初步印象。程序第二行以#開頭的稱為預處理命令(詳見第9章)。預處理命令還有其它幾種,這里的

18、include 稱為文件包含命令,其意義是把尖括號<>或雙引號""內指定的文件包含到本源程序文件中來,成為本程序的一部分。被包含的文件通常是由系統(tǒng)提供的,其擴展名為.h。因此也稱為頭文件或首部文件。語言系統(tǒng)提供的頭文件中包括了各個標準庫函數(shù)的函數(shù)原型,因此,凡是在程序中調用一個庫函數(shù)時,都必須包含該函數(shù)原型所在的頭文件。在本例中,使用了兩個庫函數(shù):格式化輸入函數(shù)scanf和格式化輸出函數(shù)printf,其頭文件為stdio.h,因此在程序的主函數(shù)前用include命令包含了它。需要說明的是,C語言規(guī)定對scanf和printf這兩個函數(shù)可以省去對其頭文件的包含命令

19、。所以在本例中也可以刪去第二行的包含命令#include。同樣,在例1-1和例1-2中使用了printf函數(shù),也省略了包含命令。通過以上幾個例子,我們可以看到源程序的結構特點:1.一個語言源程序可以由一個或多個源文件組成,每個源文件以“.c”作為擴展名。2.每個源文件可由一個或多個函數(shù)組成。3.一個源程序不論由多少個文件組成,都有一個且只能有一個main函數(shù),即主函數(shù),整個程序的運行從主函數(shù)開始。4.源程序中可以有預處理命令(include 命令僅為其中的一種),預處理命令通常應放在源文件或源程序的最前面。5.每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數(shù)頭和花括號“”之后不能加分

20、號。6.標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。書寫程序時應遵循的規(guī)則從書寫清晰、便于閱讀、理解和維護的角度出發(fā),在書寫程序時 應遵循以下規(guī)則:1.一個說明或一個語句占一行。2.用 括起來的部分,通常表示了程序的某一層次結構。一般與該結構語句的第一個字母對齊,并單獨占一行。3.低一層次的語句或說明可比高一層次的語句或說明縮進若干格后書寫。以便看起來更加清晰,增加程序的可讀性。在編程時應力求遵循這些規(guī)則,以養(yǎng)成良好的編程風格。1.4 語言的編輯、編譯和運行程序在計算機上的實現(xiàn)與其它高級語言一樣,一般要經過編輯、編譯、連接、運行四個步驟,如圖1-1所

21、示。1. 編輯編輯就是建立、修改語言源程序并把它輸入計算機的過程。語言的源文件以文本文件的形式存儲在磁盤上,它的后綴名為.C。源文件的編輯可以用任何文字處理軟件完成,一般用編譯器本身集成的編輯器進行編輯。2. 編譯語言是以編譯方式實現(xiàn)的高級語言,C程序的實現(xiàn)必須經過編譯程序對源文件進行編譯,生成目標代碼文件,它的后綴名為.obj。編譯前一般先要進行預處理,譬如進行宏代換、包含其它文件等等。編譯過程主要進行詞法分析和語法分析,如果源文件中出現(xiàn)錯誤,編譯器一般會指出錯誤的種類和位置,此時要回到編輯步驟修改源文件,然后再進行編譯。3. 連接編譯形成的目標代碼還不能在計算機上直接運行,必須將其與庫文件進行連接處理,這個過程由連接程序自動進行,連接后生成可執(zhí)行文件,它的后綴名為.exe。如果連接出錯同樣需要返回到編輯步驟修改源程序,直至正確為止。4. 運行一個C源程序經過編譯、連接后生成了可執(zhí)行文件。要運行這個程序文件,可通過編譯系統(tǒng)下的運行功能,也可以在DOS系統(tǒng)的命令

溫馨提示

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

評論

0/150

提交評論