C程序設(shè)計(jì)___譚浩強(qiáng)著____清華大學(xué)出版社.ppt_第1頁
C程序設(shè)計(jì)___譚浩強(qiáng)著____清華大學(xué)出版社.ppt_第2頁
C程序設(shè)計(jì)___譚浩強(qiáng)著____清華大學(xué)出版社.ppt_第3頁
C程序設(shè)計(jì)___譚浩強(qiáng)著____清華大學(xué)出版社.ppt_第4頁
C程序設(shè)計(jì)___譚浩強(qiáng)著____清華大學(xué)出版社.ppt_第5頁
已閱讀5頁,還剩509頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、C編程,2010年2月,目錄,第1章C語言概述,第2章靈魂算法,第3章數(shù)據(jù)類型,運(yùn)算符和表達(dá)式,第5章選擇結(jié)構(gòu)編程,第4章最簡單C編程序列編程,第6章循環(huán)控制,第7章數(shù)組,第8章函數(shù),第9章指針,第10章預(yù)處理命令,第11章結(jié)構(gòu)和社區(qū)。第12章位運(yùn)算,第13章文件、教材、參考書和課時(shí)安排,譚浩強(qiáng)清華大學(xué)出版社C程序設(shè)計(jì)教材,譚浩強(qiáng)清華大學(xué)出版社C程序設(shè)計(jì)答案與計(jì)算機(jī)指導(dǎo)參考書,C程序設(shè)計(jì)教程譚浩強(qiáng)高等教育出版社C高級(jí)實(shí)用程序設(shè)計(jì)王士元清華大學(xué)出版社C高級(jí)實(shí)用程序設(shè)計(jì)課時(shí)安排教學(xué):計(jì)算機(jī)上34小時(shí):34小時(shí),學(xué)習(xí)要求和成績構(gòu)成,學(xué)習(xí)要求, 請(qǐng)?jiān)谡n前做好準(zhǔn)備,課后好好復(fù)習(xí),保持課堂安靜、頭腦清醒、

2、積極、認(rèn)真、獨(dú)立,按時(shí)完成并提交作業(yè),重視計(jì)算機(jī)練習(xí),有效利用寶貴的計(jì)算機(jī)時(shí)間,這構(gòu)成了平時(shí)出勤:10%平時(shí)作業(yè):10%平時(shí)計(jì)算機(jī):10%期末考試:計(jì)算機(jī)考試10%筆會(huì)考試60%,第1章C語言概述。 1.1程序設(shè)計(jì)語言的發(fā)展和特點(diǎn),中央處理器指令系統(tǒng),指令代碼由0和1序列組成,如:10,000,000加10,010,000減,指令系統(tǒng)用助記符號(hào)描述,如ADD A,B,面向機(jī)器的語言,程序設(shè)計(jì)是數(shù)據(jù)處理的過程,客觀世界是可以分類的,一個(gè)對(duì)象是一個(gè)類的實(shí)例,它是被封裝的數(shù)據(jù)對(duì)象和方法之間通過發(fā)送和接收消息的連接。編程的關(guān)鍵是定義一個(gè)類,并從該類中派生出對(duì)象。prolog、cobol、fortran

3、 77、fortran、pl/1、simula67、smalltalk 80、basic、ansi-basic、qbisic、VB、fortran 90、1.2 c語言的發(fā)展,其特點(diǎn)和應(yīng)用,以及C語言發(fā)展的歷史,ALGOL 60語言、CPL語言、組合編程語言、劍橋大學(xué)、BCPL語言、1963、劍橋大學(xué)的Matin Richards簡化CPL語言、B語言、C語言、1970、貝爾實(shí)驗(yàn)室的Ken Thompson修改了BCPL和煮沸的CPL在1973年,B語言也被煮沸。貝爾實(shí)驗(yàn)室的D . M.RITCHIE最終設(shè)計(jì)了一種基于B語言的新語言。BCPL的第二個(gè)字母是這種語言的名稱。這是C語言,C語言發(fā)展

4、的歷史。生成背景生成過程時(shí)間: 19721973地點(diǎn):貝爾實(shí)驗(yàn)室用途: UNIX操作系統(tǒng)設(shè)計(jì)者:肯。湯普森和丹尼斯。里奇C標(biāo)準(zhǔn)C: K,運(yùn)行結(jié)果:是一個(gè)C程序!在C程序中,注釋以“/*”開始,以“*/”結(jié)束,可以實(shí)現(xiàn)多行注釋。在C程序中,“/”也可以用于單行注釋。例如:/注釋信息,C語言的預(yù)處理命令都以“#”開頭。Stdio.h是一個(gè)頭文件,允許在C程序中插入幾個(gè)空行,這并不影響程序的功能,就像注釋一樣。為了程序的可讀性,在編寫C程序時(shí),可以根據(jù)需要插入一定的空行。main是主函數(shù)的名字,一個(gè)C語言程序只有一個(gè)主函數(shù)。c程序是從主函數(shù)執(zhí)行的,具體是從到 。printf是C語言的內(nèi)部函數(shù)名,因?yàn)?/p>

5、它后面跟的是(),它的函數(shù)是放“這是一個(gè)C程序!”“n”顯示在計(jì)算機(jī)屏幕上(不顯示雙引號(hào)和n)。C語言規(guī)定語句以分號(hào)結(jié)束,C語言程序的基本結(jié)構(gòu)例2計(jì)算輸入的兩個(gè)整數(shù)之和。/*這是第二個(gè)C程序*/#包含無效主()int x,y,z;Scanf (%d%d),假設(shè)輸入:10 20。運(yùn)行結(jié)果:兩個(gè)整數(shù)之和為30,這是1.3 C語言程序的基本結(jié)構(gòu)。C語言程序的功能由兩部分組成:一部分定義變量(變量代表數(shù)據(jù)),稱為聲明部分;另一部分表示操作,由C語句組成,稱為執(zhí)行部分。在C程序中,要求函數(shù)的聲明部分在前面,執(zhí)行部分在后面,它們的順序不能顛倒或交叉。然而,在C程序中,聲明部分和執(zhí)行部分可以相互交叉,并且沒

6、有嚴(yán)格的邊界。當(dāng)然,在執(zhí)行部分使用的變量只需要在它之前定義。/C語言程序無效主()整型;a=10int b;b=a20;/C語言程序無效主()整型;a=10int b;b=a20;/C或C語言程序無效main()int a;a=10b=a20;int b;同樣,在C語言程序中,變量必須先定義后使用,并且順序不能顛倒!1.3 C語言程序的基本結(jié)構(gòu),示例3計(jì)算輸入的兩個(gè)整數(shù)的最大值。/*這是第三個(gè)C程序*/#包含int max (int a,int b);void main () int x,y,z;scanf (%d%d,int max (int a,int b)int c;如果(a b)c=a

7、;否則c=b。返回(c);用戶自定義函數(shù)max,假設(shè)輸入:10 20,運(yùn)行結(jié)果:max=20,1.3c語言程序的基本結(jié)構(gòu),c語言的標(biāo)識(shí)符,c語言的變量和函數(shù)都有自己的名字,它們必須是合法的標(biāo)識(shí)符。標(biāo)識(shí)符是一個(gè)名字。c語言規(guī)定標(biāo)識(shí)符只能由字母、數(shù)字和下劃線組成,第一個(gè)字符必須是字母或下劃線。c是區(qū)分大小寫的語言,所以hello和Hello是不同的標(biāo)識(shí)符。C語言中有一些特殊的標(biāo)識(shí)符,它們的用法已經(jīng)被預(yù)先指定了,所以程序員不能把它們用于其他目的。這些特殊標(biāo)識(shí)符被稱為關(guān)鍵字(也稱為保留字)。到目前為止,我們已經(jīng)看到的關(guān)鍵字是空,國際,主要,如果,否則和返回。隨著研究的深入,我們在未來會(huì)遇到越來越多的關(guān)

8、鍵詞(C關(guān)鍵詞請(qǐng)參考附錄B)。1.3語言程序的基本結(jié)構(gòu)。綜上所述,C程序是由多個(gè)函數(shù)組成的。每個(gè)c程序只有一個(gè)主要功能。主要功能是程序的進(jìn)入和退出。沒有行號(hào),沒有程序行的概念。程序中可以使用空行和空格。c程序格式常用的鋸齒形書寫格式。你可以在c程序中添加任意數(shù)量的注釋。為了引用C語言的標(biāo)準(zhǔn)庫函數(shù),頭文件通常包含在文件包含預(yù)處理命令中。用戶定義的函數(shù)必須在使用前定義。使用前必須定義變量。變量名和函數(shù)名必須是合法的標(biāo)識(shí)符,標(biāo)識(shí)符使用小寫字母,區(qū)分大小寫。變量和函數(shù)不能用關(guān)鍵字命名。該功能由兩部分組成:聲明部分和執(zhí)行部分。在C程序中,首先是聲明部分,然后是執(zhí)行部分。這兩個(gè)部分的順序不能顛倒或交叉。c

9、語言語句都以分號(hào)結(jié)尾。1.4編譯C語言程序的基本步驟,編輯,程序代碼輸入,生成源程序*。c或*。cpp,編輯和翻譯,翻譯和生成目標(biāo)程序*。與其他目標(biāo)程序或庫鏈接、鏈接和組合,生成可執(zhí)行程序*。編譯C程序的步驟,練習(xí):P12P12P算法:總之,它是解決問題的方法和步驟。算法是編程的靈魂,是問題解決過程中的精確描述。一個(gè)算法由有限數(shù)量的指令組成,這些指令可以完全機(jī)械地執(zhí)行并有一定的結(jié)果。編程語言:它是一個(gè)程序開發(fā)工具,也就是說,一個(gè)將算法轉(zhuǎn)換成程序的開發(fā)工具。程序:算法的具體實(shí)現(xiàn)。學(xué)習(xí)C語言,不僅要掌握其自身的特點(diǎn)和語法規(guī)則,還要掌握分析和解決問題的方法,即鍛煉分析、分解以及最終總結(jié)和整理算法的能

10、力。2.1算法的概念,算法應(yīng)具有以下五個(gè)特征:1)有限性:算法中每一步的次數(shù)和時(shí)間都是有限的。2)確定性:算法中的每一步都有明確的含義,沒有歧義。3)可行性:算法中描述的操作可以通過有限數(shù)量的基本操作來實(shí)現(xiàn)。4)輸入:一個(gè)算法應(yīng)該有零個(gè)或多個(gè)輸入。5)輸出:一個(gè)算法應(yīng)該有一個(gè)或多個(gè)輸出。2。2算法特性,2.3算法示例,示例1輸入三個(gè)數(shù)字,然后輸出最大的數(shù)字??偟南敕ǎ菏紫?,必須有一個(gè)地方安裝這三個(gè)號(hào)碼。我們定義了三個(gè)變量a、b和c,并依次輸入到b和c中。此外,我們準(zhǔn)備了一個(gè)最大安裝數(shù)量。由于計(jì)算機(jī)一次只能比較兩個(gè)數(shù)字,我們首先將大于A和B的數(shù)字放入最大值,然后將最大值與C進(jìn)行比較,然后將較大的

11、數(shù)字放入最大值。最后,輸出最大值,用三個(gè)數(shù)字中最大的數(shù)字填充最大值。具體步驟:(1)輸入A、B和c。(2)將A和B中較大的一個(gè)放入最大值。(3)將c和MAX中較大的一個(gè)放入MAX中。(4)輸出最大值,這是最大值。這兩個(gè)步驟(2)和(3)仍然不清楚,不能直接轉(zhuǎn)換成程序語句,所以我們可以繼續(xù)完善它們:(2)把A和B中較大的一個(gè)放入MAX,如果A B,那么MAX A;否則最大值B。(3)將C和最大值中的一個(gè)放入最大值,如果C最大,則最大值C。該算法可寫成:(1)輸入A、B、C。(2)如果A B,則最大值A(chǔ);否則為MAXB。(3)如果最大輸出是最大值,最大輸出是最大值。例2猴子吃桃子:有一堆數(shù)量未知的

12、桃子。猴子在第一天吃了一半,發(fā)現(xiàn)不夠,所以他又吃了一個(gè)。第二天,他吃了一半剩下的桃子,又加了一個(gè)。每天,在第十天的早上,猴子發(fā)現(xiàn)只剩下一個(gè)桃子了。他問這堆桃子有多少??偟南敕ǎ杭僭O(shè)第一天開始有1個(gè)桃子,第二天有2個(gè)桃子,第9天有9個(gè)桃子,第10天有10個(gè)桃子。在a1、a2、a10中,只有a10=1是已知的?,F(xiàn)在a1是必需的,但是我們可以看到a1,a2,a10之間有一個(gè)簡單的關(guān)系:a9=2 * (a10 1) a8=2 * (a9 1) a1=2 * (a2 1),即ai=2 * (ai11) I=9,8,7,6,1,這是這個(gè)問題的數(shù)學(xué)模型。那么,上述從a9、a8到a1的計(jì)算過程實(shí)際上是一個(gè)遞歸

13、過程,這在計(jì)算機(jī)問題解決中經(jīng)常使用。另一方面,這九個(gè)步驟在形式上完全相同,但唯一的區(qū)別是ai的下標(biāo)。因此,我們引入了循環(huán)處理方法,統(tǒng)一用a0代表前一天的桃數(shù),a1代表第二天的桃數(shù)。最后,算法可以寫成:(1) a1=1第10天的桃數(shù),a1的初始值i=9,計(jì)數(shù)器的初始值為9 (2) a0=2 * (a1 1),計(jì)算當(dāng)天的桃數(shù)(3) a1=a0,并把當(dāng)天的桃數(shù)作為下一次計(jì)算的初始值(4) i=i-1 (5),如果i=1,1)自然語言示例:1 2 3 100進(jìn)行編程。該算法如下:S1:設(shè)置一個(gè)累計(jì)和變量和及一個(gè)計(jì)數(shù)變量n;讓它們的初始值為0;S2:法官nsum,n 1=nS4:轉(zhuǎn)向S2;S5:輸出總和

14、。2.4算法表示,2)流程圖,3)N-S圖1973年,美國學(xué)者納西和施耐德曼提出了一種新的流程圖,并以此命名為結(jié)構(gòu)化流程圖。在該流程圖中,帶有箭頭的流程線被完全刪除。所有的算法都寫在一個(gè)矩形框中,這個(gè)矩形框也可以包含其他的附屬框。用N-S圖來表示算法就像堆積樹一樣,非常適合結(jié)構(gòu)化編程,所以非常流行。與流程圖方法相比,N-S圖的主要特點(diǎn)是消除了流程線,從而避免了隨機(jī)轉(zhuǎn)彎算法的設(shè)計(jì),使學(xué)習(xí)者更容易養(yǎng)成使用結(jié)構(gòu)化方法構(gòu)造算法的習(xí)慣。4)偽碼使用傳統(tǒng)的流程圖和圖形來表達(dá)算法,直觀易懂,但是繪制起來很花時(shí)間。因?yàn)椴豢赡芤淮卧O(shè)計(jì)一個(gè)算法,所以經(jīng)常需要反復(fù)修改,修改流程圖也很麻煩。因此,為了簡單地表達(dá)算法,

15、通常使用偽碼。偽代碼用字符(可以是中文)和自然語言與計(jì)算機(jī)語言之間的符號(hào)來描述算法。2.5流程圖和算法的結(jié)構(gòu)化描述,2.4流程圖和算法的結(jié)構(gòu)化描述,流程圖和結(jié)構(gòu)化編程方法是學(xué)習(xí)編程的基礎(chǔ)。1)結(jié)構(gòu)化編程是一種避免使用goto語句的編程;2)結(jié)構(gòu)化編程是自頂向下的編程;3)結(jié)構(gòu)化程序設(shè)計(jì)是一種組織和編譯程序的方法,它所編譯的程序易于理解和修改;4)程序結(jié)構(gòu)化的主要功能之一是使其易于證明正確性;5)結(jié)構(gòu)化編程允許在設(shè)計(jì)過程的每一步驗(yàn)證其正確性,即自動(dòng)導(dǎo)致自我解釋和自我防御的程序風(fēng)格;6)結(jié)構(gòu)化編程討論了如何將任何大規(guī)模和復(fù)雜的流程圖轉(zhuǎn)換成標(biāo)準(zhǔn)形式,以便它們可以通過重復(fù)和嵌套由幾個(gè)標(biāo)準(zhǔn)控制結(jié)構(gòu)(通常是順序、分支和循環(huán))來表示。結(jié)構(gòu)化程序設(shè)計(jì)方法一般來說,只要“三個(gè)基本結(jié)構(gòu)(序列、分支和循環(huán))”都能在程序中正確地用來表示問題解決的步驟(算法);使用“模塊”封裝功能,然后設(shè)計(jì)程序的思想可以定義為結(jié)構(gòu)化程序設(shè)計(jì)。自上而下;逐漸提煉;模塊化設(shè)計(jì);結(jié)構(gòu)化編碼。2.6結(jié)構(gòu)化編程方法,練習(xí):P36 1,2,3,4,第3章數(shù)據(jù)類型,運(yùn)算符和表達(dá)式,程序是解決某個(gè)問題的一組有序指令。著名的計(jì)算機(jī)

溫馨提示

  • 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)論