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

下載本文檔

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

文檔簡介

1、C語言程序設計,陳曦,課堂紀律,OPEN;開放你的頭腦:上課要積極思考。 CLOSE;關閉你的手機,不準討論與課堂無關的事情。 完成教師布置的作業(yè)。 本學期點名N次,一次不到扣5分。無故缺課累計超過總學時的1/3(5次)或缺交作業(yè)及實驗報告1/4,不得參加考試。,為什么要學習這門課程?,學校教學安排 報考全國計算機等級考試二級、三級的基礎 是深入學習計算機技能的基礎 是學習其它程序設計語言的基礎,第1章 C語言概述,1.1 C語言出現(xiàn)的歷史背景,1.2 C語言的特點,1.3 簡單的C語言程序介紹,1.4 運行C程序的步驟和方法,本章小結,1.1 C語言出現(xiàn)的歷史背景,兩個說不同母語的人的對話方

2、式: 一方學另一方的語言 雙方都學習一種第三方語言 人與計算機的對話方式: 計算機學習人的語言(自然語言理解) 人學習計算機的語言 學習第三方語言,機器語言,計算1+1,10111000 00000001 00000000 00000101 00000001 00000000,匯編語言,C語言,#include main() printf(%dn, 1+1); ,C語言的創(chuàng)世紀,一切從一個叫“Space Travel”的電子游戲開始 為了讓他的游戲能在PDP-7上運行,Ken Thompson用匯編語言給PDP-7寫了一個操作系統(tǒng)UNIX 匯編太不好用了,Thompson需要高級語言 試驗了一

3、些高級語言,包括Fortran,都不理想 他在BCPL基礎上,自己設計了一個B語言 UNIX開始發(fā)展,B也不夠用了 Dennis Ritchie加入,把B改造成C 開始用C重寫UNIX,Ritchie和Thompson在開發(fā)UNIX,接受美國國家技術勛章,C程序設計語言,是一種高級語言 高級語言并不是“高級”,只是相對低級語言,在一個高的級別上進行編程 歷史悠久,戰(zhàn)勛卓著 誕生于上世紀70年代初,成熟于80年代(C89),修訂與90年代(C99) 很多重量級軟件都是用C寫的 上天入地,無所不能 幾乎沒有不能用C寫出來的軟件,沒有不支持C的系統(tǒng) 很多流行語言、新生語言都借鑒了它的思想、語法 從C

4、+,到Java,再到C#,還有php等,計算機的層次,硬件(Hardware),操作系統(tǒng)(OS),應用程序(Application),應用平臺,基于平臺的應用程序,低級語言的地盤,高級語言的地盤,C語言的地盤,C語言的祖師爺Dennis M. Ritchie,http:/www.cs.bell-,Ritchie漫畫像,C is quirky, flawed, and an enormous success.,C詭異離奇,迷霧重重,卻獲得了巨大的成功,基礎之基礎,軟件、程序和命令 計算機基本工作過程 編譯運行、解釋執(zhí)行,1、軟件、程序以及命令,軟件是將一組程序組織起來 每個程序由一組指令組成,2

5、、計算機基本工作過程,整個過程的執(zhí)行者是硬件,但硬件是受軟件控制的 編程,就是編寫軟件,使硬件按照人的意圖工作,3、編譯運行,編譯過程 程序員(Programmer)編寫程序源代碼(Source Code) 編譯器(Compiler)把源代碼轉換為可被計算機理解的機器代碼(Machine Code),并把機器代碼以可執(zhí)行文件(Executable File)的形式保存在磁盤上 軟件的運行 計算機把機器代碼讀入到內(nèi)存(Memory),由CPU運行這些代碼,讀取輸入(Input),產(chǎn)生輸出(Output),完成程序員預定的功能,編譯語言,一種編譯語言對應一種編譯器 程序員按照該語言的語法編寫程序源

6、代碼,把自己的意圖融入到代碼中 編譯器讀入源代碼,把程序員的意圖轉換成可執(zhí)行程序,供他人使用,C語言,可執(zhí)行程序,編譯器,1.2 C語言的特點,語言簡潔、緊湊、靈活 運算符和數(shù)據(jù)類型豐富 程序設計結構化、模塊化 生成目標代碼質量高 可移植性好,演示三個簡單程序 觀察C程序結構,【例1】向屏幕上輸出一句話: Hello,world!,1.3 簡單的C語言程序介紹,#include void main( ) printf(“Hello world!n); ,【例1】,預處理命令,主函數(shù),函數(shù)體,超級無敵考考你,如何把“hello”和“world” 分別打印在兩行?,#include void ma

7、in( ) int a,b,c; scanf(“%d%d”, ,【例2】定義簡單變量,求計算結果,int max(int x,int y) int z; if(xy) z=x; else z=y; return z; void main() int a,b,c; scanf(%d%d, ,/*用戶自定義函數(shù)*/,【例3】定義用戶函數(shù),求兩個數(shù)的最大值,/* 主函數(shù) */,/* 調用用戶自定義函數(shù) */,C程序是由函數(shù)組成的。 每個程序有且只有一個main()主函數(shù)。 用戶自定義的函數(shù)獨立于主函數(shù),位置位于主函數(shù)前后都可以。C程序總是以main()函數(shù)作為入口開始執(zhí)行,結束于main()的最后一

8、條語句。 每個函數(shù)都由函數(shù)首行信息和函數(shù)體構成。 C語言本身沒有輸入輸出語句。輸入和輸出的操作是由庫函數(shù)scanf和printf等函數(shù)來完成的。 以# 開始的預處理命令寫在整個程序開始之處。,C程序框架結構,【分析與總結】,代碼如何執(zhí)行?,C語言常用的集成開發(fā)環(huán)境: Visual C+ 6.0 Turbo C+3.0 WINtc,1.4 運行程序的步驟和方法,注意觀察: (提問) 如何新建文件? 如何輸入源程序? 如何保存或命名? 如何編譯源文件? 如何組建和運行源文件? 如何查看結果?,VC環(huán)境操作總結,文件新建C+source文件 輸入源程序在右側的主窗口? 保存:文件保存;或CtrlS

9、編譯:組建編譯,或CtrlF7 信息提示窗口(下方) 組建:F7;運行:CtrlF5 查看結果:press any key to continue?,上機輸入與編輯源程序.c 對源程序進行編譯 .obj 與庫函數(shù)連接 .exe 運行.exe程序,C程序上機,補充兩點: 每個默認工作空間只能生成一個.exe文件,因此當再建一個新的C源程序時,需: “文件” “關閉工作空間” 然后再“文件”“新建”C+source文件 2.建立個人文件夾,將你的程序放在其中,清晰易查找。,編程小練,現(xiàn)在我們能編寫簡單程序嗎?,仿照例1編寫程序:向屏幕上輸出一句話“我的名字是 .”。,仿照例2編寫程序:求三個數(shù)的平

10、均數(shù)。補充一個數(shù)據(jù)類型float,代碼風格,#include /* 對 fahr = 0, 20, ., 300 打印華氏溫度與攝氏溫度對照表 */ void main() int fahr, celsius; int lower, upper, step; lower = 0; /* 溫度表的下限 */ upper = 300; /* 溫度表的上限 */ step = 20; /* 步長 */ fahr = lower; while (fahr = upper) celsius = 5 * (fahr-32) / 9; printf(%dt%dn, fahr, celsius); fahr

11、= fahr + step; ,沒有代碼風格,#include void main()int fahr,celsius; int lower,upper,step; lower=0;upper=300;step=20; fahr=lower; while (fahr=upper) celsius=5*(fahr-32)/9; printf(%dt%dn,fahr,celsius); fahr=fahr+step;, The International Obfuscated C Code Contest 兩個獲獎的例子:dance.c、sqrt.c,fc2.

12、c,初識scanf函數(shù),輸入數(shù)據(jù)使用輸入函數(shù): scanf(%d%d,說明: 輸入整型數(shù)(int)用d,輸入實數(shù)類型(float)用f,輸入幾個變量值就用幾個格式符;例如: scanf(%f%f%f, 第二部分參數(shù)是變量的名稱前加運算符“ 輸出變量值: printf(sum is %dn, sum);,若干程序語句按順序書寫,按順序執(zhí)行; 每條語句以分號“ ;”結束; 一個復雜的語句也可以寫成幾行,用反斜杠 表示續(xù)行;幾個簡單語句也可寫在一起,都必須用“;”作為每句結束標志。 通常變量定義放在開始部分; 語句后面可以有注釋,注釋內(nèi)容放在 /* */內(nèi),程序體的基本語法要素,【總結1】,【回答】

13、如果程序中處理的數(shù)據(jù)需要由用戶在運行程序時確定,應該用scanf()函數(shù)輸入;如果數(shù)據(jù)不需用戶確定,而由程序自身確定,可直接賦值。,【思考】你知道以下兩種方法為變量輸入已知值的不同嗎?,main() int a,b,c; a=4; b=5; c=a+b; printf(“sum is %dn”,c); ,main() int a,b,c; scanf(“%d%d”, ,基本編程經(jīng)驗,程序由 “輸入處理輸出” 三個模塊組成。 輸入時通常先定義變量,然后用輸入函數(shù)scanf()輸入數(shù)據(jù),或直接給變量賦值。 程序的關鍵算法語句。 使用輸出函數(shù),如printf()輸出結果。,【總結2】,讓我們一起分析

14、、編寫一個程序吧,【實例】某鐵桶廠應客戶要求定做一批鐵桶,客戶給出了鐵桶的規(guī)格,高30cm,半徑10cm,共訂做1500個鐵桶。工廠接到訂單后需馬上計算出所需的原材料組織生產(chǎn)。,分析: 我們知道鐵桶為圓柱形,其表面積的計算可以利用數(shù)學公式: S=2RH+2R2 為了計算S的值,我們首先需要向計算機輸入兩個已知值R和H,計算機根據(jù)上面的公式進行運算,得到一只鐵桶的鐵皮用量,然后計算N只鐵桶的總鐵皮用量,最后輸出計算結果。 因此上面程序的工作步驟可以描述為: 1. 定義四個變量S,R,H,N。 2. 為R,H,N輸入已知值。 3. 利用公式S=2RH+2R2求表面積S。 4. 求總用量SSN。 5

15、. 輸出最后結果S 6. 結束。,#include void main() float s,r,h; /* 定義變量s表示面積,r表示半徑,h表示桶高 */ int n; /* 定義變量n表示桶的數(shù)量 */ r=10; h=30; n=1500; /* C語言的輸入函數(shù), 從鍵盤上接受用戶輸入的已知值分別送給變量r,h和n */ s=2*3.14*r*h+3.14*r*r*2; /* 計算一個桶的表面積 */ s=s*n; /* 求n只桶的總表面積 */ printf(“Total area is %.2fn”,s); /* 輸出總鐵皮用量 */ ,運行程序吧!,【實例5】利用系統(tǒng)庫函數(shù)實現(xiàn)數(shù)

16、學運算,求xy。 #include /*系統(tǒng)標準輸入、輸出函數(shù)庫*/ #include /*系統(tǒng)數(shù)學函數(shù)庫*/ void main() double x,y,Result; /*定義兩個輸入變量x,y及輸出變量Result*/ printf(Please enter x,y for pow(x,y):); /*提示輸入x和y的值*/ scanf(%lf%lf, /*輸出結果值*/ ,double是雙精度實數(shù)類型,1.3.2 C語言的標準 在C語言程序中,函數(shù)下面的組成單位是語句。 語句有表達式語句、流程控制語句和塊語句。 1. 表達式語句 C語言程序的具體計算過程是由表達式完成的。表達式是由運

17、算符(如上述+,=等)、變量(如上述s,sum,a,b,x等)和常量(如上述2,3,0.19199等)組成。前面使用過的 s = add(2,3) sum = a + b x=sin(0.19199) 都是表達式。表達式加上語句結束符(分號)就構成表達式語句。,2. 流程控制語句 一般說來,程序中的語句是按照書寫順序執(zhí)行的。但是,有些情況下,需要改變默認的執(zhí)行順序,如下圖。前者稱為選擇控制,后者稱為重復控制。,(a)選擇結構 (b)重復結構 圖1.10 兩種基本的流程控制結構,3. 塊語句 塊語句也稱為復合語句,就是用一對花括號將一組語句括起來。在一個塊語句中可以包括若干聲明和若干語句。,1.

18、3.3 名字與聲明 1. 標識符與關鍵字 標識符也稱為名稱。變量的名字、函數(shù)的名字、文件的名字等,都是關鍵字。在C語言程序中,所使用的標識符應當符合如下的詞法規(guī)則: (1)標識符是大小寫字母、數(shù)字和下劃線組成的序列,但不能以數(shù)字開頭。 例如:sum,average,_total,Class,day,stu_name,p405 不合法的標識符:M.D.John,$123,#33,3D64,ab (2) C語言區(qū)別同一字母的大小寫 例如:sum不同Sum。BOOK不同book。,(3) C99要求C編譯器能識別的標識符長度為不少于63個有效字符。 (4)標識符不能與“關鍵詞”同名。 (5)建議:標

19、識符命名應當有一定的意義,做到見名知義。名字不要太短,一般函數(shù)名盡量使用動賓結構,如PrintCalendar、IsPrime等。,表1.1 C99關鍵字,2. 聲明 聲明也稱為說明,它的作用非常重要,包括如下一些: 告訴編譯器,一個名字是與哪個實體聯(lián)系,不能張冠李戴。 告訴編譯器,也要程序員明白這個實體的類型。 告訴編譯器,這個實體什么時候建立?在什么范圍內(nèi)可以使用?,1.3.4 變量及其賦值 1. 變量 變量(variable)是一種程序實體。它具有一個值,并且這個值是可以通過程序操作改變的。 2. 變量的賦值運算 在C語言中,符號“=”稱為賦值運算符,它連接了左右兩個操作數(shù)(即運算量):

20、右操作數(shù)也稱右值,可以是一個表達式,左操作數(shù)也稱左值(lvalue),只能是變量。賦值操作的過程是把右操作數(shù)的值先轉換成左操作數(shù)(變量)的類型,并把該值存放到左操作數(shù)(變量)中。例如,int a; a = 2.6; printf(“%d”,a);,結果為,2,這是因為計算機在執(zhí)行上述語句時,首先將2.6舍去小數(shù)部分截尾(truncation)成整型,賦值給變量a。,應當注意,賦值運算符是“=”。這個符號不是等號。例如,int a = 2, b = 3; a = a + b;,的操作是把表達式a + b的值(2 + 3)送到(賦值給)變量a。即經(jīng)上述操作后,變量的a的值由2變?yōu)?。圖1.13表明

21、這一操作過程:先計算a + b的值,然后把這個結果送到變量a中。于是,變量a的值由2變?yōu)?。,圖1.13 a = a + b的操作過程,賦值運算符具有“自右至左” 的結合性,例如,int a = 0,b = 0,c = 0; a = b = c = 5 + 3;,相當于,int a,b,c; a = (b =(c = (5 + 3));,即先計算把5 + 3的值,得8,賦值給變量c;再把變量c的值(8)賦值給變量b;最后把變量b的值(8)賦值給變量a。圖1.14表明這一操作過程。執(zhí)行的結果,a、b、c三個變量中的值均為8。也就是說,從一個變量向另一個變量賦值后,原來變量中的值并不會消失或改變。

22、所以,賦值操作相當于拷貝,而不是移動。,(c) 執(zhí)行操作b = c = 5 + 3后變量a、b、c的值,(b)執(zhí)行操作c = 5 + 3后變量a、b、c的值,(a) 操作前變量a、b、c的值,(d)執(zhí)行操作a = b = c = 5 + 3后變量a、b、c的值,圖1.14 a = b = c = 5 + 3的操作過程,1.3.5 算術運算 1. C語言的基本算術運算符,表1.3 C語言中的基本算術運算符及其說明,說明: (1)這幾個算術運算符的運算對象有兩個,所以也稱為雙目算術運算符。 (2)這幾個算術運算符的優(yōu)先級別為:*、/、%高于+、-。并且它們都比賦值運算符的優(yōu)先級別高。 (3)這幾個

23、算術運算符均為“自左至右”。 (4)需要特別注意的是整數(shù)除和模運算的結果都是整 數(shù)。 例1.6 分析下面的程序的執(zhí)行結果。,/* 文件名:ex010601.c */ #include void main() printf (300 * 2 / 3 = %dn,300 * 2 / 3); printf (2 / 3 * 300 = %dn,2 / 3 * 300); ,結果完全不同:,300 * 2 / 3 = 200 2 / 3 * 300 = 0,原因在于算術運算符具有自左至右的結合性,即對于第1個表達式語句,執(zhí)行的順序為: 300 * 2 = 600,600 / 3 = 200 對于第2個

24、表達式語句,執(zhí)行的順序則為: 2 / 3 = 0(注意是整數(shù)相除),0 * 300 = 0 因此,使用整數(shù)除,應當特別小心。,2. 自反算術賦值運算符 a = a + b 它的作用是將變量a的值加上變量b的值,再送回到變量a中。為此C語言為這種運算提供了一種簡潔形式: a + = b 這種復合運算符稱為自反算術賦值運算符。 - = (自反減賦值) * = (自反乘賦值) / = (自反除賦值) % = (自反模賦值) 自反算術賦值的結合方向與賦值運算符一樣,為自右向左。另外,它的優(yōu)先級別相當?shù)?,與賦值是同一級別。例如表達式語句:,c = b * = a + 2;,相當于如下兩個表達式語句:,b = b * (a + 2); c = b;,3. 自加和自減運算 自反算術賦值運算中有兩種更特殊的情況,即: i = i + 1 即 i += 1 和 i = i - 1即 i -= 1 這是兩種極為常用的操作。把i稱為計數(shù)器,用來記錄完成某一工作的次數(shù)。C語言為它們專門提供了兩個更簡潔的運算符: i +或+ i 和 i -或- i 前一種(i +和i -)稱為后綴形式;后一種(+ i和- i)稱為前綴形式,都稱為自加或自減運算符。,例如:,int i = 5; i +; y = i;,與,int i = 5; +

溫馨提示

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

最新文檔

評論

0/150

提交評論