譚浩強(qiáng) C程序設(shè)計(jì)(第三版)第1章_第1頁
譚浩強(qiáng) C程序設(shè)計(jì)(第三版)第1章_第2頁
譚浩強(qiáng) C程序設(shè)計(jì)(第三版)第1章_第3頁
譚浩強(qiáng) C程序設(shè)計(jì)(第三版)第1章_第4頁
譚浩強(qiáng) C程序設(shè)計(jì)(第三版)第1章_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.C (第三版)譚浩強(qiáng) 著.目 錄 第1章C語言概述 第2章程序的靈魂算法 第3章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式 第4章最簡單的C程序設(shè)計(jì)順序程序設(shè)計(jì) 第5章選擇結(jié)構(gòu)程序設(shè)計(jì) 第6章循環(huán)控制. 第7章數(shù)組 第8章函數(shù) 第9章預(yù)處理命令 第10章指針 第11章結(jié)構(gòu)體與共用體 第12章位運(yùn)算 第13章文件 第14章常見錯(cuò)誤和程序調(diào)試.第1章 C語言概述 1.1 C語言出現(xiàn)的歷史背景 1.2 C語言的特點(diǎn) 1.3 簡單的C程序介紹 1.4 運(yùn)行C程序的步驟與方法.1.1 C語言出現(xiàn)的歷史背景 在C語言誕生以前,系統(tǒng)軟件主要是用匯編語言編寫的。由于匯編語言程序依賴于計(jì)算機(jī)硬件,其可讀性和可移植性都很差;一般

2、的高級(jí)語言又難以實(shí)現(xiàn)對(duì)計(jì)算機(jī)硬件的直接操作,于是人們希望有一種兼有匯編語言和一般高級(jí)語言特性的新語言。C語言在這種情況下應(yīng)運(yùn)而生。 C語言是貝爾實(shí)驗(yàn)室于70年代初研制出來的,后來又被多次改進(jìn),并出現(xiàn)了多種版本。80年代初,美國國家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI),根據(jù)C語言問世以來各種版本對(duì)C語言的發(fā)展和擴(kuò)充,制定了ANSI C標(biāo)準(zhǔn)。目前流行的C語言編譯系統(tǒng)大多是以ANSI C為基礎(chǔ)進(jìn)行開發(fā)的。. C語言是國際上廣泛流行的計(jì)算機(jī)高級(jí)語言。它適合作為系統(tǒng)描述語言,既可以用來編寫系統(tǒng)軟件,也可以來編寫應(yīng)用軟件。 C語言的前身是B語言1960 ALGOL60 離硬件遠(yuǎn),不宜編寫系統(tǒng)程序1963 CPL 離硬件

3、近,但規(guī)模較大,難以實(shí)現(xiàn)1967 BCPL 對(duì)CPL做了簡化1970 貝爾實(shí)驗(yàn)室以BCPL語言為基礎(chǔ),進(jìn)一步簡化,設(shè)計(jì) 出了很簡單的而且很接近硬件的B語言,并用B語言編寫了一個(gè)UNIX操作系統(tǒng),在PDPT上實(shí)現(xiàn),此時(shí)的B語言過于簡單,功能有限19721973 年間,貝爾實(shí)驗(yàn)室的D.M.Ritchie在B語言的基礎(chǔ)上設(shè)計(jì)出了C語言(BCPL) . C語言既保持了BCPL和B語言的優(yōu)點(diǎn)(精煉,接近硬件)又克服了它們的缺電(過于簡單,數(shù)據(jù)無類型等)。 最近的C語言只是為描述和實(shí)現(xiàn)UNIX操作系統(tǒng)提供一種工作語言而設(shè)計(jì)的,UNIX原用匯編寫的,后90%用C編寫。 后來,C語言多次作了改進(jìn),但主要還是在

4、貝爾實(shí)驗(yàn)室內(nèi)部使用。直到1975年UNIX第6版發(fā)布后,C語言的突出優(yōu)點(diǎn)才引起人們的普遍注意。 1997年出現(xiàn)了不依賴于具體機(jī)器的C語言便以文本可移植C語言編譯程序,使C語言移植到其他機(jī)器時(shí)所需做的工作大大簡化了,這也推動(dòng)了UNIX操作系統(tǒng)迅速的在各種機(jī)器上實(shí)現(xiàn)。 隨著UNIX的日益廣泛使用,C語言也迅速得到推廣。C語言和UNIX可以說是一對(duì)孿生兄弟,在發(fā)展過程中相輔相成。 . 1978年以后,C語言先后移植到大、中、小型計(jì)算機(jī)上,已獨(dú)立于UNIX和PDP了。C語言便很快風(fēng)靡全世界,成為世界上應(yīng)用最廣泛的幾種計(jì)算機(jī)語言之一。 1983年,美國國家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)根據(jù)C語言問世以來各種版本

5、對(duì)C語言的發(fā)展和補(bǔ)充,制定了新的標(biāo)準(zhǔn),成為ANSI C。ANSI C比后來的標(biāo)準(zhǔn)C有了很大的發(fā)展。 1987年,ANSI又公布了新標(biāo)準(zhǔn)- 87 ANSI C 1990年,國際標(biāo)準(zhǔn)組織ISO接受87 ANSIC為ISO的標(biāo)準(zhǔn)。 1994年,ISO修訂了C語言標(biāo)準(zhǔn)。 目前流行的C語言編譯系統(tǒng)大多是以ANSI C為基礎(chǔ)進(jìn)行開發(fā)的,但不同版本的C編譯系統(tǒng)所實(shí)現(xiàn)的語言功能及語法規(guī)則又略有差別,本書基本上已ANSI C為基礎(chǔ)。 .1.2 C語言的特點(diǎn) 一種語言之所以存在和發(fā)展, 并具有較強(qiáng)的生命力,總之有起不同于(或優(yōu)于)其他語言的特點(diǎn). C語言的主要特點(diǎn)如下:語言簡潔、緊湊,使用方便、靈活。C語言一共只

6、有32個(gè)關(guān)鍵字,9種控制語句,程序書寫形式自由,主要用小寫字母表示,壓縮了一切不必要的成分。比其他許多高級(jí)語言簡潔,源程序短,因此輸入工程時(shí)工作量少. 運(yùn)算符豐富。C的運(yùn)算符包含的范圍很廣泛,共有34種運(yùn)算符。C把括號(hào)、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理,從而使C的運(yùn)算類型極其豐富,表達(dá)式類型多樣化。靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其他高級(jí)語言中難以實(shí)現(xiàn)的運(yùn)算. 數(shù)據(jù)結(jié)構(gòu)豐富,具有現(xiàn)代化語言的各種數(shù)據(jù)結(jié)構(gòu)。C的數(shù)據(jù)類型有整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)(如鏈表、樹、棧等)的運(yùn)算。尤其是指針,只C存在于C語言和Pascal語言中。.具有

7、結(jié)構(gòu)化的控制語句(如ifelse語句、while語句、dowhile語句、switch語句、for語句)。用函數(shù)作為程序的模塊單位,便于實(shí)現(xiàn)程序的模塊化。C是良好的結(jié)構(gòu)化語言, 符合現(xiàn)代編程風(fēng)格的要求。生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。C語言一般只比匯編程序生成的目標(biāo)代碼效率低10%-20%。.語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。一般的高級(jí)語言語言語法檢查比較嚴(yán)格,能檢查出幾乎所有的語法錯(cuò)誤,而C語言允許程序員有較大的自由度,因此放寬了語法檢查。程序員應(yīng)當(dāng)仔細(xì)檢查程序,保證其正確,而不要過分依賴C語言編譯程序去查錯(cuò)。 “限制”與“靈活”是一對(duì)矛盾。一個(gè)不熟悉的人員,編一個(gè)正確的C語言程序可能

8、比編一個(gè)其他高級(jí)語言程序難一些。也就是對(duì)C語言的人,要求對(duì)程序設(shè)計(jì)更熟練一些。例如對(duì)數(shù)組下標(biāo)越界不做檢查,由程序編寫者自己保證程序的正確。對(duì)變量的類型使用比較靈活,例如整型數(shù)據(jù)與字符型數(shù)據(jù)可以通用。. C語言允許直接訪問物理地址,能進(jìn)行位(bit)操作,能實(shí)現(xiàn)匯編語言的大部分功能,可以直接對(duì)硬件進(jìn)行操作。因此C語言既有高級(jí)語言的功能,又具有低級(jí)語言的許多功能,可用來編寫系統(tǒng)軟件。C語言的這種雙重性,有人把它成為“高級(jí)語言中的低級(jí)語言”或“中級(jí)語言 ”。 用C語言寫的程序可移植性好(與匯編語言比)?;旧喜蛔餍薷木湍苡糜诟鞣N型號(hào)的計(jì)算機(jī)和各種操作系統(tǒng)。.從應(yīng)用方面來看:語言較難學(xué)。初學(xué)者:BAS

9、IC FORTRAN科學(xué)計(jì)算:FORTRAN數(shù)據(jù)處理:COBOL(銀行系統(tǒng))系統(tǒng)軟件:語言有些大型軟件:C語言 教學(xué)角度:PASCAL(單一結(jié)構(gòu)化語言)但大多數(shù)高校已用C語言取代了PASCAL語言。. 目前C語言成了學(xué)習(xí)和使用人數(shù)最多的一種計(jì)算機(jī)語言。熟練掌握C語言成為計(jì)算機(jī)開發(fā)人員的一項(xiàng)基本功。 近年來,面向?qū)ο蟮腃+語言在我國逐漸得到推廣。但是不應(yīng)認(rèn)為:C過時(shí)了,應(yīng)學(xué)C+,不學(xué)C C+是為解決編寫大型軟件的問題而產(chǎn)生的,學(xué)起來比C語言困難得多。將來并不是所有的人都去編寫大型軟件。因此,在發(fā)達(dá)國家的大學(xué)中,C語言仍是一門重要的課程,是大學(xué)生的一種基本的選擇。掌握了C,日后再學(xué)C+是不會(huì)太困難

10、的。 .1.3 簡單的C程序介紹 下面介紹幾個(gè)簡單的C語言程序,然后從中分析C語言程序的特點(diǎn)?!纠?1.1】輸出一行信息。 本程序的作用是輸出以下一行信息: This is a C program.#include void main ( ) printf (This is a C program.n); .【例 1.2 】求兩數(shù)之和。 本程序的作用是求兩個(gè)整數(shù)a和b之和sum。程序運(yùn)行時(shí)輸出以下信息: sum is 579#include void main ( ) /*求兩數(shù)之和*/ int a,b,sum; /*這是聲明部分,定義變量a,b,sum為整型*/ a=123; b=456;

11、/* 以下3行為C語句 */ sum=a+b; printf (sum is %dn, sum);.【例1.3】求2個(gè)數(shù)中較大者。 #include void main ( ) /* 主函數(shù)*/ int max(int x,int y); /*對(duì)被調(diào)用函數(shù)max的聲明*/ int a, b, c; /*聲明部分,定義變量*/ scanf (%d,%d ,&a,&b); /*輸入變量a和b的值*/ c=max (a,b); /*調(diào)用max函數(shù),將得到的值賦給c*/ printf (max=%dn,c); /*輸出c的值*/int max(int x,int y) /* 定義max

12、函數(shù),函數(shù)值為整型*/ int z; /*max函數(shù)中的聲明部分*/ if (xy) z=x; else z=y; return (z); /*將z的值返回,通過max帶回調(diào)用函數(shù)的位置*/.例1.3中程序包括兩個(gè)函數(shù):主函數(shù)main和被調(diào)用的函數(shù)max。 max函數(shù)的作用是將x和y中較大者的值賦給變量z。return語句將z的值返回給主調(diào)函數(shù)main。返回值是通過函數(shù)名max帶回到main函數(shù)的調(diào)用處。 程序第4行是對(duì)被調(diào)用函數(shù)max的聲明。 main函數(shù)中的scanf是“輸入函數(shù)”的名字。程序中scanf函數(shù)的作用是輸入a和b的值。&a和&b中的“&”的含義是“取地

13、址”,此scanf函數(shù)的作用是將兩個(gè)數(shù)值分別輸入到變量a和b的地址所標(biāo)志的單元中,也就是輸入給變量a和b。 程序第7行為調(diào)用max函數(shù),在調(diào)用時(shí)將實(shí)際參數(shù)a和b的值分別傳送給max函數(shù)中的形式參數(shù)x和y。經(jīng)過執(zhí)行max函數(shù)得到一個(gè)返回值(即max函數(shù)中變量z的值),把這個(gè)值賦給變量c。然后輸出c的值。printf函數(shù)中雙引號(hào)內(nèi)的“max=%dn”,在輸出時(shí),將 “max =”原樣輸出,“%d”將由c的值取代之,“n”執(zhí)行換行。.通過以上幾個(gè)例子,可以看到:C程序是由函數(shù)構(gòu)成的。一個(gè)C源程序至少且僅包含一個(gè)main函數(shù),也可以包含一個(gè)main函數(shù)和若干個(gè)其他函數(shù)。因此,函數(shù)是C程序的基本單位。

14、被調(diào)用的函數(shù)可以使系統(tǒng)提供的庫函數(shù),也可以是用戶根據(jù)需要自己定義的函數(shù)。編寫C程序就是編寫一個(gè)個(gè)函數(shù),ANSIC提供一百多個(gè)庫函數(shù),Tuboc提供三百多個(gè)庫函數(shù)。一個(gè)函數(shù)由兩部分組成: 1)函數(shù)的首部,即函數(shù)的第一行。包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形參)名、參數(shù)類型。 例如,例1.3中的max函數(shù)的首部為int max (int x , int y ) 函數(shù)類型 函數(shù)名 函數(shù)參數(shù)類型 函數(shù)參數(shù)名 函數(shù)參數(shù)類型 函數(shù)參數(shù)名 2)函數(shù)體,即函數(shù)首部下面的大括弧內(nèi)的部分。如果一個(gè)函數(shù)內(nèi)有多個(gè)大括弧,則最外層的一對(duì) 為函數(shù)體的范圍。 函數(shù)體一般包括: 聲明部分;執(zhí)行部分。. 一個(gè)C程序總是

15、從main函數(shù)開始執(zhí)行的,而不論main函數(shù)在整個(gè)程序中的位置如何(main函數(shù)可以放在程序最前頭,也可以放在程序最后,或在一些函數(shù)之前,在另一些函數(shù)之后)。 C程序書寫格式自由,一行內(nèi)可以寫幾個(gè)語句, 一個(gè)語句可以分寫在多行上。沒有行號(hào)。 每個(gè)語句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào)。分號(hào)是C語句的必要組成部分。 C語言本身沒有輸入輸出語句。輸入和輸出的操作是由庫函數(shù)scanf和printf等函數(shù)來完成的。 可以用/*/對(duì)C程序中的任何部分作注釋。一個(gè)好的、有使用價(jià)值的源程序都應(yīng)當(dāng)加上必要的注釋,以增加程序的可讀性。.1.4 運(yùn)行C程序的步驟與方法 在編好一個(gè)C源程序后,如何上機(jī)運(yùn)行呢? 在紙上寫

16、好一個(gè)程序后,要經(jīng)過以下幾個(gè)步驟:上機(jī)輸入與編輯源程序?qū)υ闯绦蜻M(jìn)行編譯與庫函數(shù)連接運(yùn)行目標(biāo)程序這樣幾個(gè)步驟。以上過程如圖1.1所示。其中實(shí)線表示操作流程,虛線表示文件的輸入輸出。圖1.1.一、運(yùn)行C程序的步驟:上機(jī)輸入程序?qū)υ闯绦蜃儺惻c庫函數(shù)鏈接運(yùn)行目標(biāo)程序。源程序文件為.C,編譯后得到目標(biāo)文件.obj, 與庫函數(shù)連接后,得到可執(zhí)行的目標(biāo)程序?yàn)?exe 最后運(yùn)行.exe。二、上機(jī)運(yùn)行程序的方法:機(jī)房已經(jīng)安裝Turbo C環(huán)境以下按此版本講授V C+等有導(dǎo)論講。、進(jìn)入Turbo C環(huán)境()點(diǎn)Windows桌面左下角的“開始”按鈕()鼠標(biāo)移到“程序”按鈕,在右邊菜單中找c:命令提示符,單擊或者移到運(yùn)行單擊,在窗口中輸入cmd,按確定。()此時(shí)在DOS狀態(tài)下。輸入DOS命令CD TC 按

溫馨提示

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

評(píng)論

0/150

提交評(píng)論