C語(yǔ)言課件完整版精華_第1頁(yè)
C語(yǔ)言課件完整版精華_第2頁(yè)
C語(yǔ)言課件完整版精華_第3頁(yè)
C語(yǔ)言課件完整版精華_第4頁(yè)
C語(yǔ)言課件完整版精華_第5頁(yè)
已閱讀5頁(yè),還剩479頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)計(jì)算機(jī)程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)語(yǔ)言) 2 1. 課堂要求很?chē)?yán)格。2. 多聽(tīng),適時(shí)做筆記。3. 上課不能講閑話(huà)。4. 課后認(rèn)真完成作業(yè)、實(shí)驗(yàn)報(bào)告。5. 有問(wèn)題,及時(shí)與老師聯(lián)系。教 學(xué) 要 求3選用教材與參考書(shū) 顧治華、陳天煌等顧治華、陳天煌等 2007.22007.2譚浩強(qiáng)譚浩強(qiáng) 4課程內(nèi)容課程內(nèi)容第一章第一章 C C語(yǔ)言程序設(shè)計(jì)概述語(yǔ)言程序設(shè)計(jì)概述 第二章第二章 算法及算法設(shè)計(jì)簡(jiǎn)介算法及算法設(shè)計(jì)簡(jiǎn)介 第三章第三章 數(shù)據(jù)描述與基本操作數(shù)據(jù)描述與基本操作第四章第四章 選擇結(jié)構(gòu)程序設(shè)計(jì)選擇結(jié)構(gòu)程序設(shè)計(jì) 第五章第五章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 第六章第六章 數(shù)組與指針數(shù)組與指

2、針第七章第七章 函數(shù)與模塊化程序設(shè)計(jì)方法函數(shù)與模塊化程序設(shè)計(jì)方法5第一章第一章 語(yǔ)言程序設(shè)計(jì)概述語(yǔ)言程序設(shè)計(jì)概述6 71.1 程序設(shè)計(jì)的概念程序設(shè)計(jì)的概念1.1.1 程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言1.1.2 程序設(shè)計(jì)的概念程序設(shè)計(jì)的概念8計(jì)算機(jī)計(jì)算機(jī)n計(jì)算機(jī)是用來(lái)延伸人的能力的工具,需要人來(lái)計(jì)算機(jī)是用來(lái)延伸人的能力的工具,需要人來(lái)駕馭駕馭n我們的職責(zé)是讓非計(jì)算機(jī)專(zhuān)業(yè)的人更容易駕馭我們的職責(zé)是讓非計(jì)算機(jī)專(zhuān)業(yè)的人更容易駕馭它它n完成這一目標(biāo)的主要手段之一就是完成這一目標(biāo)的主要手段之一就是“編程編程(Programming)”9計(jì)算機(jī)基本工作過(guò)程計(jì)算機(jī)基本工作過(guò)程n整個(gè)過(guò)程的執(zhí)行者是硬件,但硬件是受軟件控

3、制的整個(gè)過(guò)程的執(zhí)行者是硬件,但硬件是受軟件控制的n編程,就是編寫(xiě)軟件,使硬件按照人的意圖工作編程,就是編寫(xiě)軟件,使硬件按照人的意圖工作10計(jì)算機(jī)基本工作過(guò)程計(jì)算機(jī)基本工作過(guò)程輸入/輸出設(shè)備存儲(chǔ)器運(yùn)算器控制器源程序和輸入數(shù)據(jù)輸出結(jié)果取出數(shù)據(jù)存入數(shù)據(jù)操作命令存取命令取出程序指令輸入輸出命令計(jì)算結(jié)果CPU“馮馮諾依曼機(jī)諾依曼機(jī)”結(jié)構(gòu)結(jié)構(gòu) 大腦大腦眼眼/耳耳/口口程序和數(shù)據(jù)執(zhí)行結(jié)果11軟件的形成軟件的形成n軟件(軟件(Software)的形成)的形成q程序員程序員(Programmer)編寫(xiě)程序)編寫(xiě)程序源代碼源代碼(Source Code)q編譯器編譯器(Compiler)把源代碼轉(zhuǎn)換為可被計(jì)算機(jī))

4、把源代碼轉(zhuǎn)換為可被計(jì)算機(jī)理解的理解的機(jī)器代碼機(jī)器代碼(Machine Code)q并把機(jī)器代碼以并把機(jī)器代碼以可可執(zhí)行文件執(zhí)行文件(Executable File)的形式保存在磁盤(pán)上的形式保存在磁盤(pán)上12機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言面向過(guò)程面向?qū)ο驝PU指令系統(tǒng),由0、1序列構(gòu)成的指令碼組成如:10000000 加 10010000 減用助記符號(hào)描述的指令系統(tǒng)如 ADD A, B面向機(jī)器的語(yǔ)言程序設(shè)計(jì)是數(shù)據(jù)被加工的過(guò)程客觀(guān)世界可以分類(lèi),對(duì)象是類(lèi)的實(shí)例對(duì)象是數(shù)據(jù)和方法的封裝對(duì)象間通過(guò)發(fā)送和接受消息發(fā)生聯(lián)系程序設(shè)計(jì)關(guān)鍵是定義類(lèi),并由類(lèi)派生對(duì)象1.1.1 程序設(shè)計(jì)語(yǔ)言程序設(shè)計(jì)語(yǔ)言13程序設(shè)計(jì)語(yǔ)言的故事程

5、序設(shè)計(jì)語(yǔ)言的故事n計(jì)算機(jī)為什么用二進(jìn)制呢?計(jì)算機(jī)為什么用二進(jìn)制呢?n為什么不用我們?nèi)粘J煜さ氖M(jìn)制呢?為什么不用我們?nèi)粘J煜さ氖M(jìn)制呢?q二進(jìn)制在在電器元件中容易實(shí)現(xiàn)二進(jìn)制在在電器元件中容易實(shí)現(xiàn) q計(jì)算機(jī)進(jìn)行二進(jìn)制運(yùn)算比進(jìn)行十進(jìn)制運(yùn)算要簡(jiǎn)單得計(jì)算機(jī)進(jìn)行二進(jìn)制運(yùn)算比進(jìn)行十進(jìn)制運(yùn)算要簡(jiǎn)單得多多 14程序設(shè)計(jì)語(yǔ)言的故事程序設(shè)計(jì)語(yǔ)言的故事n機(jī)器語(yǔ)言編寫(xiě)的機(jī)器語(yǔ)言編寫(xiě)的1+1程序程序n匯編語(yǔ)言(匯編語(yǔ)言(Assemble Language)編寫(xiě)的)編寫(xiě)的1+1程序程序101110000000000100000000000001010000000100000000MOV AX, 1ADD AX, 115程

6、序設(shè)計(jì)語(yǔ)言的故事程序設(shè)計(jì)語(yǔ)言的故事nBASIC語(yǔ)言編寫(xiě)的語(yǔ)言編寫(xiě)的1+1程序程序nC語(yǔ)言編寫(xiě)的語(yǔ)言編寫(xiě)的1+1程序程序PRINT 1+1#include main()printf(%dn, 1+1);1652 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96AdaALGOL60ALGOL68PascalModula-2CPLBCPL BC+JavaLISPPROLOGCOBOLFORTRAN77FORTRANPL/1Simula 67Smalltalk 80BASICANSI-BASICQBASIC VBFORT

7、RAN90171.1.2 程序設(shè)計(jì)的概念程序設(shè)計(jì)的概念程序設(shè)計(jì)就是用計(jì)算機(jī)語(yǔ)言來(lái)程序設(shè)計(jì)就是用計(jì)算機(jī)語(yǔ)言來(lái)編寫(xiě)程序的過(guò)程。編寫(xiě)程序的過(guò)程。什么是程序?著名計(jì)算機(jī)科學(xué)什么是程序?著名計(jì)算機(jī)科學(xué)家沃思提出有名的公式:家沃思提出有名的公式: 算法算法+數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)=程序程序18191.2 C語(yǔ)言的產(chǎn)生和發(fā)展語(yǔ)言的產(chǎn)生和發(fā)展1.2.1 C語(yǔ)言的產(chǎn)生語(yǔ)言的產(chǎn)生 1.2.2 C語(yǔ)言的發(fā)展語(yǔ)言的發(fā)展1.2.3 C語(yǔ)言的特點(diǎn)語(yǔ)言的特點(diǎn)20n一切從一個(gè)叫一切從一個(gè)叫“Space Travel”Space Travel”的電子游戲開(kāi)始的電子游戲開(kāi)始的的nKen ThompsonKen Thompson為了讓他

8、的游戲能在為了讓他的游戲能在PDP-7PDP-7上運(yùn)行,上運(yùn)行,用匯編語(yǔ)言給用匯編語(yǔ)言給PDP-7PDP-7寫(xiě)了一個(gè)操作系統(tǒng)寫(xiě)了一個(gè)操作系統(tǒng)UNIXUNIXn匯編太不好用了,匯編太不好用了,ThompsonThompson需要高級(jí)語(yǔ)言需要高級(jí)語(yǔ)言n試驗(yàn)了一些高級(jí)語(yǔ)言,包括試驗(yàn)了一些高級(jí)語(yǔ)言,包括FortranFortran,都不理想,都不理想n他在他在BCPLBCPL基礎(chǔ)上,自己設(shè)計(jì)了一個(gè)基礎(chǔ)上,自己設(shè)計(jì)了一個(gè)B B語(yǔ)言語(yǔ)言nUNIXUNIX開(kāi)始發(fā)展,開(kāi)始發(fā)展,B B也不夠用了也不夠用了nDennis RitchieDennis Ritchie加入,把加入,把B B改造成改造成C C n開(kāi)始用

9、開(kāi)始用C C重寫(xiě)重寫(xiě)UNIXUNIX211.2.2 qC語(yǔ)言發(fā)展過(guò)程語(yǔ)言發(fā)展過(guò)程n產(chǎn)生過(guò)程產(chǎn)生過(guò)程q時(shí)間時(shí)間:19721973q地點(diǎn)地點(diǎn):美國(guó)貝爾實(shí)驗(yàn)室美國(guó)貝爾實(shí)驗(yàn)室q目的目的:UNIX操作系統(tǒng)操作系統(tǒng)q設(shè)計(jì)人設(shè)計(jì)人: Ken.Thompson和和Dennis.M.RitchienC標(biāo)準(zhǔn)標(biāo)準(zhǔn)q標(biāo)準(zhǔn)標(biāo)準(zhǔn)C: K&R合著合著The C Programming LanguageqANSI C: 1983年年q87 ANSI C: 1987年年q1990年國(guó)際標(biāo)準(zhǔn)的年國(guó)際標(biāo)準(zhǔn)的ANSI C22Ritchie和Thompson在開(kāi)發(fā)UNIX23接受美國(guó)國(guó)家技術(shù)勛章接受美國(guó)國(guó)家技術(shù)勛章24C語(yǔ)言的

10、祖師爺語(yǔ)言的祖師爺Dennis M. Ritchie25Ritchie漫畫(huà)像26C語(yǔ)言本身既有一般高級(jí)語(yǔ)言的特點(diǎn),又由低級(jí)語(yǔ)言本身既有一般高級(jí)語(yǔ)言的特點(diǎn),又由低級(jí)語(yǔ)言(匯編語(yǔ)言)的特點(diǎn)。語(yǔ)言(匯編語(yǔ)言)的特點(diǎn)。C語(yǔ)言是一種結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,它具有實(shí)語(yǔ)言是一種結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,它具有實(shí)現(xiàn)順序、分支、循環(huán)三種基本結(jié)構(gòu)化控制的語(yǔ)句?,F(xiàn)順序、分支、循環(huán)三種基本結(jié)構(gòu)化控制的語(yǔ)句。C語(yǔ)言簡(jiǎn)潔,緊湊,使用方便靈活。只有語(yǔ)言簡(jiǎn)潔,緊湊,使用方便靈活。只有32個(gè)保個(gè)保留字,留字,9種控制語(yǔ)句,書(shū)寫(xiě)形式自由。種控制語(yǔ)句,書(shū)寫(xiě)形式自由。數(shù)據(jù)類(lèi)型豐富。有整型、實(shí)型、字符型、數(shù)組型數(shù)據(jù)類(lèi)型豐富。有整型、實(shí)型、字

11、符型、數(shù)組型、指針型、結(jié)構(gòu)體型、共用體型和枚舉型等。、指針型、結(jié)構(gòu)體型、共用體型和枚舉型等。275、運(yùn)算功能強(qiáng)。有、運(yùn)算功能強(qiáng)。有32種運(yùn)算符,包括了算術(shù)運(yùn)算種運(yùn)算符,包括了算術(shù)運(yùn)算、關(guān)系運(yùn)算、邏輯運(yùn)算、位運(yùn)算、指針運(yùn)算等。、關(guān)系運(yùn)算、邏輯運(yùn)算、位運(yùn)算、指針運(yùn)算等。6、目標(biāo)代碼質(zhì)量高,運(yùn)行速度快。、目標(biāo)代碼質(zhì)量高,運(yùn)行速度快。7、可移植性強(qiáng)。、可移植性強(qiáng)。8、語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。、語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。28C 語(yǔ)言是編譯型語(yǔ)言語(yǔ)言是編譯型語(yǔ)言n 一種編譯語(yǔ)言對(duì)應(yīng)一種編譯器一種編譯語(yǔ)言對(duì)應(yīng)一種編譯器 q按照該語(yǔ)言的語(yǔ)法編寫(xiě)程序源代碼,把自己的思想按照該語(yǔ)言的語(yǔ)法編寫(xiě)

12、程序源代碼,把自己的思想融入到代碼中融入到代碼中 q編譯器讀入源代碼,把程序員的意圖轉(zhuǎn)換成可執(zhí)行編譯器讀入源代碼,把程序員的意圖轉(zhuǎn)換成可執(zhí)行程序,供他人使用程序,供他人使用29C語(yǔ)言與計(jì)算機(jī)系統(tǒng)層次關(guān)系語(yǔ)言與計(jì)算機(jī)系統(tǒng)層次關(guān)系301.3 簡(jiǎn)單簡(jiǎn)單C程序介紹程序介紹31nC程序格式和結(jié)構(gòu)特點(diǎn)程序格式和結(jié)構(gòu)特點(diǎn)第一個(gè)程序第一個(gè)程序 Hello,World!/* example1.1 The first C Program*/#include main() printf(“Hello,World!”);注釋編譯預(yù)處理函數(shù)語(yǔ)句輸出:Hello,World!32/* example1.2 calcula

13、te the sum of a and b*/#include /* This is the main program */main() int a,b,sum; a=10; b=24; sum=add(a,b); printf(”sum= %dn,sum);/* This function calculates the sum of x and y */int add(int x,int y) int z; z=x+y; return(z);運(yùn)行結(jié)果:運(yùn)行結(jié)果:sum=34語(yǔ)句語(yǔ)句預(yù)處理命令注釋注釋主函數(shù)子函數(shù)33q格式特點(diǎn)格式特點(diǎn)n習(xí)慣用習(xí)慣用小寫(xiě)小寫(xiě)字母,大小寫(xiě)敏感字母,大小寫(xiě)敏感n不使

14、用行號(hào),不使用行號(hào),無(wú)程序行無(wú)程序行概念概念n可使用空行和空格可使用空行和空格n常用常用鋸齒形鋸齒形書(shū)寫(xiě)格式書(shū)寫(xiě)格式main( ) . . . . . . .main( ) int i , j , sum; sum=0; for(i=1; i10;i+) for(j=1;j10;j+) sum+=i*j ; printf(“%dn”,sum);優(yōu)秀程序員的素質(zhì)之一: 使用TAB縮進(jìn) 對(duì)齊 有足夠的注釋 有合適的空行34q結(jié)構(gòu)特點(diǎn)結(jié)構(gòu)特點(diǎn)n函數(shù)與主函數(shù)函數(shù)與主函數(shù)q程序由一個(gè)或多個(gè)函數(shù)組成程序由一個(gè)或多個(gè)函數(shù)組成q必須有且只能有一個(gè)主函數(shù)必須有且只能有一個(gè)主函數(shù)main()q程序執(zhí)行從程序執(zhí)行從

15、main開(kāi)始,在開(kāi)始,在main中結(jié)束,其它函數(shù)通過(guò)嵌套中結(jié)束,其它函數(shù)通過(guò)嵌套調(diào)用得以執(zhí)行。調(diào)用得以執(zhí)行。n程序語(yǔ)句程序語(yǔ)句qC程序由語(yǔ)句組成程序由語(yǔ)句組成q用用“;”作為語(yǔ)句終止符作為語(yǔ)句終止符n注釋注釋q/* */為注釋為注釋,不能嵌套不能嵌套q不產(chǎn)生編譯代碼不產(chǎn)生編譯代碼例: /*This is the main /* of example1.1*/ */ 非法n編譯預(yù)處理命令編譯預(yù)處理命令函數(shù)首部函數(shù)首部: 包括函數(shù)名、函數(shù)類(lèi)型、函數(shù)參數(shù)名、包括函數(shù)名、函數(shù)類(lèi)型、函數(shù)參數(shù)名、參數(shù)類(lèi)型。參數(shù)類(lèi)型。 函數(shù)體:聲明部分函數(shù)體:聲明部分,執(zhí)行部分。執(zhí)行部分。351.4 C C程序的上機(jī)步驟程

16、序的上機(jī)步驟36編輯鏈接編譯執(zhí)行程序代碼的錄入,生成源程序*.c語(yǔ)法分析查錯(cuò),翻譯生成目標(biāo)程序*.obj與其它目標(biāo)程序或庫(kù)鏈接裝配,生成可執(zhí)行程序*.exe開(kāi)始編輯編譯 有錯(cuò)?執(zhí)行連接結(jié)果正確結(jié)束可執(zhí)行目標(biāo)程序f.exe源程序f.c目標(biāo)程序f.obj庫(kù)函數(shù)和其他目標(biāo)程序YesNoYesNo371.5 C語(yǔ)言的基本語(yǔ)法和結(jié)構(gòu)語(yǔ)言的基本語(yǔ)法和結(jié)構(gòu)1.5.1 C語(yǔ)言的基本語(yǔ)法語(yǔ)言的基本語(yǔ)法 1.5.2 C語(yǔ)言的基本結(jié)構(gòu)語(yǔ)言的基本結(jié)構(gòu)381.5.1 C語(yǔ)言的基本語(yǔ)法語(yǔ)言的基本語(yǔ)法n標(biāo)識(shí)符標(biāo)識(shí)符n關(guān)鍵字關(guān)鍵字n運(yùn)算符運(yùn)算符n分隔符分隔符n常量常量n注釋符注釋符n字符集字符集39標(biāo)識(shí)符標(biāo)識(shí)符n常量、變量、

17、語(yǔ)句標(biāo)號(hào)以及自定義函數(shù)的名稱(chēng)常量、變量、語(yǔ)句標(biāo)號(hào)以及自定義函數(shù)的名稱(chēng)n只能是只能是字母、數(shù)字和下劃線(xiàn)字母、數(shù)字和下劃線(xiàn)組成的字符串,組成的字符串,第第一個(gè)字符必須是字母或下劃線(xiàn)一個(gè)字符必須是字母或下劃線(xiàn)n標(biāo)準(zhǔn)標(biāo)準(zhǔn)C不限制標(biāo)識(shí)符長(zhǎng)度,但一般不超過(guò)不限制標(biāo)識(shí)符長(zhǎng)度,但一般不超過(guò)8字符字符n標(biāo)識(shí)符大小寫(xiě)有區(qū)別標(biāo)識(shí)符大小寫(xiě)有區(qū)別n標(biāo)識(shí)符名最好能標(biāo)識(shí)符名最好能“顧名思義顧名思義”403232個(gè)關(guān)鍵字個(gè)關(guān)鍵字:(auto break case char constcontinue default do double elseenum extern float for gotoif int long reg

18、ister returnshort signed sizeof static structswitch typedef unsigned union voidvolatile while419 9種控制語(yǔ)句種控制語(yǔ)句:if( )else switch casefor( )while( )dowhile( )continuebreakgotoreturn423434種運(yùn)算符:種運(yùn)算符:算術(shù)運(yùn)算符:算術(shù)運(yùn)算符:+ - + - * * / % + - / % + -關(guān)系運(yùn)算符:關(guān)系運(yùn)算符: = != = !=邏輯運(yùn)算符:!邏輯運(yùn)算符:! & |& |位運(yùn)算符位運(yùn)算符 : | &

19、; | &賦值運(yùn)算符:賦值運(yùn)算符:= = 及其擴(kuò)展及其擴(kuò)展條件運(yùn)算符:條件運(yùn)算符:?:?:逗號(hào)運(yùn)算符:逗號(hào)運(yùn)算符:, ,指針運(yùn)算符:指針運(yùn)算符:* * & &求字節(jié)數(shù)求字節(jié)數(shù) :sizeofsizeof強(qiáng)制類(lèi)型轉(zhuǎn)換:強(qiáng)制類(lèi)型轉(zhuǎn)換:( (類(lèi)型)類(lèi)型)分量運(yùn)算符:分量運(yùn)算符:. -. -下標(biāo)運(yùn)算符:下標(biāo)運(yùn)算符: 其它其它 :( ) -( ) -431.5.2 C語(yǔ)言的基本結(jié)構(gòu)語(yǔ)言的基本結(jié)構(gòu)(1)順序結(jié)構(gòu))順序結(jié)構(gòu) ABa b 44(2)選擇結(jié)構(gòu)選擇結(jié)構(gòu),或稱(chēng)分支結(jié)構(gòu) 此結(jié)構(gòu)中必包含一個(gè)判斷框。根據(jù)給定的條件P是否成立而選擇執(zhí)行A框或B框abBAp不成立成立45 (3) 循環(huán)

20、結(jié)構(gòu)循環(huán)結(jié)構(gòu),它又稱(chēng)為重復(fù)結(jié)構(gòu),即反復(fù)執(zhí)行某一部分的操作。又兩類(lèi)循環(huán)結(jié)構(gòu): a. 當(dāng)型(當(dāng)型(while型)循環(huán)結(jié)構(gòu)型)循環(huán)結(jié)構(gòu)ap1TFAbb. 直到型(直到型(Until型)循環(huán)結(jié)構(gòu)型)循環(huán)結(jié)構(gòu) aATFbp2461.6 本章要點(diǎn)小結(jié)本章要點(diǎn)小結(jié)47本章課堂練習(xí)本章課堂練習(xí) (1) 以下說(shuō)法中正確正確的是( ). A) C語(yǔ)言程序總是從第一個(gè)函數(shù)開(kāi)始執(zhí)行 B) 在C語(yǔ)言程序中,要調(diào)用的函數(shù)必須在main()函數(shù)中定義 C) C語(yǔ)言程序總是從main()函數(shù)開(kāi)始執(zhí)行 D) C語(yǔ)言程序中的main()函數(shù)必須放在程序的開(kāi)始部分48解答:C解釋?zhuān)篊語(yǔ)言程序總是從main()函數(shù)開(kāi)始執(zhí)行,而不論其

21、在程序中的位置。當(dāng)主函數(shù)執(zhí)行完畢時(shí),亦即程序執(zhí)行完畢。除main函數(shù)外,其它函數(shù)都是在執(zhí)行main函數(shù)時(shí)被調(diào)用執(zhí)行的。在C語(yǔ)言中,函數(shù)不允許嵌套定義。習(xí)慣上,將主函數(shù)main()放在最前頭,但并不是必須的。49(2)以下敘述不正確不正確的是A)一個(gè)C源程序可由一個(gè)或多個(gè)函數(shù)組成B) 一個(gè)C源程序必須包含一個(gè)main函數(shù)C) C程序的基本組成單位是函數(shù) D) 在C程序中,注釋說(shuō)明只能位于一條語(yǔ)句的后面50解答:D解釋: 凡是用“/*”和“*/”括起來(lái)的文字,都是注釋。其出現(xiàn)的位置可以任意。51(3)下列標(biāo)識(shí)符中,合法合法的變量名有:A)a.b B)$888 C)A1 D) 3x56 52解答:C

22、解釋?zhuān)鹤兞棵荒苡勺帜?、?shù)字和下劃線(xiàn)三種字符所組成,且第一個(gè)字符必須為字母或下劃線(xiàn)。C語(yǔ)言的關(guān)鍵字不能用作變量名。另外,C語(yǔ)言對(duì)英文字母的大小寫(xiě)敏感,即同一字母的大小寫(xiě),被認(rèn)為是兩個(gè)不同的字符。習(xí)慣上,變量名和函數(shù)名中的英文字母用小寫(xiě),以增加可讀性。第二章第二章 程序的靈魂程序的靈魂:算法算法 n一個(gè)程序主要包括以下兩方面的信息:一個(gè)程序主要包括以下兩方面的信息:(1) 對(duì)數(shù)據(jù)的描述對(duì)數(shù)據(jù)的描述。在程序中要指定用到。在程序中要指定用到哪哪些些數(shù)據(jù)以及這些數(shù)據(jù)的類(lèi)型和數(shù)據(jù)的組織形式數(shù)據(jù)以及這些數(shù)據(jù)的類(lèi)型和數(shù)據(jù)的組織形式q這就是數(shù)據(jù)結(jié)構(gòu)這就是數(shù)據(jù)結(jié)構(gòu)(data structure)(2) 對(duì)操作的

23、描述對(duì)操作的描述。即要求計(jì)算機(jī)進(jìn)行操作的。即要求計(jì)算機(jī)進(jìn)行操作的步驟步驟q也就是算法也就是算法(algorithm)n數(shù)據(jù)是操作的對(duì)象數(shù)據(jù)是操作的對(duì)象n操作的目的是對(duì)數(shù)據(jù)進(jìn)行加工處理,以得到操作的目的是對(duì)數(shù)據(jù)進(jìn)行加工處理,以得到期望的結(jié)果期望的結(jié)果n著名計(jì)算機(jī)科學(xué)家沃思著名計(jì)算機(jī)科學(xué)家沃思(Nikiklaus Wirth)提提出一個(gè)公式:出一個(gè)公式: 算法算法 + 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) = 程序程序n一個(gè)程序除了一個(gè)程序除了算法和數(shù)據(jù)結(jié)構(gòu)這算法和數(shù)據(jù)結(jié)構(gòu)這主要要素外,主要要素外,還應(yīng)當(dāng)采用結(jié)構(gòu)化程序設(shè)計(jì)方法進(jìn)行程序設(shè)計(jì),還應(yīng)當(dāng)采用結(jié)構(gòu)化程序設(shè)計(jì)方法進(jìn)行程序設(shè)計(jì),并且用某一種計(jì)算機(jī)語(yǔ)言表示并且用某一

24、種計(jì)算機(jī)語(yǔ)言表示n算法算法、數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計(jì)方法程序設(shè)計(jì)方法和和語(yǔ)言工具語(yǔ)言工具是是一個(gè)程序設(shè)計(jì)人員應(yīng)具備的知識(shí)一個(gè)程序設(shè)計(jì)人員應(yīng)具備的知識(shí)q算法算法數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)程序設(shè)計(jì)方法程序設(shè)計(jì)方法語(yǔ)言工具和環(huán)境語(yǔ)言工具和環(huán)境程序程序n算法是解決算法是解決“做什么做什么”和和“怎么做怎么做”的問(wèn)題的問(wèn)題n程序中的操作語(yǔ)句,是算法的體現(xiàn)程序中的操作語(yǔ)句,是算法的體現(xiàn)n不了解算法就談不上程序設(shè)計(jì)不了解算法就談不上程序設(shè)計(jì)2.1 算法的概念算法的概念n廣義地說(shuō),為解決一個(gè)問(wèn)題而采取的方法和步廣義地說(shuō),為解決一個(gè)問(wèn)題而采取的方法和步驟,就稱(chēng)為驟,就稱(chēng)為“算法算法”n對(duì)同一個(gè)問(wèn)題,可以有不同的解題方法

25、和步驟對(duì)同一個(gè)問(wèn)題,可以有不同的解題方法和步驟n為了有效地進(jìn)行解題,不僅需要保證算法正確,為了有效地進(jìn)行解題,不僅需要保證算法正確,還要考慮算法的質(zhì)量,選擇合適的算法還要考慮算法的質(zhì)量,選擇合適的算法n計(jì)算機(jī)算法可分為兩大類(lèi)別:計(jì)算機(jī)算法可分為兩大類(lèi)別:q數(shù)值運(yùn)算算法數(shù)值運(yùn)算算法q非數(shù)值運(yùn)算算法非數(shù)值運(yùn)算算法n數(shù)值運(yùn)算數(shù)值運(yùn)算的目的是求數(shù)值解的目的是求數(shù)值解n非數(shù)值運(yùn)算非數(shù)值運(yùn)算包括的面十分廣泛,最常見(jiàn)的包括的面十分廣泛,最常見(jiàn)的是用于事務(wù)管理領(lǐng)域是用于事務(wù)管理領(lǐng)域2.1 算法的概念算法的概念n可以用最原始的方法進(jìn)行:可以用最原始的方法進(jìn)行:q步驟步驟1:先求:先求1*2,得到結(jié)果,得到結(jié)果2

26、。q步驟步驟2:將步驟:將步驟1得到的乘積得到的乘積2再乘以再乘以3,得到結(jié),得到結(jié)果果6。q步驟步驟3:將:將6再乘以再乘以4,得,得24。q步驟步驟4:將:將24再乘以再乘以5,得,得120。這就是最后的結(jié)。這就是最后的結(jié)果。果。例例2.1 求求12345 100太繁瑣太繁瑣例例2.1 求求12345簡(jiǎn)單算法的舉例概念簡(jiǎn)單算法的舉例概念n改進(jìn)的算法:q設(shè)變量p為被乘數(shù)q變量i為乘數(shù)q用循環(huán)算法求結(jié)果求求12345簡(jiǎn)單算法的舉例概念簡(jiǎn)單算法的舉例概念nS1:使p=1,或?qū)懗?pnS2:使i=2,或?qū)懗?inS3:使p與i相乘,乘積仍放在變量p中,可表示為:p*ipnS4:使i的值加1,即i+

27、1 inS5:如果i不大于5,返回重新執(zhí)行S3;否則,算法結(jié)束n最后得到p的值就是 5!的值若是若是100,求什么?,求什么?簡(jiǎn)單算法的舉例概念簡(jiǎn)單算法的舉例概念 例例2.2 有有50個(gè)學(xué)生,要求將成績(jī)?cè)趥€(gè)學(xué)生,要求將成績(jī)?cè)?0-90分的學(xué)分的學(xué)生的學(xué)號(hào)和成績(jī)輸出。生的學(xué)號(hào)和成績(jī)輸出。n用用ni代表第代表第i個(gè)學(xué)生個(gè)學(xué)生學(xué)號(hào),學(xué)號(hào),gi表示第表示第i個(gè)學(xué)生成績(jī)個(gè)學(xué)生成績(jī)S1:1iS2:如果:如果90 gi80, 則輸出則輸出ni和和gi,否則不輸出,否則不輸出S3:i+1iS4:如果:如果i50,返回到步驟,返回到步驟S2,繼續(xù)執(zhí)行,繼續(xù)執(zhí)行,否則,算法結(jié)束否則,算法結(jié)束n一個(gè)有效算法應(yīng)該具有

28、以下一個(gè)有效算法應(yīng)該具有以下特點(diǎn)特點(diǎn):(1) 有窮性有窮性。一個(gè)算法應(yīng)包含有限的操。一個(gè)算法應(yīng)包含有限的操作步驟,而不能是無(wú)限的。作步驟,而不能是無(wú)限的。(2) 確定性確定性。算法中的每一個(gè)步驟都應(yīng)。算法中的每一個(gè)步驟都應(yīng)當(dāng)是確定的,而不應(yīng)當(dāng)是含糊的、模當(dāng)是確定的,而不應(yīng)當(dāng)是含糊的、模棱兩可的。棱兩可的。2.2 算法的特性算法的特性n一個(gè)有效算法應(yīng)該具有以下一個(gè)有效算法應(yīng)該具有以下特點(diǎn)特點(diǎn):(3) 有零個(gè)或多個(gè)輸入有零個(gè)或多個(gè)輸入。所謂輸入是指在。所謂輸入是指在執(zhí)行算法時(shí)需要從外界取得必要的信息。執(zhí)行算法時(shí)需要從外界取得必要的信息。(4) 有一個(gè)或多個(gè)輸出有一個(gè)或多個(gè)輸出。算法的目的是為。算法

29、的目的是為了求解,了求解,“解解” 就是輸出。就是輸出。q沒(méi)有輸出的算法是沒(méi)有意義的。沒(méi)有輸出的算法是沒(méi)有意義的。(5) 有效性有效性。算法中的每一個(gè)步驟都應(yīng)當(dāng)。算法中的每一個(gè)步驟都應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。能有效地執(zhí)行,并得到確定的結(jié)果。2.2 算法的特性算法的特性n對(duì)于一般最終用戶(hù)來(lái)說(shuō)對(duì)于一般最終用戶(hù)來(lái)說(shuō):q他們并不需要在處理每一個(gè)問(wèn)題時(shí)都要他們并不需要在處理每一個(gè)問(wèn)題時(shí)都要自己設(shè)計(jì)算法和編寫(xiě)程序自己設(shè)計(jì)算法和編寫(xiě)程序q可以使用別人已設(shè)計(jì)好的現(xiàn)成算法和程可以使用別人已設(shè)計(jì)好的現(xiàn)成算法和程序序q只需根據(jù)已知算法的要求給予必要的輸只需根據(jù)已知算法的要求給予必要的輸入,就能得到輸出的結(jié)

30、果入,就能得到輸出的結(jié)果輸入輸入3個(gè)數(shù)個(gè)數(shù)黑箱子黑箱子3個(gè)數(shù)中最大數(shù)個(gè)數(shù)中最大數(shù)求求3個(gè)數(shù)的個(gè)數(shù)的最大數(shù)最大數(shù)2.2 算法的特性算法的特性n常用的方法有:常用的方法有:q自然語(yǔ)言自然語(yǔ)言q傳統(tǒng)流程圖傳統(tǒng)流程圖q結(jié)構(gòu)化流程圖結(jié)構(gòu)化流程圖q偽代碼偽代碼q2.3 算法的表示算法的表示n2.1節(jié)節(jié)例子例子介紹的算法是用自然語(yǔ)言表示的介紹的算法是用自然語(yǔ)言表示的n用自然語(yǔ)言表示通俗易懂,但文字冗長(zhǎng),容易用自然語(yǔ)言表示通俗易懂,但文字冗長(zhǎng),容易出現(xiàn)歧義性出現(xiàn)歧義性n用自然語(yǔ)言描述包含分支和循環(huán)的算法,不很用自然語(yǔ)言描述包含分支和循環(huán)的算法,不很方便方便n除了很簡(jiǎn)單的問(wèn)題外,一般不用自然語(yǔ)言除了很簡(jiǎn)單的問(wèn)題

31、外,一般不用自然語(yǔ)言用一些圖形符號(hào)形象直觀(guān)的表述算法,上表給出用一些圖形符號(hào)形象直觀(guān)的表述算法,上表給出了了ANSI 規(guī)定的程序流程圖符號(hào)。規(guī)定的程序流程圖符號(hào)。n流程圖流程圖是用一些圖框來(lái)表示各種操作是用一些圖框來(lái)表示各種操作n用圖形表示算法,直觀(guān)形象,易于理解用圖形表示算法,直觀(guān)形象,易于理解x0YN一個(gè)入口一個(gè)入口兩個(gè)出口兩個(gè)出口位置不夠位置不夠防止交叉防止交叉 例例2.4 將例將例2.1的算法用的算法用流程圖表示。流程圖表示。 求求12345n如果需要將最后結(jié)果輸如果需要將最后結(jié)果輸出出:1t輸出輸出ti5開(kāi)始開(kāi)始2it*iti+1i結(jié)束結(jié)束NYn通過(guò)以上幾個(gè)例子可以看出流程圖是表通過(guò)

32、以上幾個(gè)例子可以看出流程圖是表示算法的較好的工具示算法的較好的工具n一個(gè)流程圖包括以下幾部分一個(gè)流程圖包括以下幾部分:(1) 表示相應(yīng)操作的框表示相應(yīng)操作的框(2) 帶箭頭的流程線(xiàn)帶箭頭的流程線(xiàn)(3) 框內(nèi)外必要的文字說(shuō)明框內(nèi)外必要的文字說(shuō)明n流程線(xiàn)不要忘記畫(huà)箭頭,流程線(xiàn)不要忘記畫(huà)箭頭,否則否則難以判定難以判定各框的執(zhí)行次序各框的執(zhí)行次序n特點(diǎn):繪制簡(jiǎn)單,描述直觀(guān),之前廣泛使用。特點(diǎn):繪制簡(jiǎn)單,描述直觀(guān),之前廣泛使用。n缺點(diǎn):缺點(diǎn):q程序流程圖不易表示算法或程序的層次結(jié)構(gòu)。程序流程圖不易表示算法或程序的層次結(jié)構(gòu)。q用箭頭表示的控制流可能引起隨意的轉(zhuǎn)移控制。用箭頭表示的控制流可能引起隨意的轉(zhuǎn)移控

33、制。q可能誘使人們過(guò)早地考慮局部程序的控制結(jié)構(gòu)而忽可能誘使人們過(guò)早地考慮局部程序的控制結(jié)構(gòu)而忽視全局的程序結(jié)構(gòu)。視全局的程序結(jié)構(gòu)。q不易表示數(shù)據(jù)結(jié)構(gòu)和程序模塊之間的關(guān)系。不易表示數(shù)據(jù)結(jié)構(gòu)和程序模塊之間的關(guān)系。NS圖表示法圖表示法 1973 1973年美國(guó)學(xué)者年美國(guó)學(xué)者I.NassiI.Nassi和和B.ShneidermanB.Shneiderman提提出了一種新的流程圖形式。在這種流程圖中,完出了一種新的流程圖形式。在這種流程圖中,完全去掉了帶箭頭的流程線(xiàn)。全部算法寫(xiě)在一個(gè)矩全去掉了帶箭頭的流程線(xiàn)。全部算法寫(xiě)在一個(gè)矩形框內(nèi),在該框內(nèi)還可以包含其他的從屬于它的形框內(nèi),在該框內(nèi)還可以包含其他的從

34、屬于它的框??颉?這種流程圖又稱(chēng)這種流程圖又稱(chēng)NSNS結(jié)構(gòu)化流程圖(結(jié)構(gòu)化流程圖(N N和和S S是兩位美國(guó)學(xué)者的英文姓名的第一個(gè)字母)。是兩位美國(guó)學(xué)者的英文姓名的第一個(gè)字母)。這種流程圖適于結(jié)構(gòu)化程序設(shè)計(jì),因此很受歡這種流程圖適于結(jié)構(gòu)化程序設(shè)計(jì),因此很受歡迎。迎。 nN-S流程圖用以下的流程圖符號(hào):ABABYNpA當(dāng)當(dāng)p1成立成立A直到直到p2成立成立順序結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)(當(dāng)型)(當(dāng)型)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)(直到型)(直到型)NS圖表示法圖表示法 用偽碼表示算法用偽碼表示算法 偽代碼是用介于自然語(yǔ)言和計(jì)算機(jī)語(yǔ)言偽代碼是用介于自然語(yǔ)言和計(jì)算機(jī)語(yǔ)言之間的文字和符號(hào)來(lái)描述算

35、法。它不用圖之間的文字和符號(hào)來(lái)描述算法。它不用圖形符號(hào),因此書(shū)寫(xiě)方便,格式緊湊,也比形符號(hào),因此書(shū)寫(xiě)方便,格式緊湊,也比較好懂,便于向計(jì)算機(jī)語(yǔ)言算法(即程序)較好懂,便于向計(jì)算機(jī)語(yǔ)言算法(即程序)過(guò)渡。過(guò)渡。 BEGIN(算法開(kāi)始算法開(kāi)始)1=iWhile ii1=i While i=80 and giiEND(算法結(jié)束)(算法結(jié)束) 前例用偽代碼表示算法如下:用計(jì)算機(jī)語(yǔ)言表示算法用計(jì)算機(jī)語(yǔ)言表示算法 n要完成一項(xiàng)工作,包括要完成一項(xiàng)工作,包括設(shè)計(jì)算法設(shè)計(jì)算法和和實(shí)現(xiàn)算法實(shí)現(xiàn)算法兩個(gè)部分。兩個(gè)部分。n設(shè)計(jì)算法的目的是為了實(shí)現(xiàn)算法。設(shè)計(jì)算法的目的是為了實(shí)現(xiàn)算法。n不僅要考慮如何設(shè)計(jì)一個(gè)算法,也要

36、考慮如不僅要考慮如何設(shè)計(jì)一個(gè)算法,也要考慮如何實(shí)現(xiàn)一個(gè)算法。何實(shí)現(xiàn)一個(gè)算法。用用C語(yǔ)言程序?qū)崿F(xiàn)前例如下語(yǔ)言程序?qū)崿F(xiàn)前例如下#include /*打印出50名同學(xué)中成績(jī)?cè)?0-90分者*/main() int i,g50,n50; for(i=0;i50;i+) /*輸入50名同學(xué)的學(xué)號(hào),成績(jī)*/ scanf(“%d,%d”,&ni,&gi); for(i=0;i=80)&(gi=90) ) printf(“%6d,%3dn”,ni,gi);2.4 結(jié)構(gòu)化程序設(shè)計(jì)方法簡(jiǎn)介結(jié)構(gòu)化程序設(shè)計(jì)方法簡(jiǎn)介 順序、分支和循環(huán)三種基本結(jié)構(gòu)的共同特點(diǎn):順序、分支和循環(huán)三種基本結(jié)構(gòu)的共同特點(diǎn)

37、: (1)只有一個(gè)入口。只有一個(gè)入口。(2)只有一個(gè)出口。只有一個(gè)出口。(3)結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行到。也就是結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行到。也就是說(shuō),對(duì)每一個(gè)框來(lái)說(shuō),都有從入口到出口的路徑說(shuō),對(duì)每一個(gè)框來(lái)說(shuō),都有從入口到出口的路徑通過(guò)它。通過(guò)它。 (4)結(jié)構(gòu)內(nèi)不存在結(jié)構(gòu)內(nèi)不存在“死循環(huán)死循環(huán)”(無(wú)終止的循環(huán))。(無(wú)終止的循環(huán))。結(jié)構(gòu)化程序結(jié)構(gòu)化程序 所謂結(jié)構(gòu)化程序,就是僅僅使用順序、選擇、所謂結(jié)構(gòu)化程序,就是僅僅使用順序、選擇、循環(huán)等三種基本結(jié)構(gòu)所構(gòu)造的程序。循環(huán)等三種基本結(jié)構(gòu)所構(gòu)造的程序。 結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)方法 結(jié)構(gòu)化程序設(shè)計(jì)方法的基本思想是,把一個(gè)復(fù)雜結(jié)構(gòu)化程序

38、設(shè)計(jì)方法的基本思想是,把一個(gè)復(fù)雜問(wèn)題的求解過(guò)程分階段進(jìn)行。每個(gè)階段的問(wèn)題都問(wèn)題的求解過(guò)程分階段進(jìn)行。每個(gè)階段的問(wèn)題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)??刂圃谌藗?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。 2.4 本章要點(diǎn)小結(jié)本章要點(diǎn)小結(jié)第三章第三章 數(shù)據(jù)描述與數(shù)據(jù)描述與 基本操作基本操作 89n3.1 基本數(shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型n3.2 運(yùn)算符和表達(dá)式運(yùn)算符和表達(dá)式n3.3 輸入輸出操作輸入輸出操作903.1 基本數(shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型n3.1.1 C語(yǔ)言的數(shù)據(jù)類(lèi)型語(yǔ)言的數(shù)據(jù)類(lèi)型n3.1.2 常量和變量常量和變量n3.1.3 數(shù)據(jù)類(lèi)型轉(zhuǎn)換數(shù)據(jù)類(lèi)型轉(zhuǎn)換913.1.1 C3.1.1 C語(yǔ)言的數(shù)據(jù)類(lèi)型語(yǔ)言的數(shù)據(jù)類(lèi)型(一)

39、 什么是數(shù)據(jù)類(lèi)型?(二) C語(yǔ)言的數(shù)據(jù)類(lèi)型有哪些?92( (一一) ) 什么是數(shù)據(jù)類(lèi)型?什么是數(shù)據(jù)類(lèi)型?數(shù)據(jù)結(jié)構(gòu)+算法=程序C語(yǔ)言中以“數(shù)據(jù)類(lèi)型”形式存在對(duì)數(shù)據(jù)的描述對(duì)操作的描述93數(shù)據(jù)類(lèi)型基本類(lèi)型整型(有符號(hào)、無(wú)符號(hào))字符型實(shí)型(浮點(diǎn)型)枚舉類(lèi)型構(gòu)造類(lèi)型數(shù)組類(lèi)型結(jié)構(gòu)體類(lèi)型共用體類(lèi)型指針類(lèi)型空類(lèi)型單精度型雙精度型在程序中對(duì)用到的所有數(shù)據(jù)都必須指定其數(shù)據(jù)類(lèi)型.?不同類(lèi)型的數(shù)據(jù),所占內(nèi)存的字節(jié)數(shù)不同, 對(duì)應(yīng)的操作也不相同。( (二二) C) C的數(shù)據(jù)類(lèi)型的數(shù)據(jù)類(lèi)型94整型數(shù)據(jù)整型數(shù)據(jù)1. 整型數(shù)據(jù)的分類(lèi)整型數(shù)據(jù)的分類(lèi)n最基本的整型類(lèi)型最基本的整型類(lèi)型q基本整型基本整型(int型型):占:占2個(gè)或個(gè)

40、或4個(gè)字節(jié)個(gè)字節(jié)(32位編譯位編譯系統(tǒng)系統(tǒng))q短整型短整型(short int):VC+6.0中占中占2個(gè)字節(jié)個(gè)字節(jié)q長(zhǎng)整型長(zhǎng)整型(long int):VC+6.0中占中占4個(gè)字節(jié)個(gè)字節(jié)q雙長(zhǎng)整型雙長(zhǎng)整型(long long int):C99新增的新增的,64位占位占8個(gè)字節(jié),個(gè)字節(jié),VC+6.0中定義為中定義為 _int64952. 整型變量的符號(hào)屬性整型變量的符號(hào)屬性q整型變量的值的范圍包括負(fù)數(shù)到正數(shù)整型變量的值的范圍包括負(fù)數(shù)到正數(shù)q可以將變量定義為可以將變量定義為“無(wú)符號(hào)無(wú)符號(hào)”類(lèi)型類(lèi)型q擴(kuò)充的整形類(lèi)型:擴(kuò)充的整形類(lèi)型:n有符號(hào)基本整型 signed int;n無(wú)符號(hào)基本整型 unsig

41、ned int;n有符號(hào)短整型 signed short int;n無(wú)符號(hào)短整型 unsigned short int;n有符號(hào)長(zhǎng)整型 signed long int;n無(wú)符號(hào)長(zhǎng)整型 unsigned long int;整型數(shù)據(jù)96字符型數(shù)據(jù)字符型數(shù)據(jù)n字符是按其代碼字符是按其代碼(整數(shù)整數(shù))形式存儲(chǔ)的形式存儲(chǔ)的nC99把字符型數(shù)據(jù)作為整數(shù)類(lèi)型的一種把字符型數(shù)據(jù)作為整數(shù)類(lèi)型的一種n字符型數(shù)據(jù)在使用上有自己的特點(diǎn)字符型數(shù)據(jù)在使用上有自己的特點(diǎn)971.字符與字符代碼字符與字符代碼大多數(shù)系統(tǒng)采用大多數(shù)系統(tǒng)采用ASCII字符集字符集q字母:字母:A Z,a zq數(shù)字:數(shù)字:09q專(zhuān)門(mén)符號(hào):專(zhuān)門(mén)符號(hào):2

42、9個(gè):個(gè):! ” # & ( ) *等等q空格符:空格、水平制表符空格符:空格、水平制表符t、換行、換行n等等q不能顯示的字符:不能顯示的字符:空空(null)字符字符(以以0表示表示)、鳴鈴鳴鈴(以以a表示表示)、退格退格(以以b表示表示)、回車(chē)、回車(chē)(以以r表示表示)等等字符型數(shù)據(jù)98n字符字符1和整數(shù)和整數(shù)1是不同的概念是不同的概念:q字符字符1只是代表一個(gè)形狀為只是代表一個(gè)形狀為1的符號(hào),在的符號(hào),在需要時(shí)按原樣輸出,在內(nèi)存中以需要時(shí)按原樣輸出,在內(nèi)存中以ASCII碼形式碼形式存儲(chǔ),占存儲(chǔ),占1個(gè)字節(jié)個(gè)字節(jié)q整數(shù)整數(shù)1是以整數(shù)存儲(chǔ)方式是以整數(shù)存儲(chǔ)方式(二進(jìn)制補(bǔ)碼方式二進(jìn)制補(bǔ)碼方

43、式)存存儲(chǔ)的,占儲(chǔ)的,占2個(gè)或個(gè)或4個(gè)字節(jié)個(gè)字節(jié)字符型數(shù)據(jù)992.字符變量字符變量n用類(lèi)型符用類(lèi)型符char定義字符變量定義字符變量q char c = ?; 系統(tǒng)把系統(tǒng)把“?”的的ASCII代碼代碼63賦給變量賦給變量cqprintf(“%d %cn”,c,c);q輸出結(jié)果是:輸出結(jié)果是: 63 ?字符型數(shù)據(jù)100浮點(diǎn)型數(shù)據(jù)浮點(diǎn)型數(shù)據(jù)浮點(diǎn)型數(shù)據(jù)是用來(lái)表示具有小數(shù)點(diǎn)的實(shí)數(shù)浮點(diǎn)型數(shù)據(jù)是用來(lái)表示具有小數(shù)點(diǎn)的實(shí)數(shù)nfloat型型(單精度浮點(diǎn)型單精度浮點(diǎn)型)q編譯系統(tǒng)為編譯系統(tǒng)為float型變量分配型變量分配4個(gè)字節(jié)個(gè)字節(jié)q數(shù)值以規(guī)范化的二進(jìn)制數(shù)指數(shù)形式存放數(shù)值以規(guī)范化的二進(jìn)制數(shù)指數(shù)形式存放 101浮

44、點(diǎn)型數(shù)據(jù)是用來(lái)表示具有小數(shù)點(diǎn)的實(shí)數(shù)浮點(diǎn)型數(shù)據(jù)是用來(lái)表示具有小數(shù)點(diǎn)的實(shí)數(shù)nfloat型型(單精度浮點(diǎn)型單精度浮點(diǎn)型)ndouble型型(雙精度浮點(diǎn)型雙精度浮點(diǎn)型)u編譯系統(tǒng)為編譯系統(tǒng)為double型變量分配型變量分配8個(gè)字節(jié)個(gè)字節(jié)u15位有效數(shù)字位有效數(shù)字浮點(diǎn)型數(shù)據(jù)102幾種基本數(shù)據(jù)類(lèi)型類(lèi)型 符號(hào)關(guān)鍵字?jǐn)?shù)的表示范圍所占位數(shù)整型字符型實(shí)型有無(wú)(signed)int32-21474836482147483647(signed)short16-3276832767(signed)long32-2147483648214748364732Unsigned int042949672953204294967

45、295unsigned longunsigned short16065535有float323.4e-383.4e38有double641.7e-3081.7e308有char8-128127無(wú)unsigned char80255說(shuō)明:數(shù)據(jù)類(lèi)型所占字節(jié)數(shù)隨編譯器不同而不同,上表以VC+ 6.0為例:103舉例:數(shù)據(jù)溢出(舉例:數(shù)據(jù)溢出(Overflow)的危害)的危害n 一臺(tái)安裝了Windows 95/98的機(jī)器,如果連續(xù)運(yùn)行49.7天,可能死機(jī)n 原因:q Windows自啟動(dòng)時(shí)刻起,有一個(gè)計(jì)數(shù)器,記錄系統(tǒng)已經(jīng)運(yùn)行了多少毫秒。q 這個(gè)計(jì)數(shù)器個(gè)unsigned longq unsigned l

46、ong的最大值:4294967295q 一天有24*60*60*1000 = 86400000毫秒q 4294967295 / 86400000 = 49.71026961805q 當(dāng)49.7天的時(shí)候,此計(jì)數(shù)器會(huì)溢出,引起死機(jī)104(一) 常 量(二) 變 量3.1.2 3.1.2 常量與變量常量與變量105預(yù)備知識(shí):預(yù)備知識(shí):bit,Byte,Wordn bit, 位位n Byte, 字節(jié)字節(jié) 1 B = 8 bn Word, 字字 1 W=2 Bn Kilobyte(KB), 1 KB = 1,024 Bn Megabyte(MB), 1 MB = 1,024 KBn Gigabyte(G

47、B), 1 GB = 1,024 MBn Terabyte(TB) 1 TB = 1,024 GB 106n一個(gè)字節(jié)有多大?一個(gè)字節(jié)有多大?q 可以表示數(shù)字可以表示數(shù)字0255q 保存一個(gè)字符(英文字母、數(shù)字、符號(hào)),保存一個(gè)字符(英文字母、數(shù)字、符號(hào)),ASCII編碼編碼q 兩個(gè)字節(jié)保存一個(gè)漢字兩個(gè)字節(jié)保存一個(gè)漢字107預(yù)備知識(shí):二進(jìn)制預(yù)備知識(shí):二進(jìn)制n世界上有世界上有(10)2種人,種人,1種人懂二進(jìn)制,種人懂二進(jìn)制,1種人種人不懂二進(jìn)制不懂二進(jìn)制n 一個(gè)位有多大?一個(gè)位有多大?q 只能是只能是“0”或者或者“1”,這叫二進(jìn)制,這叫二進(jìn)制n二進(jìn)制詮釋了計(jì)算機(jī)的哲學(xué)二進(jìn)制詮釋了計(jì)算機(jī)的哲學(xué)q

48、 種類(lèi)眾多的復(fù)雜事物都是由若干種簡(jiǎn)單事物構(gòu)成種類(lèi)眾多的復(fù)雜事物都是由若干種簡(jiǎn)單事物構(gòu)成1081.常量常量:在程序運(yùn)行過(guò)程中,其值在程序運(yùn)行過(guò)程中,其值不能被改變的量不能被改變的量n整型常量整型常量:如如1000,12345,0,-345n實(shí)型常量實(shí)型常量q十進(jìn)制小數(shù)形式十進(jìn)制小數(shù)形式:如如0.34 -56.79 0.0q指數(shù)形式指數(shù)形式:如如12.34e3 (代表代表12.34 103)n字符常量字符常量:如:如?q轉(zhuǎn)義字符轉(zhuǎn)義字符:如:如nn字符串常量字符串常量:如如”boy”n符號(hào)常量符號(hào)常量:#define PI 3.14163.1.2 常量與變量109字符與字符串的區(qū)別有哪些?字符與字

49、符串的區(qū)別有哪些?定界符不同:字符常量使用單引號(hào),而字符串常量使用雙引號(hào);長(zhǎng)度不同:字符常量的長(zhǎng)度固定為1,而字符串常量的長(zhǎng)度,可以是0,也可以是某個(gè)整數(shù);存儲(chǔ)要求不同:字符常量存儲(chǔ)的是字符的ASCII碼值,而字符串常量,除了要存儲(chǔ)有效的字符外,還要存儲(chǔ)一個(gè)結(jié)束標(biāo)志0。1102. 變量變量:在程序運(yùn)行期間,變量的值是可以改變的在程序運(yùn)行期間,變量的值是可以改變的n變量必須變量必須先定義先定義,后使用后使用n定義定義變量變量時(shí)指定該變量的時(shí)指定該變量的名字名字和和類(lèi)型類(lèi)型n變量名變量名和和變量值變量值是是兩個(gè)不同的概念兩個(gè)不同的概念n變量名實(shí)際上是以一個(gè)名字代表的一個(gè)變量名實(shí)際上是以一個(gè)名字代表

50、的一個(gè)存儲(chǔ)地址存儲(chǔ)地址n從變量中取值,實(shí)際上是通過(guò)變量名找到相應(yīng)的內(nèi)存從變量中取值,實(shí)際上是通過(guò)變量名找到相應(yīng)的內(nèi)存地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)地址,從該存儲(chǔ)單元中讀取數(shù)據(jù)3.1.2 常量與變量111方式:1、定義變量的同時(shí)賦初值(也叫變量初始化)。 格式: 數(shù)據(jù)類(lèi)型 變量名=初值, 變量名2=初值2;2、通過(guò)一個(gè)賦值語(yǔ)句給變量賦初值。 格式 : 變量名=初值;變量賦初值出現(xiàn)在函數(shù)體的聲明部分出現(xiàn)在函數(shù)體的執(zhí)行部分int a,b=3;int a,b;b=3;1121、程序中用到的變量必須“先定義(declare),后使用”。2、C語(yǔ)言的關(guān)鍵字不能用作變量名。3、C語(yǔ)言對(duì)英文字母的大小寫(xiě)敏感,即

51、同一字母的大小寫(xiě),被認(rèn)為是兩個(gè)不同的字符。4、定義變量時(shí),給幾個(gè)變量賦相同的初值, 應(yīng)寫(xiě)成 : int a=3,b=3,c=3; 不能寫(xiě)成: int a=b=c=3; 5、給變量賦值時(shí),正常情況下應(yīng)給變量賦相同類(lèi)型的數(shù)據(jù)。若給變量賦與其類(lèi)型不同的數(shù)據(jù)時(shí),需進(jìn)行類(lèi)型轉(zhuǎn)換。關(guān)于變量以及變量賦初值的幾點(diǎn)說(shuō)明113變量舉例include void main() int student,age; int if=adrress=1; float score=90; stadent=2; Age=20.7; printf(%d %d %d %f,if,student,age,score);本程序中有幾處錯(cuò)誤

52、?undeclared identifier114變量使用要注意長(zhǎng)度n不要對(duì)變量所占的內(nèi)存空間字節(jié)數(shù)想當(dāng)然q用sizeof獲得變量或者數(shù)據(jù)類(lèi)型的長(zhǎng)度q程序在Turbo C2.0和Visual C+6.0下的運(yùn)行結(jié)果不同1153.1.3 3.1.3 數(shù)據(jù)類(lèi)型轉(zhuǎn)換數(shù)據(jù)類(lèi)型轉(zhuǎn)換(一) 隱式轉(zhuǎn)換(自動(dòng)轉(zhuǎn)換)(二) 顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)116(一)隱式轉(zhuǎn)換(自動(dòng)轉(zhuǎn)換)(一)隱式轉(zhuǎn)換(自動(dòng)轉(zhuǎn)換)轉(zhuǎn)換發(fā)生條件v運(yùn)算轉(zhuǎn)換-不同類(lèi)型數(shù)據(jù)混合運(yùn)算時(shí)v賦值轉(zhuǎn)換-把一個(gè)值賦給與其類(lèi)型不同的 變量時(shí)v輸出轉(zhuǎn)換-輸出時(shí)轉(zhuǎn)換成指定的輸出格式v函數(shù)調(diào)用轉(zhuǎn)換-實(shí)參與形參類(lèi)型不一致時(shí)轉(zhuǎn)換先轉(zhuǎn)換、后運(yùn)算117隱式轉(zhuǎn)換(自動(dòng)轉(zhuǎn)換)隱

53、式轉(zhuǎn)換(自動(dòng)轉(zhuǎn)換)n同種數(shù)據(jù)類(lèi)型的運(yùn)算結(jié)果,還是該類(lèi)型同種數(shù)據(jù)類(lèi)型的運(yùn)算結(jié)果,還是該類(lèi)型n不同種數(shù)據(jù)類(lèi)型的運(yùn)算結(jié)果,是兩種類(lèi)型中取值不同種數(shù)據(jù)類(lèi)型的運(yùn)算結(jié)果,是兩種類(lèi)型中取值范圍更大的那種范圍更大的那種long double double float = long = int =short charn把數(shù)據(jù)賦值給另外一種類(lèi)型變量也會(huì)發(fā)生自動(dòng)類(lèi)把數(shù)據(jù)賦值給另外一種類(lèi)型變量也會(huì)發(fā)生自動(dòng)類(lèi)型轉(zhuǎn)換型轉(zhuǎn)換q從小到大,順利轉(zhuǎn)換從小到大,順利轉(zhuǎn)換q從大到小,可能丟失信息(好的編譯器會(huì)發(fā)出警告)從大到小,可能丟失信息(好的編譯器會(huì)發(fā)出警告)見(jiàn)教材28頁(yè)118隱式轉(zhuǎn)換(自動(dòng)轉(zhuǎn)換)隱式轉(zhuǎn)換(自動(dòng)轉(zhuǎn)換)不同類(lèi)型數(shù)據(jù)

54、間的混合運(yùn)算:n+、-、*、/ 運(yùn)算的兩個(gè)數(shù)中有一個(gè)數(shù)為float或double型,結(jié)果是double型。系統(tǒng)將float型數(shù)據(jù)都先轉(zhuǎn)換為double型,然后進(jìn)行運(yùn)算;(2) 如果int型與float或double型數(shù)據(jù)進(jìn)行運(yùn)算,先把int型和float型數(shù)據(jù)轉(zhuǎn)換為double型,然后進(jìn)行運(yùn)算,結(jié)果是double型;(3)字符型數(shù)據(jù)與整型數(shù)據(jù)進(jìn)行運(yùn)算,就是把字符的ASCII代碼與整型數(shù)據(jù)進(jìn)行運(yùn)算.119int i;float f;double d;long e; i=2;f=2.5;d=3.9;e=3; 10+a+i*f-d/e1075.01.3112. 0110. 7intdoubledou

55、bledoubledouble 思考:根據(jù)已知變量定義及賦值語(yǔ)句,計(jì)算以下表達(dá)式的值,并說(shuō)明每一步所得結(jié)果的數(shù)據(jù)類(lèi)型。120(二)顯式轉(zhuǎn)換(強(qiáng)制轉(zhuǎn)換)一般形式 (要轉(zhuǎn)換成的數(shù)據(jù)類(lèi)型)(被轉(zhuǎn)換的表達(dá)式)注:當(dāng)被轉(zhuǎn)換的表達(dá)式是一個(gè)簡(jiǎn)單表達(dá)式時(shí),外面的一對(duì)圓括號(hào)可以缺省。舉例 float x,y; x=2.3 ; y=4.5; (int)(x+y) / 6 (int) (int)x+y / 6.5 (double)說(shuō)明強(qiáng)制轉(zhuǎn)換得到的是所需類(lèi)型的中間變量,原變量或表達(dá)式的類(lèi)型不變。121#include void main() float x; int i; x=3.6; i=(int)x; prin

56、tf(x=%f,i=%d,x,i);思考:以下程序的輸出結(jié)果是什么?x=3.600000,i=3程序運(yùn)行結(jié)果:結(jié)論:較高類(lèi)型向較低類(lèi)型轉(zhuǎn)換時(shí)可能發(fā)生精度損失問(wèn)題122舉例:已知三角形的邊長(zhǎng)a、b、c,求三角形周長(zhǎng)的一半。#include void main() float a,b,c,s; a=3;b=4;c=5; s=1/2 * (a+b+c); printf(s=%8.2f,s);s= 0.00程序運(yùn)行結(jié)果:?s= 6.00程序運(yùn)行結(jié)果:改為:1.0/2 (1/2.0)或 (float)1/2 (1/(float)2)123n C運(yùn)算符簡(jiǎn)介n 算術(shù)運(yùn)算符和算術(shù)表達(dá)式n 賦值運(yùn)算符和賦值表達(dá)

57、式n 逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式n 關(guān)系運(yùn)算符和表達(dá)式n 邏輯運(yùn)算符和表達(dá)式n 條件運(yùn)算符與表達(dá)式3.2 運(yùn)算符與表達(dá)式1241、算術(shù)運(yùn)算符 + - * / %2、關(guān)系運(yùn)算符 = = != 3、邏輯運(yùn)算符 ! & |4、位運(yùn)算符 | &5、賦值運(yùn)算符 =及其擴(kuò)展賦值運(yùn)算符6、條件運(yùn)算符 ? :7、逗號(hào)運(yùn)算符 ,8、指針運(yùn)算符 * &9、求字節(jié)數(shù)運(yùn)算符 sizeof10、強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符 (類(lèi)型)11、分量運(yùn)算符 . 12、下標(biāo)運(yùn)算符 13、其他 如函數(shù)調(diào)用運(yùn)算符()分類(lèi) 運(yùn)算符 詳見(jiàn)254頁(yè)!C運(yùn)算符簡(jiǎn)介125 運(yùn)算符必須有運(yùn)算對(duì)象,分為3類(lèi): 運(yùn)算對(duì)象是一個(gè)的,則稱(chēng)為單

58、目運(yùn)算 運(yùn)算對(duì)象是兩個(gè)的,則稱(chēng)為雙目運(yùn)算 運(yùn)算對(duì)象是三個(gè)的,則稱(chēng)為三目運(yùn)算C運(yùn)算符簡(jiǎn)介126基本算術(shù)運(yùn)算符+ - * / %說(shuō)明 例: 5/3=1 -5/3=-1模運(yùn)算符或求余運(yùn)算符算術(shù)表達(dá)式用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱(chēng)操作數(shù))連接起來(lái)的、符合C語(yǔ)法規(guī)則的式子。優(yōu)先級(jí)和結(jié)合性先乘除、后加減,有括號(hào)先算括號(hào)。自左至右常量、變量、函數(shù)等說(shuō)明 兩個(gè)整數(shù)相除的結(jié)果為整數(shù),舍去小數(shù)部分。當(dāng)商為負(fù)數(shù)時(shí),多采用“向零取整”的方法。求余運(yùn)算的兩側(cè)均應(yīng)為整數(shù) 5%3=2例: a*b/c-1.5+a 算術(shù)運(yùn)算符和算術(shù)表達(dá)式如果一個(gè)運(yùn)算符兩側(cè)的數(shù)據(jù)類(lèi)型不同,先自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換,使二者具有同一類(lèi)型,然后進(jìn)行運(yùn)算

59、。127格式: 前置:+i , -i (在使用i之前,使i的值加(減)1) 后置:i+ , i- (在使用i之后,使i的值加(減)1)自增、自減運(yùn)算符作用:自增運(yùn)算符()使單個(gè)變量的值增1; 自減運(yùn)算符()使單個(gè)變量的值減1。例i=3;A) j=+i;j=i+;B) j=-i+;i=i+1i=i-1? j,i A) j=4 i=4j=3 i=4B) j=-3+和-結(jié)合方向是“自右至左”128(1) 自增、自減運(yùn)算是語(yǔ)言特有的,常用于循環(huán)語(yǔ)句中,使循環(huán)控 制變量加(或減),以及指針變量中,使指針指向下(或上)一個(gè)地址。(2) 自增、自減運(yùn)算符,不能用于常量和表達(dá)式。例如,5+、-(a+b)等都是

60、非法的。(3) +和-的結(jié)合方向?yàn)樽杂抑磷?。(P30)(4) 如果對(duì)一個(gè)變量的自增自減運(yùn)算,單獨(dú)構(gòu)成語(yǔ)句,而不是作為表達(dá)式的一部分時(shí),前置和后置運(yùn)算效果一樣,都是使變量自加。如i+;和 +i;是一樣的,都是使i加。(5) 在表達(dá)式中,連續(xù)使用同一變量進(jìn)行自增或自減運(yùn)算時(shí),很容易出錯(cuò),所以最好避免這種用法。說(shuō)明129賦值運(yùn)算符簡(jiǎn)單賦值運(yùn)算符:=復(fù)合賦值運(yùn)算符:+=, -=,*=,/=,%= 簡(jiǎn)單賦值運(yùn)算符的一般形式為: 變量 = 表達(dá)式它的作用是將一個(gè)表達(dá)式的值賦給一個(gè)變量。 復(fù)合賦值運(yùn)算的一般格式為: 變量 雙目運(yùn)算符 = 表達(dá)式 復(fù)合賦值運(yùn)算符 它等價(jià)于:變量 = 變量 雙目運(yùn)算符 (表達(dá)式)。只有當(dāng)表達(dá)式簡(jiǎn)化為一個(gè)變量或一個(gè)常數(shù)時(shí),兩邊的括號(hào)可以省略。賦值運(yùn)算符和賦值表達(dá)式130賦值表達(dá)式格式: 賦值表達(dá)式的值:被賦變量的值類(lèi)型轉(zhuǎn)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論