c語言課件(非常詳細(xì))_第1頁
已閱讀1頁,還剩604頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、C語言程序設(shè)計(jì),大學(xué)計(jì)算機(jī)公共基礎(chǔ)課,2,課程介紹,課程性質(zhì):大學(xué)計(jì)算機(jī)公共基礎(chǔ)課(必修)課程內(nèi)容C語言程序設(shè)計(jì)的基本方法和技巧預(yù)備知識《計(jì)算機(jī)基礎(chǔ)》教材《C語言程序設(shè)計(jì)教程》汪同慶 張 華 楊先娣 主編 機(jī)械工業(yè)出版社《C語言程序設(shè)計(jì)實(shí)驗(yàn)教程》汪同慶 關(guān)煥梅 湯 潔 主編 機(jī)械工業(yè)出版社,C語言程序設(shè)計(jì),3,授課計(jì)劃,C語言程序設(shè)計(jì),4,考試與考核辦法,學(xué)分:3學(xué)分學(xué)時(shí):72(講課

2、36+實(shí)驗(yàn)36)總評成績 = 平時(shí)成績×#% + 期末考試成績×#%平時(shí)成績:(實(shí)驗(yàn),單元測驗(yàn))期末考試成績,C語言程序設(shè)計(jì),第一講 C語言概述,C 語言程序設(shè)計(jì),6,第一講 C語言概述,預(yù)備知識計(jì)算機(jī)組成和工作原理計(jì)算機(jī)語言和程序C語言的簡史為什么學(xué)習(xí)和使用C語言C語言程序的開發(fā)過程C語言編程環(huán)境C語言編程實(shí)驗(yàn)環(huán)境,C語言程序設(shè)計(jì),7,計(jì)算機(jī),計(jì)算機(jī)(Computer)能進(jìn)行計(jì)算和邏輯判斷的設(shè)

3、備在一組指令(instructions)——程序(programs)的控制下處理數(shù)據(jù)硬件(Hardware)組成計(jì)算機(jī)的各種物理部件鍵盤、鼠標(biāo)、顯示器、內(nèi)存、硬盤、光驅(qū)等等軟件(Software)計(jì)算機(jī)中運(yùn)行的程序和數(shù)據(jù),C語言概述,8,計(jì)算機(jī)的組成,計(jì)算機(jī)包括六大部件輸入單元(Input unit)從輸入設(shè)備(鍵盤、鼠標(biāo))獲得數(shù)據(jù)輸出單元(Output unit)把數(shù)據(jù)輸出到輸出設(shè)備(顯示器、打印機(jī)等)內(nèi)存(Me

4、mory unit)臨時(shí)存儲正在處理的數(shù)據(jù)和運(yùn)行的程序可以快速地訪問容量不大,C語言概述,9,計(jì)算機(jī)的組成,中央處理單元(Central processing unit, CPU)算術(shù)邏輯單元(Arithmetic and logic unit, ALU)進(jìn)行算術(shù)運(yùn)算和邏輯判斷控制器(Control unit)管理和協(xié)調(diào)計(jì)算機(jī)的其它部件輔助存儲器(Secondary storage unit)保存需長期存儲的數(shù)據(jù)和非活

5、動的程序保存時(shí)間長價(jià)格便宜、容量大例如硬盤、光盤、磁帶,C語言概述,10,計(jì)算機(jī)的工作原理,六大部件緊密協(xié)作,C語言概述,,,,,11,計(jì)算機(jī)的工作原理,CPU負(fù)責(zé)執(zhí)行程序從內(nèi)存中讀取一條指令執(zhí)行該指令從內(nèi)存中讀取下一條指令并執(zhí)行……一個(gè)主頻為1GHz的CPU可以在一秒鐘內(nèi)進(jìn)行大約一億次這樣的操作 CPU有自己的工作區(qū):包括若干個(gè)寄存器(Registers)CPU只能理解有限的指令(CPU的指令集)指令能夠完成的任

6、務(wù)是具體的例如,把一個(gè)數(shù)從內(nèi)存移動到某一個(gè)寄存器,C語言概述,12,計(jì)算機(jī)程序和語言,存儲在計(jì)算機(jī)中的一切內(nèi)容都是二進(jìn)制的數(shù)字形式數(shù)據(jù):數(shù)、字符、圖片、聲音、動畫等等指令計(jì)算機(jī)程序確切告訴計(jì)算機(jī)如何完成某項(xiàng)任務(wù)的指令序列就是一套程序計(jì)算機(jī)語言用來編寫程序,C語言概述,#include #include void main(){ float a,b,c,p,disc,q,x1,x2; scanf("%

7、f%f%f",&a,&b,&c); p=-b/(2*a); disc=b*b-4*a*c; q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("x1=%f,x2=%f",x1,x2);},011000110000011001100101110011000000110000011011011000110000011001

8、100101110011000000110000011011,13,機(jī)器語言,數(shù)字形式的指令碼就是機(jī)器語言(Machine language)用機(jī)器語言編寫的程序能夠被計(jì)算機(jī)直接理解和執(zhí)行但是,編寫程序非常費(fèi)力例如,編寫程序完成兩個(gè)數(shù)相加的任務(wù)需要以下幾步把地址為2000的內(nèi)存單元中的數(shù)復(fù)制到寄存器1;把地址為2004的內(nèi)存單元中的數(shù)復(fù)制到寄存器2;把寄存器2中的數(shù)與寄存器1中的數(shù)相加,結(jié)果保留在寄存器1中;把寄存器1中

9、的數(shù)復(fù)制到地址為2008的內(nèi)存單元中。,C語言概述,011000110000011001100101110011000000110000011011,14,匯編語言,符號化的指令碼就是匯編語言(Assembly language)例如,完成兩個(gè)數(shù)相加的匯編語言程序匯編語言程序必須被翻譯成機(jī)器語言程序才能被執(zhí)行匯編程序(Assembler)充當(dāng)“翻譯”,C語言概述,ldreg n1, r1把變量n1的值復(fù)制到寄存器1(

10、r1);ldreg n2, r2把變量n2的值復(fù)制到寄存器2(r2);add r1, r2把r2中的數(shù)與r1中的數(shù)相加,結(jié)果保留在r1中;store r1, sum把r1中的數(shù)復(fù)制到變量sum。,15,高級語言,高級語言(High-level language)使用數(shù)學(xué)符號和類似英語的單詞例如,完成兩個(gè)數(shù)相加的C語言程序從多方面提高了編程效率不必考慮CPU的指令集不必考慮CPU實(shí)現(xiàn)特定任務(wù)的精確步驟采用接近人類

11、思考問題的方式去書寫程序高級語言程序必須被編譯程序(Compiler)翻譯成機(jī)器語言程序才能被執(zhí)行,C語言概述,sum = n1 + n2;,16,C語言的簡史,C語言的起源美國貝爾實(shí)驗(yàn)室的Dennis Ritchie在1972年開發(fā)的用于設(shè)計(jì)UNIX操作系統(tǒng)其前身是B語言(Ken Thompson于1970年為第一個(gè)UNIX系統(tǒng)開發(fā)的語言)C語言的標(biāo)準(zhǔn)美國國家標(biāo)準(zhǔn)化組織(ANSI)于1983年成立了一個(gè)委員會(X3J11)

12、,以確定C語言的標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)(ANSI C)于1989年被正式采用,即C89。最新的標(biāo)準(zhǔn)是C99標(biāo)準(zhǔn)。目前,大多數(shù)C語言編譯器沒有完全實(shí)現(xiàn)C99的所有修改。,C語言概述,17,為什么學(xué)習(xí)和使用C語言,C語言的特點(diǎn)C語言是一種強(qiáng)大而靈活的語言,可以用來編寫任意復(fù)雜的程序。C語言簡潔、緊湊,使用方便、靈活。C語言程序效率高、運(yùn)行速度快。C語言是可移植的。C語言很適合結(jié)構(gòu)化程序設(shè)計(jì),因而要求用戶以功能模塊的方式來思考問題。C

13、語言具有自我擴(kuò)展能力。,C語言概述,18,為什么學(xué)習(xí)和使用C語言,C與C++(C加加,see-plus-plus)貝爾實(shí)驗(yàn)室于二十世紀(jì)八十年代在C語言的基礎(chǔ)上開發(fā)的。C++是C語言的超集,包含了C語言的所有內(nèi)容,同時(shí)增加了面向?qū)ο缶幊谭矫娴膬?nèi)容。C與Java(爪哇)Sun公司于1995年發(fā)布的面向?qū)ο缶幊陶Z言。Java也是基于C語言的。C與C#(see-sharp)微軟在2000年6月與.NET平臺一同推出。C#也是從C

14、語言派生的一種面向?qū)ο笳Z言。,C語言概述,19,C語言程序的開發(fā)過程,一般分成五個(gè)步驟定義程序目標(biāo)設(shè)計(jì)程序編寫代碼編譯運(yùn)行、測試和調(diào)試程序,C語言概述,20,C語言程序的開發(fā)過程,定義程序目標(biāo)在開始解決問題之前,程序的開發(fā)人員必須徹底了解問題的是什么,對即將要?jiǎng)?chuàng)建的程序要做的事情有個(gè)清晰的想法。這需要仔細(xì)考慮以下問題程序需要什么信息程序需要執(zhí)行哪些計(jì)算和操作程序應(yīng)該報(bào)告什么信息例如,計(jì)算任意一個(gè)圓環(huán)的面積提出問題

15、,明確目標(biāo)圓環(huán)是什么?如何計(jì)算?計(jì)算精度?,C語言概述,21,C語言程序的開發(fā)過程,設(shè)計(jì)程序決定程序如何去解決問題。需要考慮如何給程序提供必要的數(shù)據(jù)程序中如何表示數(shù)據(jù)用什么方法來處理數(shù)據(jù)程序如何組織程序怎樣報(bào)告結(jié)果完成這個(gè)程序需要多長時(shí)間應(yīng)該用一般的概念考慮設(shè)計(jì)中的問題,而不是考慮具體的代碼。,C語言概述,22,C語言程序的開發(fā)過程,編寫代碼編寫代碼來實(shí)現(xiàn)前面的設(shè)計(jì),即用某一門語言來表示程序設(shè)計(jì)。需要開發(fā)人員熟練

16、掌握該語言的知識。可以在草稿紙上勾畫自己的想法或書寫代碼,但最終必須將代碼輸入計(jì)算機(jī)。輸入代碼所采用的機(jī)制則取決于具體的編程環(huán)境。一般來說,需要使用文本編輯器(例如Windows的記事本程序)來創(chuàng)建一種文件,稱為源文件源文件包含程序設(shè)計(jì)的C語言表示形式(稱為源程序或源代碼),C語言概述,23,C語言程序的開發(fā)過程,編譯把C語言源程序轉(zhuǎn)換成機(jī)器語言表示的程序。這種程序可以直接被計(jì)算機(jī)理解和執(zhí)行,所以稱之為可執(zhí)行程序,放在可執(zhí)行

17、文件中。編譯的具體細(xì)節(jié)取決于使用的編程環(huán)境。C語言分兩步完成這一工作:編譯和鏈接。編譯器將源代碼轉(zhuǎn)換為目標(biāo)代碼,并存在目標(biāo)文件中。鏈接器將目標(biāo)代碼與其他代碼結(jié)合起來生成可執(zhí)行文件。這種把編譯和鏈接分開來做的方法便于程序的模塊化。可以分別編譯程序的各個(gè)模塊,然后用鏈接器把編譯過的模塊結(jié)合起來。這樣,如果需要改變一個(gè)模塊,則不需要重新編譯所有其他模塊。,C語言概述,24,C語言程序的開發(fā)過程,運(yùn)行、測試和調(diào)試程序運(yùn)行包含可執(zhí)

18、行程序的文件,觀察運(yùn)行的結(jié)果。在不同的系統(tǒng)中運(yùn)行程序的方式可能不同。例如,Windows的控制臺和資源管理器。應(yīng)該對程序進(jìn)行仔細(xì)的檢查,看程序是否在做該做的事。比較好的做法是為驗(yàn)證程序的正確性設(shè)計(jì)一個(gè)測試計(jì)劃。越早做越好,因?yàn)樗兄诶砬宄绦騿T的思路。程序中的錯(cuò)誤被稱為bug,調(diào)試(Debug)就是要發(fā)現(xiàn)并修正錯(cuò)誤。,C語言概述,25,C語言的編程環(huán)境,開發(fā)程序的具體操作取決于使用的編程環(huán)境因?yàn)镃語言是可移植的,所以它在許

19、多環(huán)境中都是可用的。例如UNIX、Linux、Windows和MS-DOS。C語言編程環(huán)境包括一系列程序。編輯器編譯器鏈接器運(yùn)行和調(diào)試環(huán)境,C語言概述,26,C語言的編程環(huán)境,編輯器使用一個(gè)文本編輯器程序輸入源代碼,并將代碼保存在源文件中。一般,C程序的源文件名稱的擴(kuò)展名是.c例如welcometoyou.c和Hello.c。該名稱應(yīng)該遵循特定的操作系統(tǒng)的命名規(guī)則。例如,MS-DOS要求基本名包含的字符數(shù)不能大于8

20、,所以welcometoyou.c不是合法的DOS文件名。Windows允許長文件名,所以welcometoyou.c是合法的Windows文件名。,C語言概述,27,C語言的編程環(huán)境,編譯器編譯器接收源文件,生成目標(biāo)文件,擴(kuò)展名為.obj或.o。編譯器還會檢查輸入的程序是否是有效的C語言程序。如果編譯器發(fā)現(xiàn)錯(cuò)誤,就會報(bào)告出錯(cuò),且不能生成可執(zhí)行程序。這時(shí)就必須修改錯(cuò)誤,然后再編譯。顯然,為了能迅速找到錯(cuò)誤,理解特定編譯器的報(bào)

21、錯(cuò)信息是一項(xiàng)有用的技能。,C語言概述,28,C語言的編程環(huán)境,鏈接器目標(biāo)代碼雖然已經(jīng)是機(jī)器代碼,但還不能被執(zhí)行。缺少下面兩個(gè)東西啟動代碼:相當(dāng)于程序和操作系統(tǒng)之間的接口。 庫函數(shù)的代碼:庫文件中包含許多函數(shù)的目標(biāo)代碼。 鏈接器的作用就是將這三個(gè)元素(目標(biāo)代碼、啟動代碼和庫代碼)結(jié)合起來,并將它們放在一個(gè)文件中,即可執(zhí)行文件,擴(kuò)展名為.exe或.out。,C語言概述,29,Windows的C語言編程環(huán)境,Windows的C語言編

22、程環(huán)境Windows并不包含C編譯器,所以需要獲得并安裝一個(gè)C編譯器。 許多現(xiàn)代的編譯器都是集成開發(fā)環(huán)境(或叫IDE)的一部分。包括一個(gè)編輯器、編譯器、鏈接器和包括一個(gè)符號調(diào)試程序在內(nèi)的運(yùn)行支持系統(tǒng)。許多軟件廠商都提供了基于Windows的集成開發(fā)環(huán)境Microsoft公司的Visual C/C++Borland公司的C/C++ BuilderMetrowerks公司的Code Warrior目前,大多數(shù)IDE把C和C+

23、+編譯器結(jié)合在一起。,C語言概述,30,DOS的C語言編程環(huán)境,DOS的C語言編程環(huán)境基于DOS的IDE Borland公司的Turbo CBorland公司的Borland C++許多Windows上的IDE也提供了在DOS命令行環(huán)境中編程的命令行工具。,C語言概述,31,C語言編程實(shí)驗(yàn)環(huán)境簡介,上機(jī)實(shí)驗(yàn)環(huán)境簡介舉例演示Visual C++ 6.0的基本操作啟動創(chuàng)建源文件構(gòu)建工程(編譯、鏈接)運(yùn)行程序,C語言概述,3

24、2,小結(jié),C是一種通用的程序設(shè)計(jì)語言,具有許多突出的優(yōu)點(diǎn)。程序設(shè)計(jì)的初學(xué)者應(yīng)該嚴(yán)格按照C語言程序的開發(fā)過程進(jìn)行訓(xùn)練,以便盡快掌握程序設(shè)計(jì)的基本原則。C是一種需要編譯的高級語言。進(jìn)行C語言編程的具體操作依賴于所使用的編程環(huán)境。程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)的課程,在學(xué)習(xí)過程中必須十分重視實(shí)驗(yàn)環(huán)節(jié)。,C語言概述,第二講 C語言快速入門,34,第二講 C語言快速入門,C語言程序的基本結(jié)構(gòu)C語言的字符集和關(guān)鍵字Visual C++ 6.0

25、編程環(huán)境,C語言程序設(shè)計(jì),35,C語言程序的基本結(jié)構(gòu),一個(gè)簡單的C語言程序問題:在屏幕上顯示一行文字:“Hello World!”源程序運(yùn)行結(jié)果,C語言快速入門,/* 在屏幕上顯示Hello World! */#include void main() /* 定義主函數(shù) */{ printf("Hello World!\n"); },Hello World!,36,C語言程序

26、的基本結(jié)構(gòu),一個(gè)簡單的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,/* 在屏幕上顯示Hello World! */#include void main() /* 定義主函數(shù) */{ printf("Hello World!\n"); },注釋部分以增加程序的可讀性。不被執(zhí)行。,37,C語言程序的基本結(jié)構(gòu),一個(gè)簡單的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,/* 在屏幕上顯示Hello W

27、orld! */#include void main() /* 定義主函數(shù) */{ printf("Hello World!\n"); },預(yù)處理命令 程序中包含某一文件內(nèi)容。 “stdio.h”為標(biāo)準(zhǔn)輸入輸出函數(shù)頭文件名。,38,C語言程序的基本結(jié)構(gòu),一個(gè)簡單的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,/* 在屏幕上顯示Hello World! */#include void m

28、ain() /* 定義主函數(shù) */{ printf("Hello World!\n"); },函數(shù) C程序由函數(shù)組成。一個(gè)C程序有且僅有一個(gè)主函數(shù)(main函數(shù))。,39,C語言程序的基本結(jié)構(gòu),一個(gè)簡單的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,/* 在屏幕上顯示Hello World! */#include void main() /* 定義主函數(shù) */{ pr

29、intf("Hello World!\n"); },函數(shù)說明 說明函數(shù)類型、函數(shù)名和函數(shù)參數(shù)。,40,C語言程序的基本結(jié)構(gòu),一個(gè)簡單的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,/* 在屏幕上顯示Hello World! */#include void main() /* 定義主函數(shù) */{ printf("Hello World!\n"); },函數(shù)體 包括變

30、量說明和語句執(zhí)行部分。,41,C語言程序的基本結(jié)構(gòu),一個(gè)簡單的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,/* 在屏幕上顯示Hello World! */#include void main() /* 定義主函數(shù) */{ printf("Hello World!\n"); },函數(shù)調(diào)用語句 格式輸出函數(shù)printf( )。 輸出“Hello world!”。,Hello World!,4

31、2,C語言程序的基本結(jié)構(gòu),含有算術(shù)運(yùn)算的C語言程序問題:求方程 的根(設(shè) )。源程序,C語言快速入門,#include #include void main(){ float a,b,c,p,disc,q,x1,x2; scanf("%f%f%f",&a,&b,&c); p=-b/(2*a);

32、 disc=b*b-4*a*c; q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("x1=%f,x2=%f",x1,x2);},43,C語言程序的基本結(jié)構(gòu),含有算術(shù)運(yùn)算的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,#include #include void main(){ float a,b,c,p,disc,q,x1,x2; scanf("

33、%f%f%f",&a,&b,&c); p=-b/(2*a); disc=b*b-4*a*c; q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("x1=%f,x2=%f",x1,x2);},預(yù)處理命令,44,C語言程序的基本結(jié)構(gòu),含有算術(shù)運(yùn)算的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,#include #include v

34、oid main(){ float a,b,c,p,disc,q,x1,x2; scanf("%f%f%f",&a,&b,&c); p=-b/(2*a); disc=b*b-4*a*c; q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("x1=%f,x2=%f",x1,x2);},函數(shù) 一個(gè)主函數(shù)(ma

35、in函數(shù))。,45,C語言程序的基本結(jié)構(gòu),含有算術(shù)運(yùn)算的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,#include #include void main(){ float a,b,c,p,disc,q,x1,x2; scanf("%f%f%f",&a,&b,&c); p=-b/(2*a); disc=b*b-4*a*c; q=sqrt(disc)/(2*a); x

36、1=p+q; x2=p-q; printf("x1=%f,x2=%f",x1,x2);},函數(shù)說明部分,46,C語言程序的基本結(jié)構(gòu),含有算術(shù)運(yùn)算的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,#include #include void main(){ float a,b,c,p,disc,q,x1,x2; scanf("%f%f%f",&a,&b,&c);

37、 p=-b/(2*a); disc=b*b-4*a*c; q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("x1=%f,x2=%f",x1,x2);},函數(shù)體 變量說明部分 執(zhí)行部分,47,C語言程序的基本結(jié)構(gòu),含有算術(shù)運(yùn)算的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,#include #include void main(){ float

38、a,b,c,p,disc,q,x1,x2; scanf("%f%f%f",&a,&b,&c); p=-b/(2*a); disc=b*b-4*a*c; q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("x1=%f,x2=%f",x1,x2);},運(yùn)行程序 鍵盤輸入a、b、c的值; 屏幕顯示x1和x2的值

39、。,1 0 -4x1=2.000000,x2=-2.000000,48,C語言程序的基本結(jié)構(gòu),包含多個(gè)函數(shù)的C語言程序問題:求|a|+|b|的值。源程序,C語言快速入門,#includefloat absv(float x){ float y; y=x>=0?x:-x; return y;}void main(){ float a,b,c; printf("input a,b:\n&q

40、uot;); scanf("%f%f",&a,&b); c=absv(a)+absv(b); printf("|a|+|b|=%f\n",c);},49,C語言程序的基本結(jié)構(gòu),包含多個(gè)函數(shù)的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,#includefloat absv(float x){ float y; y=x>=0?x:-x; return

41、y;}void main(){ float a,b,c; printf("input a,b:\n"); scanf("%f%f",&a,&b); c=absv(a)+absv(b); printf("|a|+|b|=%f\n",c);},程序由兩個(gè)函數(shù)組成: absv函數(shù) main函數(shù),50,C語言程序的基本結(jié)構(gòu),包含多個(gè)函數(shù)的

42、C語言程序程序結(jié)構(gòu)分析,C語言快速入門,#includefloat absv(float x){ float y; y=x>=0?x:-x; return y;}void main(){ float a,b,c; printf("input a,b:\n"); scanf("%f%f",&a,&b); c=absv(a)+absv(b)

43、; printf("|a|+|b|=%f\n",c);},調(diào)用absv函數(shù)求絕對值。,51,C語言程序的基本結(jié)構(gòu),包含多個(gè)函數(shù)的C語言程序程序結(jié)構(gòu)分析,C語言快速入門,#includefloat absv(float x){ float y; y=x>=0?x:-x; return y;}void main(){ float a,b,c; printf("inpu

44、t a,b:\n"); scanf("%f%f",&a,&b); c=absv(a)+absv(b); printf("|a|+|b|=%f\n",c);},運(yùn)行程序 屏幕顯示提示信息; 鍵盤輸入a、b的值; 屏幕顯示a、b絕對值之和。,input a,b:-5 13|a|+|b|=18.000000,52,C語言程序的基本結(jié)構(gòu),C語言程序的

45、基本結(jié)構(gòu)小結(jié),C語言快速入門,⑴一個(gè)C程序由一個(gè)或多個(gè)函數(shù)組成,但有且僅有一個(gè)主函數(shù)(main函數(shù));main函數(shù)是程序執(zhí)行的入口,可置于程序的任何位置。⑵程序中可以有預(yù)處理命令(如:include 命令)。預(yù)處理命令通常放在程序的最前面。⑶每個(gè)語句以分號結(jié)尾;預(yù)處理命令、函數(shù)頭和花括號“}”之后不能加分號。⑷ 函數(shù)包括函數(shù)的說明部分和函數(shù)體;函數(shù)體包括變量說明部分和執(zhí)行部分;函數(shù)體由一對花括號“{ }”括起來。 ⑸括在/*…*

46、/內(nèi)的文本為注釋。⑹一行可以寫幾個(gè)語句,一個(gè)語句也可以寫在多行上。⑺程序區(qū)分大小寫字母。一般變量、語句等用小寫字母書寫;符號常量、宏名等用大寫字母書寫。⑻標(biāo)識符和保留字之間須加空格以示分隔。,53,C語言的字符集,C語言源程序中使用的字符來自C語言的字符集。字符集(Character set)——來自ASCII表52個(gè)大小寫字母(Letters)A B C D E F G H I J K L M N O P Q R S T

47、U V W X Y Za b c d e f g h i j k l m n o p q r s t u v w x y z10個(gè)數(shù)字(Digits)0 1 2 3 4 5 6 7 8 9空白符(Blanks)空格符、制表符、回車符、換行符圖形符號(Graphic characters)! # % ^ & * ( _ ) - + = ~ [ ] ' | \ ; : " {} , . / ?,C語

48、言快速入門,54,C語言的關(guān)鍵字,關(guān)鍵字(Keywords)是C語言中的詞匯。也稱為保留字(Reserved words)類型說明int、long、short、float、double、char、unsigned、signed、const、void、volatile、enum 、struct、union語句定義if、else、goto、switch、case、do、while、for、continue、break、retu

49、rn、default、typedef存儲類別說明auto、register、extern、static長度運(yùn)算符sizeof,C語言快速入門,55,C語言的標(biāo)識符,標(biāo)識符(Identifiers)是程序中引用對象的名稱。用來標(biāo)識變量、符號常量、數(shù)組、函數(shù)、結(jié)構(gòu)體、共用體、自定義類型等。命名規(guī)則只能包括大小寫字母、數(shù)字和下劃線;首字符必須是字母或下劃線;一般內(nèi)部標(biāo)識符的前31個(gè)字符有效,而外部標(biāo)識符的前6個(gè)字符有效;

50、(視具體編譯器的規(guī)定)不能與關(guān)鍵字相同。,C語言快速入門,56,Visual C++ 6.0編程環(huán)境,舉例演示Visual C++ 6.0的基本操作創(chuàng)建工作區(qū)創(chuàng)建工程(程序)并添加到工作區(qū)創(chuàng)建源文件并添加到工程構(gòu)建工程(編譯、鏈接)運(yùn)行程序,C語言快速入門,57,程序的測試與調(diào)試,程序錯(cuò)誤語法錯(cuò)誤未遵循C的語法規(guī)則。編譯器可以檢查。運(yùn)行時(shí)錯(cuò)誤在程序運(yùn)行時(shí)執(zhí)行了無法處理的操作。邏輯錯(cuò)誤程序不能按照預(yù)期的方式運(yùn)行,

51、不能產(chǎn)生預(yù)期的結(jié)果。,C語言快速入門,58,程序的測試與調(diào)試,程序測試審查和運(yùn)行程序,檢測程序是否存在錯(cuò)誤。測試步驟在編譯前仔細(xì)檢查程序的源代碼,看看是否有明顯的錯(cuò)誤。查看編譯器發(fā)現(xiàn)的語法錯(cuò)誤。對于運(yùn)行時(shí)錯(cuò)誤和邏輯錯(cuò)誤可以采用正確輸出測試。想找出所有錯(cuò)誤是不切實(shí)際的。,C語言快速入門,59,程序的測試與調(diào)試,程序調(diào)試隔離和修正錯(cuò)誤。調(diào)試方法采用手工方式來跟蹤程序。在程序中的關(guān)鍵點(diǎn)放置輸出語句來顯示變量的值。使用調(diào)試

52、器。,C語言快速入門,60,小結(jié),C程序的基本結(jié)構(gòu)C語言程序是由一個(gè)或多個(gè)函數(shù)組成的。函數(shù)可以是標(biāo)準(zhǔn)庫函數(shù)和自定義的函數(shù)。C語言的語句可以包含一個(gè)表達(dá)式,也可以包含一個(gè)函數(shù)調(diào)用,以一個(gè)分號作為結(jié)束標(biāo)志。C語言中的變量在使用之前必須先聲明,通過聲明語句中為變量指定一個(gè)名字和數(shù)據(jù)類型??梢酝ㄟ^賦值運(yùn)算改變變量的值。C語言可以使用scanf()函數(shù)和printf()函數(shù)輸入和輸出數(shù)據(jù)。,C語言快速入門,61,小結(jié),編譯器可以發(fā)現(xiàn)程序中

53、的語法錯(cuò)誤,但是程序中的運(yùn)行時(shí)錯(cuò)誤和邏輯錯(cuò)誤只有在程序運(yùn)行時(shí)才表現(xiàn)出來。檢測運(yùn)行時(shí)錯(cuò)誤和邏輯錯(cuò)誤的一種簡單實(shí)用的方法是跟蹤程序的運(yùn)行狀態(tài),即程序每執(zhí)行一步之后所有或主要變量的值。,C語言快速入門,第三講 基本數(shù)據(jù)類型,63,第三講 基本數(shù)據(jù)類型,引例變量與常量預(yù)備知識內(nèi)儲存器的組織數(shù)據(jù)類型基本數(shù)據(jù)類型整數(shù)類型字符浮點(diǎn)類型,C語言程序設(shè)計(jì),64,引例,引例問題計(jì)算任意一個(gè)圓的面積。源程序(cw02-01.c),基本數(shù)

54、據(jù)類型,#include void main() { float r, area; //定義變量 scanf(“%f”,&r); //讀取輸入的半徑 area = 3.14*r*r; //計(jì)算圓的面積 printf(“area=%f”,area); //輸出},1area=3.140000,,,area,r,area = Лr2,65,變量與常量,數(shù)據(jù)(Data)程序需要使用數(shù)據(jù)。

55、數(shù)據(jù)是信息的載體。數(shù)據(jù)有多種形式:數(shù)、字符、圖片等。常量(Constants)在程序運(yùn)行之前可以預(yù)先設(shè)定,并在整個(gè)運(yùn)行過程中沒有變化的數(shù)據(jù)。例如引例中的圓周率3.14。變量(Variables)在程序運(yùn)行過程中可能變化或被賦值的數(shù)據(jù)。例如引例中的半徑和面積。,基本數(shù)據(jù)類型,66,數(shù)據(jù)類型,數(shù)據(jù)類型的作用決定數(shù)據(jù)的存儲方式和占用的存儲空間的大小。決定可以進(jìn)行的操作。C語言的數(shù)據(jù)類型基本類型整型(integer)

56、,字符型(character),浮點(diǎn)型(floating-point),枚舉類型(enumeration)構(gòu)造類型結(jié)構(gòu)體(structure),共用體(union),數(shù)組(array)指針類型(pointer)空類型(void),基本數(shù)據(jù)類型,67,,位、字節(jié)和字,內(nèi)存儲器的組織,基本數(shù)據(jù)類型,,位(bit):最小的存儲單位,可以容納兩個(gè)值之一,即0或1。,,,,2000,2001,2002,字節(jié)(Byte):基本的存儲單位,

57、8位。,字(word):自然的存儲單位,包含若干個(gè)字節(jié)。例如32位機(jī)的一個(gè)字就是32位。,,地址:以字節(jié)為單位從0開始編號。,68,整數(shù)的存儲方式,有符號的正整數(shù)在內(nèi)存中以二進(jìn)制補(bǔ)碼形式存放。正整數(shù)的補(bǔ)碼與原碼相同。例如:10,基本數(shù)據(jù)類型,符號位,,,數(shù)軸,0,215-1=32767,可表示的數(shù)的范圍,,-215=-32768,69,整數(shù)的存儲方式,有符號的負(fù)整數(shù)在內(nèi)存中以二進(jìn)制補(bǔ)碼的形式存放。例如:-10,基本數(shù)據(jù)類型,符

58、號位,70,整數(shù)的存儲方式,無符號整數(shù)所有二進(jìn)制位都存放數(shù)值。例如:65535,基本數(shù)據(jù)類型,,,0,216-1=65535,可表示的數(shù)的范圍,71,整數(shù)的類型,C語言提供多種整數(shù)類型為程序員提供了針對不同用途的多種選擇。,基本數(shù)據(jù)類型,C標(biāo)準(zhǔn)只規(guī)定:short ≤ int ≤ long最大最小值參考,僅供參考,實(shí)際值與所使用的操作系統(tǒng)、編譯系統(tǒng)、機(jī)器有關(guān)。,72,整型常量,整型常量有三種形式:十進(jìn)制(decimal)整數(shù)1

59、2 65 65535八進(jìn)制(octal)整數(shù):帶前綴 0(zero)014 0101 0177777十六進(jìn)制(hexadecimal)整數(shù):帶前綴 0x 或 0X0xc 0x41 0xffff默認(rèn)類型是int,即有符號的基本整型??梢约由虾缶Y u 或 U 表示無符號整數(shù),或者 l 或 L 表示長整數(shù)。0xb5Lu,基本數(shù)據(jù)類型,73,整型變量,聲明變量(Declaration)變量在使用之

60、前必須被聲明。聲明語句的格式:舉例,基本數(shù)據(jù)類型, [,[,...]];,int counter;int width, height;short x, y;long number;,變量聲明創(chuàng)建了變量:為變量分配了存儲空間。,,,height,74,整型變量,初始化(Initialize)變量為變量賦一個(gè)初始值。可以在聲明語句中初始化變量。舉例變量獲得值的方法直接賦值輸入初始化,基本數(shù)據(jù)類型,int co

61、unter = 0;int width = 352, height = 288;,,初始化式,,288,height,75,整型變量,輸出變量的值可以使用printf()函數(shù)。與int類型對應(yīng)的格式說明符是%d。舉例(cw02-02a.c),基本數(shù)據(jù)類型,#include void main() { int a, b; a=32767; b=-32768; printf("a=%d,b=%d\n&q

62、uot;, a, b);},a=32767,b=-32768,76,整數(shù)的溢出,溢出整數(shù)太大,超出了整數(shù)類型的數(shù)值范圍。使用printf() 時(shí)與unsigned int類型對應(yīng)的格式說明符是%u。舉例(cw02-02b.c),基本數(shù)據(jù)類型,#include void main() { int a, b; unsigned c, d; a = 2147483647; b = a+1; c = 4294967

63、295; d = c+1; printf("a=%d,b=%d\n", a, b); printf("c=%u,d=%u", c, d);},a=2147483647,b=-2147483648c=4294967295,d=0,???,77,整數(shù)的溢出,溢出結(jié)果分析結(jié)論a+1 的結(jié)果(2147483648) 超出了基本整型變量 b 所能容納(表示)的數(shù)值范圍(-214

64、7483648~2147483647)。請分析d的結(jié)果。,基本數(shù)據(jù)類型,0 1 1 1 1 1 1 1...1 1 1 1 1 1 1,1 0 0 0 0 0 0 0...0 0 0 0 0 0 0,a(2147483647),,1 0 0 0 0 0 0 0...0 0 0 0 0 0 0,,a+1(2147483648),b(-2147483648),,,,,,12,,加正數(shù),減正數(shù),,78,字符的存儲方式,字符編碼計(jì)算機(jī)使用一

65、種數(shù)字編碼(整數(shù))來表示字符,每一個(gè)字符都對應(yīng)一個(gè)特定的整數(shù)。常用的編碼是ASCII(美國信息交換用標(biāo)準(zhǔn)碼)。7位二進(jìn)制數(shù),十進(jìn)制碼值范圍從0到127。一般用一個(gè)字節(jié)保存,最高位為0。字符的存儲方式與整數(shù)相同舉例字母A的ASCII碼值為65,那么在內(nèi)存中以65的二進(jìn)制形式存儲,且占一個(gè)字節(jié)。,基本數(shù)據(jù)類型,01000001,79,字符的類型和字符變量,C語言的字符類型:char占一個(gè)字節(jié);可視為一個(gè)有符號的整數(shù)。舉

66、例(cw02-03.c),基本數(shù)據(jù)類型,#include void main() { char c1, c2; //聲明字符變量 c1 = 97; //把一個(gè)整數(shù)賦值給字符變量 c2 = c1-32; //字符變量可以進(jìn)行算術(shù)運(yùn)算 printf("c1=%c,c2=%c\n", c1, c2); printf("c1=%d,c2=%d\n", c1, c2);},c1

67、=a,c2=Ac1=97,c2=65,80,字符常量,字符常量用單引號括起來的一個(gè)字符。'x' '9' '+‘C語言將字符常量視為int類型。舉例(cw02-04.c)如果int類型為16位,char類型為8位,那么對于’bc’,將把’b’和’c’的ASCII碼值存儲在兩個(gè)字節(jié)中,并把’c’賦值給變量c2。注意:不同系統(tǒng)處理方式不同,結(jié)果不同。,基本數(shù)據(jù)類型,

68、char c1, c2;c1=‘a(chǎn)’;c2=‘bc’;,,0 1 1 0 0 0 0 1,c1,0 1 1 0 0 0 1 1,c2,0 1 1 0 0 0 1 1,0 1 1 0 0 0 1 0,‘bc’,L,H,97,99,99,98,81,字符常量,轉(zhuǎn)義字符(escape character)指代一些特殊的字符。(打印不出來的字符)舉例(cw02-05.c),基本數(shù)據(jù)類型,\a 警報(bào)\\ 反斜杠(\)\

69、b 退格\? 問號(?)\f 走紙\‘ 單引號(’)\n 換行\(zhòng)“ 雙引號(”)\r 回車\ooo 八進(jìn)制值(o表示一個(gè)八進(jìn)制數(shù)字)\t 水平制表符\xhh 十六進(jìn)制值(h表示一個(gè)十六進(jìn)制數(shù)字)\v 垂直制表符,#include void main(){ printf("a\tb\nc\bd\100\x40\n");},a???????bd@@,82,浮

70、點(diǎn)數(shù)的存儲方式,浮點(diǎn)數(shù)浮點(diǎn)型數(shù)據(jù)在內(nèi)存中按指數(shù)形式存放。例如:314.15 = 3.1415×102,基本數(shù)據(jù)類型,由此可見,尾數(shù)部分的寬度決定了有效數(shù)字的個(gè)數(shù)(即精度),階碼部分的寬度決定了數(shù)值范圍。,,科學(xué)計(jì)數(shù)法允許使用少量的數(shù)字表示很大范圍的數(shù)和很小的數(shù)。,83,浮點(diǎn)數(shù)的類型,浮點(diǎn)數(shù)也有多種類型類型名稱及典型大小,基本數(shù)據(jù)類型,S = ±1參考,僅供參考,實(shí)際值與所使用的操作系統(tǒng)、編譯系統(tǒng)、機(jī)器有關(guān)。,

71、,,數(shù)軸,0,可表示的正數(shù),,,可表示的負(fù)數(shù),84,浮點(diǎn)型常量,浮點(diǎn)型常量有兩種形式:十進(jìn)制形式12.3 .65 0.指數(shù)形式: 1.2e-2 .1E5 7E01.2×10-20.1×1057.0×100默認(rèn)類型是double??梢约由虾缶Y f 或 F 表示float類型,或者 l 或 L 表示long double類型,否則該常量是double類型。2.3f

溫馨提示

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

評論

0/150

提交評論