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

付費下載

下載本文檔

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

文檔簡介

1、C語言程序設計陳易明E-mail: 參考書參考書KR “C PROGRAMMING LANGUAGE ”課時安排課時安排理論課理論課 :32學時學時上機上機訓練:訓練:16學時學時考核成績考核成績平時考勤平時考勤10%,上機報告,上機報告20%,期末考試,期末考試70%參考書與課時安排課程要求課后請復習課后請復習保持課堂安靜,積極回答問題保持課堂安靜,積極回答問題認真、獨立、按時完成并提交作業(yè)認真、獨立、按時完成并提交作業(yè)重視上機實踐,有效利用上機時間重視上機實踐,有效利用上機時間第一章 C語言概述nC語言發(fā)展歷史nC語言基本特點nC語言程序結(jié)構(gòu)n編譯和運行程序n1.1 C語言發(fā)展歷史程序設計

2、語言的發(fā)展機器語言匯編語言高級語言面向過程(C)面向?qū)ο?C+)CPU指令系統(tǒng),由0、1序列構(gòu)成的指令碼組成如:10000000 加 10010000 減用助記符號描述的指令系統(tǒng)如 ADD A, B面向機器的語言程序設計是數(shù)據(jù)被加工的過程程序設計關(guān)鍵是定義類,并由類派生對象馮.諾依曼結(jié)構(gòu):計算機運算器控制器存儲器主機:I/O設備:鍵盤、顯示器等中央處理器CPU 高級語言高級語言n面向開發(fā)者的語言面向開發(fā)者的語言n以接近人類語言的形式來表現(xiàn):以接近人類語言的形式來表現(xiàn):n具有具有標識符標識符,關(guān)鍵字關(guān)鍵字,數(shù)據(jù)類型數(shù)據(jù)類型等,按一等,按一定的規(guī)則組成程序代碼,便于開發(fā)和維護,定的規(guī)則組成程序代碼

3、,便于開發(fā)和維護,可讀和開發(fā)性大大增強。可讀和開發(fā)性大大增強。C語言的發(fā)展史n1972年年 美國貝爾實驗室的美國貝爾實驗室的Dennis.M.Ritchie 設計出設計出C語言,并語言,并用其將用其將UNIX系統(tǒng)全部改寫并實現(xiàn)。系統(tǒng)全部改寫并實現(xiàn)。nC語言的設計目的是為描述和實現(xiàn)語言的設計目的是為描述和實現(xiàn)UNIX操作系統(tǒng)提供一種工具語言操作系統(tǒng)提供一種工具語言n由于語言的強大功能和良好的可移由于語言的強大功能和良好的可移植性,植性,C語言先后被移植到各種大、語言先后被移植到各種大、中、小和微型計算機上,并得到了廣中、小和微型計算機上,并得到了廣泛的使用,成為當代最優(yōu)秀的程序設泛的使用,成為當

4、代最優(yōu)秀的程序設計語言之一。計語言之一。 C語言的前生n1960年出現(xiàn)的年出現(xiàn)的Algol 60,它是一種面向問題的高級語言,它是一種面向問題的高級語言,離硬件比較遠,不適合用來編寫系統(tǒng)程序。離硬件比較遠,不適合用來編寫系統(tǒng)程序。n1963年英國劍橋大學推出了年英國劍橋大學推出了“組合編程語言組合編程語言”(Combined Programming Language,CPL),它在),它在Algol 60的基礎上更接近于硬件,但規(guī)模較大,難以實現(xiàn)。的基礎上更接近于硬件,但規(guī)模較大,難以實現(xiàn)。n因此,因此,1967年劍橋大學的年劍橋大學的Matin Richards對對CPL進行了進行了簡化,提

5、出了簡化,提出了BCPL(Basic Combined Programming Language)語言。)語言。 u一切從一個叫一切從一個叫“Space Travel”的電的電子游戲開始子游戲開始C語言的創(chuàng)世紀語言的創(chuàng)世紀n1963年,美國麻省理工學院年,美國麻省理工學院MIT、貝爾實驗室和通用電器公司決定聯(lián)合、貝爾實驗室和通用電器公司決定聯(lián)合開發(fā)一個操作系統(tǒng)開發(fā)一個操作系統(tǒng)MULTICS,其設計目標是,其設計目標是“公用計算服務系統(tǒng)公用計算服務系統(tǒng)”。n那時,計算機還很昂貴,主要是安裝在一些政府部門、企業(yè)和科研機那時,計算機還很昂貴,主要是安裝在一些政府部門、企業(yè)和科研機構(gòu),一般的家庭買不起

6、,但有時人們又想使用計算機來完成一些計算構(gòu),一般的家庭買不起,但有時人們又想使用計算機來完成一些計算任務。所以該項目的出發(fā)點是想提供一種計算服務,任務。所以該項目的出發(fā)點是想提供一種計算服務,n在城市里布置一臺計算機主機,然后用戶在自己的家里,使用終端并在城市里布置一臺計算機主機,然后用戶在自己的家里,使用終端并且通過電話線來接入這臺主機。終端很便宜,只有顯示器、鍵盤和通且通過電話線來接入這臺主機。終端很便宜,只有顯示器、鍵盤和通信模塊,每個家庭都買得起,他們使用終端來連接計算機,然后像使信模塊,每個家庭都買得起,他們使用終端來連接計算機,然后像使用水、電、煤氣等生活資源那樣來使用這臺計算機的

7、計算資源,并繳用水、電、煤氣等生活資源那樣來使用這臺計算機的計算資源,并繳納相應的費用。納相應的費用。n這樣一來,在主機上必須運行一個操作系統(tǒng),來對整個系統(tǒng)的資源進這樣一來,在主機上必須運行一個操作系統(tǒng),來對整個系統(tǒng)的資源進行管理。行管理。 nMULTICS系統(tǒng)非常龐大、復雜,它的研制難度遠遠超出系統(tǒng)非常龐大、復雜,它的研制難度遠遠超出了人們的預料,因此,貝爾實驗室和通用電器公司先后退了人們的預料,因此,貝爾實驗室和通用電器公司先后退出了這個項目。出了這個項目。n1969年,當貝爾實驗室退出該項目后,它的一個研究員年,當貝爾實驗室退出該項目后,它的一個研究員Ken Thompson在在MULT

8、ICS操作系統(tǒng)上編寫了一個名為操作系統(tǒng)上編寫了一個名為“太空旅行太空旅行”(space travel)的游戲,模擬了一個飛行)的游戲,模擬了一個飛行員駕駛著一艘宇宙飛船在太陽系中遨游,并在各個星體上員駕駛著一艘宇宙飛船在太陽系中遨游,并在各個星體上著陸。著陸。 n后來,由于無法繼續(xù)訪問后來,由于無法繼續(xù)訪問MULTICS操作系統(tǒng),他就在貝操作系統(tǒng),他就在貝爾實驗室里找了一臺沒有人使用的爾實驗室里找了一臺沒有人使用的PDP-7計算機,想把游計算機,想把游戲程序移植到這臺機器上。戲程序移植到這臺機器上。n但是,當時計算機硬件所能執(zhí)行的都是用機器語言來描述但是,當時計算機硬件所能執(zhí)行的都是用機器語言

9、來描述的指令,而對于不同類型的計算機來說,它們的機器語言的指令,而對于不同類型的計算機來說,它們的機器語言是不一樣的,所以在是不一樣的,所以在MULTICS系統(tǒng)上運行的程序,不能系統(tǒng)上運行的程序,不能直接把它搬到直接把它搬到PDP-7這種類型的計算機上去運行。這種類型的計算機上去運行。 n因此,因此,Thompson就和貝爾實驗室的另外一名研究員就和貝爾實驗室的另外一名研究員Dennis Ritchie,他們兩個人一起,在另外一臺,他們兩個人一起,在另外一臺GE-635計算機上,利用它的操作系統(tǒng),即計算機上,利用它的操作系統(tǒng),即GECOS所提供的一個所提供的一個交叉匯編器,把空間旅行游戲用交叉

10、匯編器,把空間旅行游戲用PDP-7的匯編語言重新編的匯編語言重新編寫了一遍,并且生成寫了一遍,并且生成PDP-7的機器語言指令,然后用穿孔的機器語言指令,然后用穿孔紙帶的形式把它轉(zhuǎn)移到了紙帶的形式把它轉(zhuǎn)移到了PDP-7上面,這樣,就可以玩了。上面,這樣,就可以玩了。 nQuestion:為什么不直接在為什么不直接在PDP-7這臺計算機上編程呢,而需要使用這臺計算機上編程呢,而需要使用第三臺機器第三臺機器GE635呢?呢?n原因很簡單,這臺原因很簡單,這臺PDP-7計算機之所以沒人來用,是因為它是一臺計算機之所以沒人來用,是因為它是一臺光光禿禿禿禿的計算機,只有硬件而沒有任何軟件,連匯編程序都沒

11、有,這樣,的計算機,只有硬件而沒有任何軟件,連匯編程序都沒有,這樣,人們就沒有辦法在上面編程,如果實在想編程的話,只能直接使用機人們就沒有辦法在上面編程,如果實在想編程的話,只能直接使用機器語言。但機器語言都是一些器語言。但機器語言都是一些0、1字符串,太難懂了,所以沒有人愿字符串,太難懂了,所以沒有人愿意使用它。意使用它。n Question: 為什么為什么PDP-7計算機只是硬件沒有軟件?計算機只是硬件沒有軟件?n當時,計算機水平還很落后,很多研究小組申請項目研制計算機,僅當時,計算機水平還很落后,很多研究小組申請項目研制計算機,僅僅是針對硬件架構(gòu),當計算機做好后,測試性能后項目組的任務就

12、完僅是針對硬件架構(gòu),當計算機做好后,測試性能后項目組的任務就完成了,然后再研制更新的計算機。成了,然后再研制更新的計算機。n如果有需要,則用機器語言編寫程序,然后在紙帶上打上孔,讓計算如果有需要,則用機器語言編寫程序,然后在紙帶上打上孔,讓計算機讀入(有孔、無孔,分別代表機讀入(有孔、無孔,分別代表1、0) 。Question: 為什么不直接在為什么不直接在GE635上玩游戲呢?上玩游戲呢?答案:一個字,答案:一個字,“貴貴”,兩個字,兩個字“很貴很貴”,三個字,三個字“非常貴非常貴”玩一小時游戲花費玩一小時游戲花費75美元(當時價值美元(當時價值25桶石油桶石油,現(xiàn)在按現(xiàn)在按70美元美元/桶

13、石油算,約桶石油算,約5250美元)。美元)。n后來,后來,Thompson覺得這臺覺得這臺PDP-7計算機空在那里有點可計算機空在那里有點可惜,所以就和惜,所以就和Ritchie等人開始為它編寫一個新的操作系等人開始為它編寫一個新的操作系統(tǒng),也就是說,在硬件的基礎上,再給它增加一些軟,這統(tǒng),也就是說,在硬件的基礎上,再給它增加一些軟,這樣,這臺機器就能夠用起來,就能做更多的事情。樣,這臺機器就能夠用起來,就能做更多的事情。n他們先是寫好了這個操作系統(tǒng)的文件系統(tǒng)和一組基本的軟他們先是寫好了這個操作系統(tǒng)的文件系統(tǒng)和一組基本的軟件工具,然后再編寫了一個件工具,然后再編寫了一個PDP-7匯編語言的編

14、譯器。有匯編語言的編譯器。有了這些軟件工具后,就能直接在了這些軟件工具后,就能直接在PDP-7上編程了。上編程了。n到了到了1970年,這個操作系統(tǒng)的基本元素都已經(jīng)完成了,年,這個操作系統(tǒng)的基本元素都已經(jīng)完成了,他們給系統(tǒng)起了一個名字,也就是他們給系統(tǒng)起了一個名字,也就是UNIX。 n到了到了1970年的夏季,研究小組得到了一臺新的、功能更強大的機器年的夏季,研究小組得到了一臺新的、功能更強大的機器PDP-11,因此需要把,因此需要把UNIX系統(tǒng)從系統(tǒng)從PDP-7移植到移植到PDP-11上面去上面去n這項工作非常的煩瑣,因為整個系統(tǒng)都是用匯編語言來編寫的,需要這項工作非常的煩瑣,因為整個系統(tǒng)都

15、是用匯編語言來編寫的,需要把每一條把每一條PDP-7匯編語言指令都轉(zhuǎn)換為相應的匯編語言指令都轉(zhuǎn)換為相應的PDP-11匯編語言指令,匯編語言指令,工作量非常大。工作量非常大。n更重要的是,這種移植工作是一次性的,如果以后又來了一臺新的機更重要的是,這種移植工作是一次性的,如果以后又來了一臺新的機器,那么整個移植工作又得重新來過,所以這是一個很大的問題。器,那么整個移植工作又得重新來過,所以這是一個很大的問題。n為解決這個問題呢?研究小組就開始考慮用某種高級語言來重寫整個為解決這個問題呢?研究小組就開始考慮用某種高級語言來重寫整個系統(tǒng),以提高系統(tǒng)的可移植性和可懂性。系統(tǒng),以提高系統(tǒng)的可移植性和可懂

16、性。 nThompson為了提高為了提高UNIX操作系統(tǒng)的可移植性,想要用某種操作系統(tǒng)的可移植性,想要用某種高級語言來重寫整個系統(tǒng)。但是采用哪一種高級語言來做這件高級語言來重寫整個系統(tǒng)。但是采用哪一種高級語言來做這件事呢?他的想法是自己去設計一種高級語言。事呢?他的想法是自己去設計一種高級語言。n他以他以BCPL語言為基礎,又作了進一步的簡化,設計出很簡單語言為基礎,又作了進一步的簡化,設計出很簡單而且很接近硬件的而且很接近硬件的B語言,這個名稱取自于語言,這個名稱取自于BCPL的第一個字母。的第一個字母。n但是但是B語言過于簡單,是一種沒有數(shù)據(jù)類型的語言,功能很有語言過于簡單,是一種沒有數(shù)據(jù)

17、類型的語言,功能很有限。因此,當他試圖用限。因此,當他試圖用B語言來重寫語言來重寫UNIX操作系統(tǒng)時,效果并操作系統(tǒng)時,效果并不太好。不太好。n到了到了1972年,年,Ritchie在在B語言的基礎上又設計出了語言的基礎上又設計出了C語言,語言,這個名稱取自于這個名稱取自于BCPL的第二個字母。的第二個字母。nC語言既保持了語言既保持了BCPL和和B語言的精煉、接近硬件等優(yōu)點,語言的精煉、接近硬件等優(yōu)點,又克服了它們過于簡單、數(shù)據(jù)無類型等缺點,所以很快就又克服了它們過于簡單、數(shù)據(jù)無類型等缺點,所以很快就成為研究小組內(nèi)部的首選編程語言。成為研究小組內(nèi)部的首選編程語言。 n后來,后來,Ritchi

18、e和和Thompson兩個人合作,把整個兩個人合作,把整個UNIX系系統(tǒng)用統(tǒng)用C語言重新寫了一遍,這樣,以后再需要移植的時候,語言重新寫了一遍,這樣,以后再需要移植的時候,就方便多了,大部分的系統(tǒng)代碼都無需改動。就方便多了,大部分的系統(tǒng)代碼都無需改動。n1977年,出現(xiàn)了不依賴于具體機器的年,出現(xiàn)了不依賴于具體機器的C語言編譯器,使得語言編譯器,使得把一個把一個C程序從一臺機器移植到另一臺機器上所需要的工程序從一臺機器移植到另一臺機器上所需要的工作大大地簡化了,這就推動了作大大地簡化了,這就推動了UNIX操作系統(tǒng)迅速地在各操作系統(tǒng)迅速地在各種類型的機器上得以實現(xiàn)。種類型的機器上得以實現(xiàn)。n反過

19、來,隨著反過來,隨著UNIX系統(tǒng)日益廣泛的使用,系統(tǒng)日益廣泛的使用,C語言也得到了語言也得到了迅速地推廣。所以說,迅速地推廣。所以說,C語言和語言和UNIX系統(tǒng)關(guān)系非常密切,系統(tǒng)關(guān)系非常密切,在發(fā)展過程中它們是相輔相成的。在發(fā)展過程中它們是相輔相成的。 C語言的發(fā)展史告訴我們:語言的發(fā)展史告訴我們:1)游戲是推動計算機軟件技術(shù)發(fā)展)游戲是推動計算機軟件技術(shù)發(fā)展的重大推動力!的重大推動力!2)玩游戲是很耗錢或費時間的。)玩游戲是很耗錢或費時間的。3)適量游戲有助于身心健康,并能)適量游戲有助于身心健康,并能極大促進電腦水平的提高。極大促進電腦水平的提高。Ritchie和Thompson在開發(fā)UN

20、IX很貴的游戲機,絕對的很貴的游戲機,絕對的“發(fā)燒級發(fā)燒級”接受美國國家技術(shù)勛章接受美國國家技術(shù)勛章游戲玩家游戲玩家的終極夢的終極夢想想傳說中的傳說中的神器,聲神器,聲望望100,000Thompson(左)和(左)和Ritchie(中)于(中)于1999年接受當時美國年接受當時美國總統(tǒng)克林頓授予的國家技術(shù)勛章總統(tǒng)克林頓授予的國家技術(shù)勛章n一九七八年由美國電話電報公司一九七八年由美國電話電報公司(AT&T)貝爾實驗室正式貝爾實驗室正式發(fā)表了語言。發(fā)表了語言。nB.W.Kernighan和和D.M.Ritchit合著了著名的合著了著名的“THE C PROGRAMMING LANGUAG

21、E”一書。通常簡稱為一書。通常簡稱為K&R,也有人稱之為,也有人稱之為K&R標準。標準。n但是,在但是,在K&R中并沒有定義一個完整的標準中并沒有定義一個完整的標準C 語言,語言,后來由美國國家標準協(xié)會(后來由美國國家標準協(xié)會(American National Standards Institute)在此基礎上制定了一個)在此基礎上制定了一個C 語言標準,語言標準,于一九八三年發(fā)表。通常稱之為于一九八三年發(fā)表。通常稱之為ANSI C。C 語言標準語言標準語言版本 n 目前最流行的語言有以下幾種:目前最流行的語言有以下幾種:n Microsoft C 或稱或稱 MS C

22、n Borland Turbo C 或稱或稱 Turbo Cn AT&T Cn這些語言版本都實現(xiàn)了這些語言版本都實現(xiàn)了ANSI C標準,并在此標準,并在此基礎上各自作了一些擴充,使之更加方便、完基礎上各自作了一些擴充,使之更加方便、完美。美。 n我們學習的是我們學習的是Turbo CC語言的基本特點:n1、 C語言被稱為語言被稱為“高級語言中的低級語言高級語言中的低級語言”,這樣說不是指它的,這樣說不是指它的功能差或難于使用,而是指它功能差或難于使用,而是指它 具有許多匯編語言等低級語言才具具有許多匯編語言等低級語言才具備的功能,備的功能,n C語言允許直接訪問物理地址,能進行位操作,

23、能實現(xiàn)匯編語言的語言允許直接訪問物理地址,能進行位操作,能實現(xiàn)匯編語言的大部分功能,可以直接對硬件進行操作。大部分功能,可以直接對硬件進行操作。n 所以所以C語言在系統(tǒng)設計十分有效,過去系統(tǒng)軟件只能用匯編語言編語言在系統(tǒng)設計十分有效,過去系統(tǒng)軟件只能用匯編語言編寫,使用寫,使用C語言可以減輕程序的負擔,提高效率,寫出來程序也更語言可以減輕程序的負擔,提高效率,寫出來程序也更具有可移植性。具有可移植性。計算機的層次C語言的基本特點:n2、C語言簡潔、緊湊,使用方便、靈活。語言簡潔、緊湊,使用方便、靈活。 ANISC語言只有語言只有32個關(guān)健字,個關(guān)健字,9種控制語句。我們學習的種控制語句。我們學

24、習的TC擴充了擴充了11個關(guān)鍵字,一共也才個關(guān)鍵字,一共也才43個關(guān)鍵字。個關(guān)鍵字。C語言的基本特點:n3、運算符豐富。共有、運算符豐富。共有34種。種。C把括號、賦值、逗號等都把括號、賦值、逗號等都作為運算符處理。從而使作為運算符處理。從而使C的運算類型極為豐富,可以實的運算類型極為豐富,可以實現(xiàn)其他高級語言難以實現(xiàn)的運算。現(xiàn)其他高級語言難以實現(xiàn)的運算。n4、具有結(jié)構(gòu)化的控制語句。、具有結(jié)構(gòu)化的控制語句。n5、語法限制不太嚴格,程序設計自由度大。、語法限制不太嚴格,程序設計自由度大。n6、生成目標代碼質(zhì)量高,程序執(zhí)行效率高。、生成目標代碼質(zhì)量高,程序執(zhí)行效率高。 C語言的基本特點:語言的基本

25、特點:n7、與匯編語言相比,用、與匯編語言相比,用C語言寫的程序可移植性好。語言寫的程序可移植性好。 n8、C語言是程序員的語言,是為專業(yè)程序員設計的語言,它實現(xiàn)了語言是程序員的語言,是為專業(yè)程序員設計的語言,它實現(xiàn)了程序員的期望:很少限制,程序設計自由度大,方便的控制結(jié)構(gòu),獨程序員的期望:很少限制,程序設計自由度大,方便的控制結(jié)構(gòu),獨立的函數(shù),緊湊的關(guān)鍵字集合和較高的執(zhí)行效率。立的函數(shù),緊湊的關(guān)鍵字集合和較高的執(zhí)行效率。n缺點:缺點:n 語法限制不太嚴,編譯器不進行太多的錯誤檢查,程序員在編程如語法限制不太嚴,編譯器不進行太多的錯誤檢查,程序員在編程如果不注意的話,很容易出現(xiàn)編譯通過但程序出

26、錯的現(xiàn)象。果不注意的話,很容易出現(xiàn)編譯通過但程序出錯的現(xiàn)象。第一個C語言程序n學習任一計算機高級語言的最佳途徑都是編程,對于任一學習任一計算機高級語言的最佳途徑都是編程,對于任一計算機語言,編寫的第一個程序都是輸出一個字符串。計算機語言,編寫的第一個程序都是輸出一個字符串。n出于對出于對KR的敬意,一般講解第一個程序進都是選擇的敬意,一般講解第一個程序進都是選擇KR的的“C PROGRAMMING LANGUAGE ”一書中的第一一書中的第一個例子打印個例子打印“Hello World” 來進行講解。來進行講解。第一個C語言程序n如何利用如何利用C語言在屏幕上顯示出如下單詞:語言在屏幕上顯示出

27、如下單詞:”Hello World!”?實現(xiàn)過程:實現(xiàn)過程:1、編寫源程序;、編寫源程序;2、編譯,將源程序編譯成目標文件、編譯,將源程序編譯成目標文件: *.obj;3、將目標文件鏈接成可執(zhí)行文件:、將目標文件鏈接成可執(zhí)行文件:*.exe; 4、運行可執(zhí)行文件。、運行可執(zhí)行文件。第一個C語言程序/* 在屏幕上顯示在屏幕上顯示Hello World! */#include “stdio.h” main() printf ( “hello World!n );/* 功能注釋:在屏幕上顯示功能注釋:在屏幕上顯示Hello World! */#include stdio.h“ /*編譯預處理編譯預處

28、理, 告訴編譯程序在本程告訴編譯程序在本程 序包含標準輸入輸出庫函數(shù)序包含標準輸入輸出庫函數(shù)*/main()/主函數(shù),無參數(shù)主函數(shù),無參數(shù) /函數(shù)頭函數(shù)頭 printf(“Hello World! n”); /*調(diào)用庫函數(shù)調(diào)用庫函數(shù)printf, 將將Hello world顯示顯示 到屏幕上,到屏幕上,n為換行符為換行符*/ /函數(shù)尾函數(shù)尾語句結(jié)束符語句結(jié)束符編譯預處理編譯預處理n 在在C源程序中加入一些源程序中加入一些“預處理命令預處理命令” 可以改進可以改進程序設計環(huán)境,提高編程效率。程序設計環(huán)境,提高編程效率。n 預處理命令不是預處理命令不是C語言本身的組成部分,不能直語言本身的組成部分

29、,不能直接對其進行編譯,必須在編譯之前,先對這些特接對其進行編譯,必須在編譯之前,先對這些特殊的命令進行相應的處理。殊的命令進行相應的處理。編譯預處理編譯預處理C C提供的預處理功能主要有三種:提供的預處理功能主要有三種:1. 文件包含文件包含2. 宏定義宏定義3. 條件編譯條件編譯所有的預處理命令,都是以所有的預處理命令,都是以#開頭的開頭的 1. 文件包含文件包含 #include “文件名文件名 “ 文件名指的是外部的庫函數(shù)名或源程序名。文件名指的是外部的庫函數(shù)名或源程序名。 庫函數(shù)是由系統(tǒng)建立的具有一定功能的函數(shù)的庫函數(shù)是由系統(tǒng)建立的具有一定功能的函數(shù)的集合。庫函數(shù)中存放同類函數(shù)的名稱

30、和對應的目集合。庫函數(shù)中存放同類函數(shù)的名稱和對應的目標代碼。標代碼。 只要用了只要用了 #include “庫函數(shù)名庫函數(shù)名“ , 就可以調(diào)就可以調(diào)用庫函數(shù)中的函數(shù)。用庫函數(shù)中的函數(shù)。編譯預處理編譯預處理 #include stdio.h“n可調(diào)用各種可調(diào)用各種輸入輸出輸入輸出函數(shù):函數(shù):n包括包括: printf ,scanf , getchar,putchar, fopen,fclose,fprintf,fsacnf, fseek,fread,fwrite 等。等。 C語言程序的基本格式n1、每一個、每一個C程序,都由程序,都由函數(shù)函數(shù)和和變量變量組成。函數(shù)包含若干組成。函數(shù)包含若干用于實

31、現(xiàn)指定操作的語句,變量在計算過程中存儲有關(guān)的用于實現(xiàn)指定操作的語句,變量在計算過程中存儲有關(guān)的值;值;n2、函數(shù)可任意命名,但每一個、函數(shù)可任意命名,但每一個C程序中都程序中都必須并且只能必須并且只能有一個有一個名為名為main的主函數(shù);的主函數(shù);C程序都是從程序都是從main函數(shù)開始函數(shù)開始執(zhí)行;執(zhí)行;C語言程序的基本格式n3、函數(shù)必須先定義,后使用函數(shù)必須先定義,后使用。定義函數(shù)時在函數(shù)。定義函數(shù)時在函數(shù)名后加一對名后加一對圓括號圓括號將變量括起來。將變量括起來。n4、由一對、由一對花括號花括號括起構(gòu)造函數(shù)的語句,稱為函數(shù)括起構(gòu)造函數(shù)的語句,稱為函數(shù)體。花括號后不加分號。體。花括號后不加分

32、號。C語言程序的基本格式n5、每一條語句的用分號、每一條語句的用分號“;”做為結(jié)束。做為結(jié)束。C語言程序的基本格式n6、源程序中可以有預處理命令、源程序中可以有預處理命令(include 命令僅為命令僅為其中的一種其中的一種),預處理命令通常應放在源文件或源程,預處理命令通常應放在源文件或源程序的最前面。序的最前面。 n7、一個語言源程序可以由一個或多個源文件組、一個語言源程序可以由一個或多個源文件組成。成。 不能嵌套例:例: /*This is the main /* of example1.1*/ */ 非法非法C語言程序結(jié)構(gòu)/* 在屏幕上顯示在屏幕上顯示Hello World! */#i

33、nclude “stdio.h” main() printf(“hello World!n”);注釋語句注釋語句編譯預處理編譯預處理主函數(shù)定義主函數(shù)定義函數(shù)體函數(shù)體程序書寫格式特點程序書寫格式特點n習慣用習慣用小寫小寫字母,大小寫敏感字母,大小寫敏感n不使用行號,不使用行號,無程序行無程序行概念概念n可使用空行和空格可使用空行和空格n常用常用鋸齒形鋸齒形書寫格式書寫格式main( ) . . . . . . .main( ) int i , j , sum; sum=0; for(i=1; i10;i+) for(j=1;j10;j+) sum+=i*j ; printf(“%dn”,sum)

34、;優(yōu)秀程序員的素質(zhì)之一: 使用TAB縮進 對齊 有足夠的注釋 有合適的空行課堂練習一n編寫一個編寫一個C語言源程序,執(zhí)行后,在屏幕上語言源程序,執(zhí)行后,在屏幕上輸出:輸出:“ 這是我的第一個這是我的第一個 C語言程序語言程序 ”C語言程序結(jié)構(gòu)注釋語句注釋語句編譯預處理編譯預處理主函數(shù)定義主函數(shù)定義函數(shù)體函數(shù)體/* 在屏幕上顯示:在屏幕上顯示: 這是我的第一個這是我的第一個C語言源程序語言源程序! */#include “stdio.h” main() printf (“這是我的第一個n C語言源程序”) ;2、常用計算機語言、常用計算機語言BASICFORTRANPASCALCOBOLCJAV

35、APROLOG計算機基本工作過程n整個過程的執(zhí)行者是硬件,但硬件是受軟件控制的n編程,就是編寫軟件,使硬件按照人的意圖工作1、計算機語言的翻譯方式、計算機語言的翻譯方式(1)解釋方式:)解釋方式:(2)編譯方式:)編譯方式:程序設計語言的工作原理程序設計語言的工作原理高級語言源程序高級語言源程序解釋程序解釋程序解釋并執(zhí)行解釋并執(zhí)行運算結(jié)果運算結(jié)果高級語言高級語言 源程序源程序編譯程序編譯程序執(zhí)行執(zhí)行運算結(jié)果運算結(jié)果操作系統(tǒng)操作系統(tǒng)編譯編譯機器語言機器語言 程程 序序編譯運行n編譯過程編譯過程程序員(程序員(Programmer)編寫程序源代碼()編寫程序源代碼(Source Code)編譯器(

36、編譯器(Compiler)把源代碼轉(zhuǎn)換為可被計算機理解)把源代碼轉(zhuǎn)換為可被計算機理解的機器代碼(的機器代碼(Machine Code),并把機器代碼以可執(zhí)),并把機器代碼以可執(zhí)行文件(行文件(Executable File)的形式保存在磁盤上)的形式保存在磁盤上n軟件的運行軟件的運行計算機把機器代碼讀入到內(nèi)存(計算機把機器代碼讀入到內(nèi)存(Memory),由),由CPU運行這些代碼,讀取輸入(運行這些代碼,讀取輸入(Input),產(chǎn)生輸出),產(chǎn)生輸出(Output),完成程序員預定的功能),完成程序員預定的功能編譯語言n一種編譯語言對應一種編譯器一種編譯語言對應一種編譯器n程序員按照該語言的語法

37、編寫程序源代碼,把自程序員按照該語言的語法編寫程序源代碼,把自己的意圖融入到代碼中己的意圖融入到代碼中n編譯器讀入源代碼,把程序員的意圖轉(zhuǎn)換成可執(zhí)編譯器讀入源代碼,把程序員的意圖轉(zhuǎn)換成可執(zhí)行程序,供他人使用行程序,供他人使用解釋運行解釋運行n解釋運行過程解釋運行過程程序員編寫程序源代碼程序員編寫程序源代碼解釋器讀入源代碼,并執(zhí)行源代碼解釋器讀入源代碼,并執(zhí)行源代碼n解釋運行的語言特點解釋運行的語言特點執(zhí)行速度慢執(zhí)行速度慢好學易用好學易用n先編譯、后解釋先編譯、后解釋把源代碼編譯成更容易解釋的中間代碼,然后再解釋把源代碼編譯成更容易解釋的中間代碼,然后再解釋運行運行C程序的開發(fā)運行過程程序的開發(fā)

38、運行過程n1、源程序的編輯源程序的編輯可使用任意純文本編輯可使用任意純文本編輯器編寫,如記事本,器編寫,如記事本,WORD,UltraEit等均可,等均可,得到源程序文件得到源程序文件 *.c。n2、編譯編譯由專門的編輯程序(編譯器)對由專門的編輯程序(編譯器)對源程序進行語法分析和檢查,如無語法錯誤則轉(zhuǎn)源程序進行語法分析和檢查,如無語法錯誤則轉(zhuǎn)換生成目標碼程序文件換生成目標碼程序文件 *.obj。n3、鏈接鏈接與其它庫函數(shù)或目標程序文件鏈接與其它庫函數(shù)或目標程序文件鏈接生成可執(zhí)行文件生成可執(zhí)行文件 *.exe。n4、執(zhí)行執(zhí)行C語言集成開發(fā)環(huán)境n集成開發(fā)環(huán)境集成開發(fā)環(huán)境IDE:Integrat

39、ed Development Environmentn包含文本編輯、程序編譯、連接以及程包含文本編輯、程序編譯、連接以及程序運行,調(diào)試一體化的程序軟件包。序運行,調(diào)試一體化的程序軟件包。n常用的集成開發(fā)環(huán)境主要有:美國常用的集成開發(fā)環(huán)境主要有:美國Borland 公司公司1989年出版的年出版的Turbo C2.0,微軟的微軟的Microsoft Visual C+。 n因為因為TC是在是在DOS下進行操作的,在下進行操作的,在WINDOWS中也要在命令窗口中進行操作,中也要在命令窗口中進行操作,比較麻煩,所以推薦大家使用:比較麻煩,所以推薦大家使用:n“C/C+程序設計學習與實驗系統(tǒng)程序設計

40、學習與實驗系統(tǒng) ”共享版。共享版。n作者:鐘家民作者:鐘家民 nhttp:/ 編寫程序求變量a+b之和。n如何編寫程序?第二個程序/* 求:求:a+b= ? */#include “stdio.h” main() a=12; b=14; printf(“ a+b=“);/* 求求:a+b= ? */#include stdio.h main() int a=12; /定義定義a為整型變量為整型變量 int b=14; /定義定義b為整型變量為整型變量 printf ( a+b= %d, a+b );n在C語言中,所有變量必須先說明后使用,說明用于申明變量的性質(zhì),變量說明語句格式如下:變量類型名

41、變量變量類型名變量1,變量,變量2,變量變量n;變量類型名有:int 整數(shù); float 浮點數(shù)char 字符單字節(jié)short 短整數(shù) long 長整數(shù)single 單精度浮點數(shù) double 雙精度浮點數(shù)第二個程序求兩數(shù)之和/* 兩數(shù)求和兩數(shù)求和*/#include stdio.hvoid main() int a,b, sum; /定義三個整型變量定義三個整型變量 a = 12;/給變量賦值給變量賦值 b = 14; sum = a+b;/求和求和 printf(“a+b=%d”, sum);/輸出顯示輸出顯示/ %d輸出轉(zhuǎn)換說明,用整型值輸出轉(zhuǎn)換說明,用整型值sum來代替它來代替它修改程

42、序如下,運行結(jié)果修改程序如下,運行結(jié)果sum=?#include stdio.hvoid main() int a,b, sum; a = 12.50 ; b = 14.50; sum = a+b; printf(a+b=%d, sum);再修改程序如下,運行結(jié)果再修改程序如下,運行結(jié)果sum=?#include stdio.hvoid main() float a,b, sum; /定義三個浮點型變量定義三個浮點型變量 a = 12.50 ; b = 14.50; sum = a+b; printf(a+b=%d, sum);/* 兩數(shù)求和,兩數(shù)求和,sum=? */#include std

43、io.hvoid main() float a,b, sum; a = 12.50 ; b = 14.50; sum = a+b; printf(a+b= %f , sum); / %f輸出轉(zhuǎn)換說明,用浮點型值輸出轉(zhuǎn)換說明,用浮點型值sum來代替它來代替它輸出函數(shù) printf()nprintf函數(shù)稱為格式輸出函數(shù)函數(shù)稱為格式輸出函數(shù),用來向標準輸出設備用來向標準輸出設備(屏幕屏幕)寫數(shù)據(jù)寫數(shù)據(jù);nprintf(“格式控制串格式控制串”,參數(shù)表,參數(shù)表 ); n格式化字符串包括兩部分內(nèi)容格式化字符串包括兩部分內(nèi)容: n一部分是正常字符一部分是正常字符, 這些字符將按原這些字符將按原 樣輸出樣輸

44、出; n另一部分是格式化規(guī)定字符另一部分是格式化規(guī)定字符, 以以“%”開始開始, 后跟一個或幾個后跟一個或幾個規(guī)定字符規(guī)定字符, 用來確定輸出內(nèi)容格式。用來確定輸出內(nèi)容格式。n參數(shù)表是需要輸出的一系列參數(shù)參數(shù)表是需要輸出的一系列參數(shù), 其個數(shù)必須與格式化字其個數(shù)必須與格式化字符串所說明的輸出符串所說明的輸出 參數(shù)個數(shù)一樣多參數(shù)個數(shù)一樣多, 各參數(shù)之間用各參數(shù)之間用,分開分開, 且順序一一對應且順序一一對應, 否則將會出現(xiàn)意想否則將會出現(xiàn)意想 不到的錯誤。不到的錯誤。參數(shù)可以是變量參數(shù)可以是變量, 常量和表達式。常量和表達式。n1. 格式化規(guī)定符格式化規(guī)定符 Turbo C2.0提供的格式化規(guī)定

45、符如下提供的格式化規(guī)定符如下: 符號作用符號作用 %d 十進制有符號整數(shù)十進制有符號整數(shù) %u 十進制無符號整數(shù)十進制無符號整數(shù) %f 浮點數(shù)浮點數(shù) %s 字符串字符串 %c 單個字符單個字符 %p 指針的值指針的值 %e 指數(shù)形式的浮點數(shù)指數(shù)形式的浮點數(shù) %x, %X 無符號以十六進制表示的整數(shù)無符號以十六進制表示的整數(shù) %0 無符號以八進制表示的整數(shù)無符號以八進制表示的整數(shù) %g 自動選擇合適的表示法自動選擇合適的表示法 n(1). 可以在可以在“%”和字母之間插進數(shù)字表示最大場寬。和字母之間插進數(shù)字表示最大場寬。n %3d 表示輸出表示輸出3位整型數(shù)位整型數(shù), 不夠不夠3位右對齊。位右對

46、齊。n %9.2f 表示輸出場寬為表示輸出場寬為9的浮點數(shù)的浮點數(shù), 其中小數(shù)位為其中小數(shù)位為2, 整數(shù)整數(shù)位為位為6, 小數(shù)點占一位小數(shù)點占一位, 不夠不夠9位右對齊。位右對齊。 n對浮點數(shù)對浮點數(shù), 若整數(shù)部分位數(shù)超過了說明的整數(shù)位寬度若整數(shù)部分位數(shù)超過了說明的整數(shù)位寬度, 將按將按實際整數(shù)位輸出實際整數(shù)位輸出; 若小數(shù)部分位數(shù)超過了說明的小數(shù)位寬若小數(shù)部分位數(shù)超過了說明的小數(shù)位寬度度, 則按說明的寬度以四舍五入輸出。則按說明的寬度以四舍五入輸出。 n如果用浮點數(shù)表示字符或整型量的輸出格式如果用浮點數(shù)表示字符或整型量的輸出格式, 小數(shù)點后的小數(shù)點后的數(shù)字代表最大寬度數(shù)字代表最大寬度, 小數(shù)

47、點前的數(shù)字代表最小寬度。小數(shù)點前的數(shù)字代表最小寬度。 例如例如: %6.9s 表示顯示一個長度不小于表示顯示一個長度不小于6且不大于且不大于9的字符串。的字符串。若大于若大于9, 則則 第第9個字符以后的內(nèi)容將被刪除。個字符以后的內(nèi)容將被刪除。 n(2). 可以在可以在“%”和字母之間加小寫字母和字母之間加小寫字母l, 表示輸表示輸出的是長型數(shù)。出的是長型數(shù)。 例如例如: %ld 表示輸出表示輸出long整數(shù)整數(shù) %lf 表示輸出表示輸出double浮點數(shù)浮點數(shù)n (3). 可以控制輸出左對齊或右對齊可以控制輸出左對齊或右對齊, 即在即在%和字和字母之間加入一個母之間加入一個- 號可號可 說明

48、輸出為左對齊說明輸出為左對齊, 否則否則為右對齊。為右對齊。 例如例如: %-7d 表示輸出表示輸出7位整數(shù)左對齊位整數(shù)左對齊n2. 一些特殊規(guī)定字符一些特殊規(guī)定字符n 字符字符 作用作用 n 換行換行 f 清屏并換頁清屏并換頁 r 回車回車 t Tab符符 xhh 表示一個表示一個ASCII碼用碼用16進制數(shù)進制數(shù) 表示表示, 其中其中hh是是1到到2個個16進制數(shù)進制數(shù)輸出函數(shù) printf()例子:例子:#include stdio.hvoid main() printf(%dnn,336); printf(the octal number of 17 is %onn,17); prin

49、tf(the hex number of 30 is %xnn,30); printf(%f is floating formatnn,13.5); printf(%cnn,a); printf(%snn,a fling bird);/* 兩數(shù)求和兩數(shù)求和*/#include stdio.hvoid main() int a,b, sum; a = 12; b = 14; sum = a+b; printf(%d+%d=%d, a,b,sum);n前面的程序是在源程序中就輸入了要求和前面的程序是在源程序中就輸入了要求和的數(shù),如果我們想要在鍵盤中輸入數(shù)據(jù),的數(shù),如果我們想要在鍵盤中輸入數(shù)據(jù),如果

50、實現(xiàn)呢?如果實現(xiàn)呢?n可以使用可以使用scanf()函數(shù)。函數(shù)。輸入函數(shù) scanf()nscanf()函數(shù)是格式化輸入函數(shù)函數(shù)是格式化輸入函數(shù), 它從它從標準輸入設備標準輸入設備(鍵盤鍵盤) 讀取輸入的信息。讀取輸入的信息。n格式格式: nscanf(, ); 輸入函數(shù) scanf()n格式化字符串包括以下三類不同的字符格式化字符串包括以下三類不同的字符; 1、 格式化說明符格式化說明符: 格式化說明符與格式化說明符與printf()函數(shù)中的格式函數(shù)中的格式說明符基本相同。說明符基本相同。2、分隔符要輸入多個數(shù)據(jù),在要格式化字符中加入、分隔符要輸入多個數(shù)據(jù),在要格式化字符中加入分隔符分隔符(1)空白字符)空白字符: 空白字符會使空白字符會使scanf()函

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論