C語言程序設(shè)計(jì)第五版譚浩強(qiáng)[533頁]
《C語言程序設(shè)計(jì)第五版譚浩強(qiáng)[533頁]》由會員分享,可在線閱讀,更多相關(guān)《C語言程序設(shè)計(jì)第五版譚浩強(qiáng)[533頁](533頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、教材、參考書與課時(shí)安排教材教材C程序設(shè)計(jì)程序設(shè)計(jì) (第二版)(第二版) 譚浩強(qiáng)編著譚浩強(qiáng)編著 清華大學(xué)出版社清華大學(xué)出版社參考書參考書C語言程序設(shè)計(jì)教程語言程序設(shè)計(jì)教程 譚浩強(qiáng)譚浩強(qiáng) 高等教育出版社高等教育出版社C高級實(shí)用程序設(shè)計(jì)高級實(shí)用程序設(shè)計(jì) 王士元王士元 清華大學(xué)出版社清華大學(xué)出版社C程序設(shè)計(jì)試題匯編程序設(shè)計(jì)試題匯編 譚浩強(qiáng)譚浩強(qiáng) 清華大學(xué)出版社清華大學(xué)出版社課時(shí)安排課時(shí)安排64學(xué)時(shí)學(xué)時(shí)熟記熟記C語言的基本概念語言的基本概念熟悉熟悉Turbo C的上機(jī)操作環(huán)境的上機(jī)操作環(huán)境會讀、會編、會調(diào)試會讀、會編、會調(diào)試C程序程序 學(xué)習(xí)要點(diǎn) 熟記熟記C語言的語法語言的語法 學(xué)會算法分析與算法設(shè)計(jì)學(xué)會
2、算法分析與算法設(shè)計(jì)課程目的課程要求課前請做好預(yù)習(xí)課前請做好預(yù)習(xí)保持課堂安靜,頭腦清醒,思維活躍保持課堂安靜,頭腦清醒,思維活躍認(rèn)真、獨(dú)立、按時(shí)完成并提交作業(yè)認(rèn)真、獨(dú)立、按時(shí)完成并提交作業(yè)重視上機(jī)實(shí)踐,有效利用寶貴的上機(jī)時(shí)間重視上機(jī)實(shí)踐,有效利用寶貴的上機(jī)時(shí)間 第1章 C語言概述第2章 程序的靈魂算法第3章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式第4章 最簡單的C程序設(shè)計(jì)順序程序設(shè)計(jì)第5章 選擇結(jié)構(gòu)程序設(shè)計(jì)第6章 循環(huán)控制第7章 數(shù)組第8章 函數(shù)第9章 預(yù)處理命令第10章 指針第11章 結(jié)構(gòu)體與共用體第12章 位運(yùn)算第13章 文件目 錄C語言發(fā)展歷史C語言的特點(diǎn)簡單的C程序介紹C程序的上機(jī)步驟第1章 C語言概
3、述 C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述1.1 C語言發(fā)展歷史語言發(fā)展歷史程序設(shè)計(jì)語言的發(fā)展程序設(shè)計(jì)語言的發(fā)展機(jī)器語言匯編語言高級語言面向過程面向?qū)ο驝PU指令系統(tǒng),由0、1序列構(gòu)成的指令碼組成如:10000000 加 10010000 減用助記符號描述的指令系統(tǒng),可進(jìn)行地址、位操作如 ADD A, B編寫系統(tǒng)軟件,直接對硬件操作,可讀性,移植性差面向機(jī)器的語言 C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述可讀性,移植性好,編寫應(yīng)用程序一般較難實(shí)現(xiàn)匯編語言的某些功能如:地址和位的操作C語言兼有高級和低級語言的功能適合寫系統(tǒng)軟件和應(yīng)用軟件又稱中級語言C語言發(fā)展過程語言發(fā)展
4、過程v產(chǎn)生背景產(chǎn)生背景l(fā) ALGOL 60CPL語言語言BCPLB語言,寫語言,寫UNIX系統(tǒng)系統(tǒng)v產(chǎn)生過程產(chǎn)生過程l 時(shí)間時(shí)間:19721973l 地點(diǎn)地點(diǎn):美國貝爾實(shí)驗(yàn)室美國貝爾實(shí)驗(yàn)室l 目的目的:UNIX操作系統(tǒng)操作系統(tǒng)l 設(shè)計(jì)人設(shè)計(jì)人: Ken.Thompson和和Dennis.M.RitchievC標(biāo)準(zhǔn)標(biāo)準(zhǔn)l 標(biāo)準(zhǔn)標(biāo)準(zhǔn)C: 1978年年 K&R合著合著The C Programming Languagel ANSI C: 1983年年l 87 ANSI C: 1987年年l 1990年國際標(biāo)準(zhǔn)的年國際標(biāo)準(zhǔn)的ANSI C ,1994年再次修訂。年再次修訂。vC版本版本lMicrosof
5、t C 或稱或稱 MS-C lTurbo C 或稱或稱 TC C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述1.2 C語言的特點(diǎn)語言的特點(diǎn)語言簡潔、緊湊、靈活語言簡潔、緊湊、靈活運(yùn)算符豐富運(yùn)算符豐富數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型豐富數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型豐富v鏈表、樹、棧鏈表、樹、棧程序設(shè)計(jì)結(jié)構(gòu)化、模塊化程序設(shè)計(jì)結(jié)構(gòu)化、模塊化v結(jié)構(gòu)化控制語句:結(jié)構(gòu)化控制語句:ifelse、while、switch、forv函數(shù)作為模塊單位函數(shù)作為模塊單位語法不嚴(yán)格、程序設(shè)計(jì)自由度大語法不嚴(yán)格、程序設(shè)計(jì)自由度大可以訪問內(nèi)存地址、進(jìn)行位運(yùn)算可以訪問內(nèi)存地址、進(jìn)行位運(yùn)算生成目標(biāo)代碼質(zhì)量高生成目標(biāo)代碼質(zhì)量高可移植性好可移植性好
6、 C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述32個(gè)關(guān)鍵字:(auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeof static structswitch typedef unsigned union voidvolatile whileTurbo C擴(kuò)充了11個(gè)關(guān)鍵字:asm_cs_ds_es_sscdeclfarhugeinterruptnearpascal 注意:在注意:在C語
7、言中,關(guān)鍵字都是小寫的。語言中,關(guān)鍵字都是小寫的。 C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述C語言簡潔、緊湊,使用方便、靈活。ANSI C一共只有32個(gè)關(guān)鍵字,見365頁 附錄B 9種控制語句:if( )elsefor( )while( )dowhile( )continuebreakswitchgotoreturn C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述C語言有 9 種控制語句,程序書寫形式自由,主要用小寫字母表示,壓縮了一切不必要的成分。 C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述表1.1 C語言與Pascal語言比較通過表1.1 我們可以得出結(jié)論:C比
8、 Pascal簡練,因此源程序更短,編程效率高。C語言PASCAL語言含義 if(e) S;int i;int a10;int f();int *p;i+=2;i+, +I;BEGIN ENDIF (e) THEN S;VAR i :INTEGER;VAR a:ARRAY1.10 OF INTEGER;FUNCTION f():INTEGER;VAR P: INTEGER; i=i+2;i=i+1;函數(shù)體、分程序、復(fù)合語句條件語句 定義i為整形變量定義a為一維數(shù)組定義f為返回整形值函數(shù);p為指向整形變量的指針變量; 賦值語句,使i+2賦給Ii自增值1,i加1賦給I34種運(yùn)算符:算術(shù)運(yùn)算符:+
9、- * / % + -關(guān)系運(yùn)算符: = !=邏輯運(yùn)算符:! & |位運(yùn)算符 : | &賦值運(yùn)算符:= 及其擴(kuò)展條件運(yùn)算符:?:逗號運(yùn)算符:,指針運(yùn)算符:* &求字節(jié)數(shù) :sizeof強(qiáng)制類型轉(zhuǎn)換:(類型)分量運(yùn)算符:. -下標(biāo)運(yùn)算符:其它 :( ) -注意:各種運(yùn)算符混合使用,其優(yōu)先級與結(jié)注意:各種運(yùn)算符混合使用,其優(yōu)先級與結(jié) 合方法是難點(diǎn),可先預(yù)習(xí)。合方法是難點(diǎn),可先預(yù)習(xí)。 C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述C語言運(yùn)算符豐富(附錄C)C數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型void定義類型typedef數(shù)值類型字符類型char枚舉類型enum整 型浮點(diǎn)型單精度型float雙
10、精度型double短整型short長整型long整型int數(shù)組結(jié)構(gòu)體struct共用體union C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述C語言數(shù)據(jù)結(jié)構(gòu)豐富1.3 簡單的簡單的C程序介紹程序介紹/* example1.1 The first C Program*/#include void main() printf(“This is a c program.n”); C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述注釋編譯預(yù)處理主函數(shù)語句輸出:This is a c program.例例1.1 1.1 第一個(gè)程序第一個(gè)程序This is a c program . print
11、fprintf語句中的“nn”是換行換行符符 例例1.21.2求求倆倆個(gè)個(gè)數(shù)數(shù)的的和和/* example1.1 calculate the sum of a and b*/#include /* This is the main program */void 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
12、);運(yùn)行結(jié)果:sum=34函數(shù)語句預(yù)處理命令注釋 C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述例例1.3 1.3 從鍵盤輸入兩個(gè)整數(shù),輸出其中較大的數(shù)從鍵盤輸入兩個(gè)整數(shù),輸出其中較大的數(shù)#include void main() int max(int x,int y) int a,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf( max = %d,c);int max(int x,int y) int z; if(xy) z=x; else z=y; return(z);scanfscanf語句中“&a”的含義是“取地址取地址”輸入:10,2
13、0 輸出:max = 20聲明部分,定義變量聲明部分,定義變量調(diào)用調(diào)用max函數(shù),返回值賦給函數(shù),返回值賦給c定義定義max子函數(shù),函數(shù)值子函數(shù),函數(shù)值、形參、形參x、y為整型為整型通過通過max函數(shù)將函數(shù)將z值帶回調(diào)用處值帶回調(diào)用處C語言格式特點(diǎn)語言格式特點(diǎn)v習(xí)慣用習(xí)慣用小寫小寫字母,大小寫敏感字母,大小寫敏感v不使用行號,不使用行號,無程序行無程序行概念概念v可使用空行和空格可使用空行和空格v常用常用鋸齒形鋸齒形書寫格式書寫格式 C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述main( ) . . . . . . .main( ) int i , j , sum; sum=0; fo
14、r(i=1; i10;i+) for(j=1;j10;j+) sum+=i*j ; printf(“%dn”,sum);優(yōu)秀程序員的素質(zhì)之一: 使用TAB縮進(jìn) 對齊 有足夠的注釋 有合適的空行C語言結(jié)構(gòu)特點(diǎn)語言結(jié)構(gòu)特點(diǎn)v函數(shù)與主函數(shù)函數(shù)與主函數(shù)l程序由一個(gè)或多個(gè)函數(shù)組成程序由一個(gè)或多個(gè)函數(shù)組成l必須有且只能有一個(gè)主函數(shù)必須有且只能有一個(gè)主函數(shù)main(),可以放在程序中任一可以放在程序中任一位置位置l程序執(zhí)行從程序執(zhí)行從main開始,在開始,在main中結(jié)束,其它函數(shù)通過嵌中結(jié)束,其它函數(shù)通過嵌套調(diào)用得以執(zhí)行。套調(diào)用得以執(zhí)行。v程序語句程序語句lC程序由語句組成程序由語句組成l用用“;”作為語
15、句終止符作為語句終止符v注釋注釋l/* */為注釋為注釋,不能嵌套不能嵌套l不產(chǎn)生編譯代碼不產(chǎn)生編譯代碼例: /*This is the main /* of example1.1*/ */ 非法v編譯預(yù)處理命令編譯預(yù)處理命令 C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述編輯鏈接編譯執(zhí)行1.4 C程序的上機(jī)步驟C程序開發(fā)步驟 開 始 編 輯 編 譯 連 接 執(zhí) 行 有錯(cuò)?結(jié)果正確? 結(jié) 束有源程序 file.c目 標(biāo) 程序file.obj庫函數(shù)和其它目標(biāo)程序可執(zhí)行目標(biāo)程序無正確不正確file.exe C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述程序代碼的錄入,生成源程序*.c語
16、法分析查錯(cuò),翻譯生成目標(biāo)程序*.obj與其它目標(biāo)程序或庫鏈接裝配,生成可執(zhí)行程序*.exe源程序目標(biāo)程序可執(zhí)行程序內(nèi)容程序設(shè)計(jì)語言機(jī)器語言機(jī)器語言可執(zhí)行不可以不可以可以文件名后綴.c或.cpp.obj.exeTurbo C集成開發(fā)環(huán)境集成開發(fā)環(huán)境v配置要求配置要求lUNIX,PC-DOS,MS-DOS,UCDOS操作系統(tǒng)操作系統(tǒng)l硬盤容量約硬盤容量約2M,448K RAM運(yùn)行空間運(yùn)行空間v安裝安裝Turbo Cl創(chuàng)建子目錄創(chuàng)建子目錄lInstalll若不是可安裝盤若不是可安裝盤,將文件拷貝到對應(yīng)的目錄下將文件拷貝到對應(yīng)的目錄下TC*.*INCLUDELIB*.*SYS*.* C語言程序設(shè)計(jì) 第
17、一章第一章 C C語言概述語言概述v進(jìn)入進(jìn)入Turbo ClD:TCTC.exe l主控菜單主控菜單u文件操作文件操作FILE :New Load Save Write tou編輯操作編輯操作EDIT:插入插入/修改修改 塊塊 查找查找/替換替換u編譯鏈接編譯鏈接COMPILE LINK MAKEu執(zhí)行執(zhí)行RUNv退出退出Turbo ClAlt +xlAlt+F ,Qv幫助幫助HelplF1lCtrl+F1 C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述基本操作:F10-調(diào)用主菜單F2-存盤F3-打開F1-幫助信息Alt+F9-CompileCtrl+F9-RunAlt+F5-User
18、ScreenAlt+X -退出Tcv常用熱鍵常用熱鍵文本編輯:-移動光標(biāo)PgUp,PgDn-上下翻頁Ctrl+PgUp,Ctrl+PgDn-文件首尾Home行首 End行尾Ddelete Insert Bkspace塊操作:Ctrl+KB-塊開始標(biāo)記 Ctrl+KK-塊結(jié)束標(biāo)記Ctrl+KC-塊拷貝 Ctrl+KV-塊移動Ctrl+KY-塊刪除 Ctrl+KH-塊隱藏程序調(diào)試:F8-Step over F7-Trace intoF4-Goto Cursor Ctrl+F7-Add WatchCtrl+F8-Toggle Breakpoint Ctrl+F2-Program Reset窗口操作:
19、F5-窗口縮放F6-窗口切換 C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述課后作業(yè)課后作業(yè)預(yù)習(xí)預(yù)習(xí)“題解與上機(jī)指導(dǎo)題解與上機(jī)指導(dǎo)”一書中一書中vP181199頁的頁的14.314.10節(jié)節(jié)vP236頁實(shí)驗(yàn)頁實(shí)驗(yàn)1教材教材P12: 1.5、 1.6、 1.7、 1.8題題。注意:有關(guān)設(shè)計(jì)程序的作業(yè),必須經(jīng)過上機(jī)注意:有關(guān)設(shè)計(jì)程序的作業(yè),必須經(jīng)過上機(jī)調(diào)試!調(diào)試! C語言程序設(shè)計(jì) 第一章第一章 C C語言概述語言概述算法的概念簡單算法舉例算法的特性怎樣表示一個(gè)算法第2章 程序的靈魂算法 C語言程序設(shè)計(jì) 第二章第二章 程序的靈魂程序的靈魂算法算法結(jié)構(gòu)化程序設(shè)計(jì)方法 C語言程序設(shè)計(jì) 第二章第二章
20、 程序的靈魂程序的靈魂算法算法程序包括的內(nèi)容:程序包括的內(nèi)容:v數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)的類型和組織形式數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)的類型和組織形式v算法:操作步驟的描述算法:操作步驟的描述Nikiklaus Wirth提出提出: 程序程序= = 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)+ +算法算法教材認(rèn)為:教材認(rèn)為: 程序程序 = =算法算法+ +數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)+ +程序設(shè)計(jì)方法程序設(shè)計(jì)方法+ +語言工具和環(huán)境語言工具和環(huán)境 靈魂靈魂加工對象加工對象工具工具 C語言程序設(shè)計(jì) 第二章第二章 程序的靈魂程序的靈魂算法算法2.1 算法的概念算法的概念為解決一個(gè)問題而采取的方法和步驟,就成為解決一個(gè)問題而采取的方法和步驟,就成為算法。例如:歌
21、曲的樂譜,建造房子等。為算法。例如:歌曲的樂譜,建造房子等。算法核心是解決算法核心是解決“做什么做什么”和和“怎么做怎么做”的的問題。問題。vP15頁的例頁的例2.1,求,求15之積。之積。v可以有多種方法,一般采用簡單和運(yùn)算步驟少可以有多種方法,一般采用簡單和運(yùn)算步驟少的。的。準(zhǔn)確、高效準(zhǔn)確、高效計(jì)算機(jī)算法類別計(jì)算機(jī)算法類別v數(shù)值運(yùn)算算法數(shù)值運(yùn)算算法v非數(shù)值運(yùn)算算法非數(shù)值運(yùn)算算法 C語言程序設(shè)計(jì) 第二章第二章 程序的靈魂程序的靈魂算法算法2.2 簡單算法舉例簡單算法舉例例例2.1v方法方法1:累乘:累乘v方法方法2:用循環(huán)結(jié)構(gòu)解決,靈活、通用。:用循環(huán)結(jié)構(gòu)解決,靈活、通用。例例2.2v通過循
22、環(huán)選擇打印通過循環(huán)選擇打印例例2.3v判斷閏年判斷閏年例例2.4v累加求級數(shù)的和,循環(huán)改變正負(fù)號和分母加累加求級數(shù)的和,循環(huán)改變正負(fù)號和分母加1。例例2.5v判斷素?cái)?shù)判斷素?cái)?shù)課后認(rèn)真思考,加深什么是算法的概念 C語言程序設(shè)計(jì) 第二章第二章 程序的靈魂程序的靈魂算法算法2.3 算法的特性算法的特性有窮性有窮性在合理范圍內(nèi)可完成在合理范圍內(nèi)可完成 確定性確定性無歧義性無歧義性 有零個(gè)或多個(gè)輸入有零個(gè)或多個(gè)輸入從外界得到信息從外界得到信息 有一個(gè)或多個(gè)輸出有一個(gè)或多個(gè)輸出問題的答案問題的答案 有效性有效性每步有確定的結(jié)果每步有確定的結(jié)果 C語言程序設(shè)計(jì) 第二章第二章 程序的靈魂程序的靈魂算法算法2.
23、4 怎樣表示一個(gè)算法怎樣表示一個(gè)算法自然語言表示自然語言表示v2.2節(jié)例。易懂,文字冗長,易歧義性節(jié)例。易懂,文字冗長,易歧義性流程圖表示流程圖表示v用流程圖符號構(gòu)成,直觀,易懂用流程圖符號構(gòu)成,直觀,易懂 N-S流程圖表示流程圖表示偽代碼表示偽代碼表示計(jì)算機(jī)語言表示計(jì)算機(jī)語言表示q 順序結(jié)構(gòu)q 選擇結(jié)構(gòu)q 循環(huán)結(jié)構(gòu) C語言程序設(shè)計(jì) 第二章第二章 程序的靈魂程序的靈魂算法算法 傳統(tǒng)流程圖流向混亂、可讀性差,所以應(yīng)該采用結(jié)構(gòu)化流程圖。 結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)v 基本思想:任何程序都可以用三種基本結(jié)構(gòu)表示,基本思想:任何程序都可以用三種基本結(jié)構(gòu)表示,限制使用無條件轉(zhuǎn)移語句(限制使用無條件轉(zhuǎn)移
24、語句(goto)v 結(jié)構(gòu)化程序:由三種基本結(jié)構(gòu)反復(fù)嵌套構(gòu)成的程序結(jié)構(gòu)化程序:由三種基本結(jié)構(gòu)反復(fù)嵌套構(gòu)成的程序v 優(yōu)點(diǎn):結(jié)構(gòu)清晰,易讀,提高程序設(shè)計(jì)質(zhì)量和效率優(yōu)點(diǎn):結(jié)構(gòu)清晰,易讀,提高程序設(shè)計(jì)質(zhì)量和效率三種基本結(jié)構(gòu)三種基本結(jié)構(gòu)v 順序結(jié)構(gòu)順序結(jié)構(gòu)ABAB流程圖N-S圖 C語言程序設(shè)計(jì) 第二章第二章 程序的靈魂程序的靈魂算法算法PAB真假PBA真假v選擇結(jié)構(gòu)選擇結(jié)構(gòu)kA1A2AiAnk=k2k=k1k=knk=ki.l二分支選擇結(jié)構(gòu)二分支選擇結(jié)構(gòu)l多分支選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu) C語言程序設(shè)計(jì) 第二章第二章 程序的靈魂程序的靈魂算法算法v循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)l當(dāng)型循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)l直到型循環(huán)結(jié)構(gòu)直到
25、型循環(huán)結(jié)構(gòu)PA假真當(dāng)P為真AAP真假A直到P為真注:注:A,B,A1.An可以是一個(gè)簡可以是一個(gè)簡單語句,也可以是一個(gè)基本結(jié)構(gòu)單語句,也可以是一個(gè)基本結(jié)構(gòu) C語言程序設(shè)計(jì) 第二章第二章 程序的靈魂程序的靈魂算法算法 三種基本結(jié)構(gòu)的共同特點(diǎn):三種基本結(jié)構(gòu)的共同特點(diǎn): v只有一個(gè)入口;只有一個(gè)入口;v只有一個(gè)出口;只有一個(gè)出口;v結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會被執(zhí)行到;結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會被執(zhí)行到;v結(jié)構(gòu)內(nèi)不存在結(jié)構(gòu)內(nèi)不存在“死循環(huán)死循環(huán)”。 C語言程序設(shè)計(jì) 第二章第二章 程序的靈魂程序的靈魂算法算法2.5 結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序:用三種基本結(jié)構(gòu)組成的程序結(jié)構(gòu)化程序:用三種基
26、本結(jié)構(gòu)組成的程序基本設(shè)計(jì)思路:基本設(shè)計(jì)思路:v復(fù)雜問題分解成復(fù)雜問題分解成 幾個(gè)最基本問題,再分別處理。幾個(gè)最基本問題,再分別處理。采用的方法:采用的方法:v自頂向下;自頂向下;v逐步細(xì)化;逐步細(xì)化;v模塊化設(shè)計(jì):復(fù)雜問題按功能分成多個(gè)子模塊模塊化設(shè)計(jì):復(fù)雜問題按功能分成多個(gè)子模塊v結(jié)構(gòu)化編碼:正確采用三種基本結(jié)構(gòu)實(shí)現(xiàn)結(jié)構(gòu)化編碼:正確采用三種基本結(jié)構(gòu)實(shí)現(xiàn) C語言程序設(shè)計(jì) 第二章第二章 程序的靈魂程序的靈魂算法算法課后作業(yè)課后作業(yè)P36頁習(xí)題:頁習(xí)題:v2.4、2.8(結(jié)合實(shí)驗(yàn)指導(dǎo)讀懂答案)(結(jié)合實(shí)驗(yàn)指導(dǎo)讀懂答案) v用用N-S圖表示圖表示2.4題中題中v用傳統(tǒng)流程圖求解以下問題:將一個(gè)用傳統(tǒng)流
27、程圖求解以下問題:將一個(gè)16進(jìn)制數(shù)進(jìn)制數(shù)轉(zhuǎn)化為轉(zhuǎn)化為10進(jìn)制數(shù)進(jìn)制數(shù) 復(fù)習(xí)二進(jìn)制的基本概念復(fù)習(xí)二進(jìn)制的基本概念v“計(jì)算機(jī)文化基礎(chǔ)計(jì)算機(jī)文化基礎(chǔ)”一書中一書中P2733頁頁第3章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法C的數(shù)據(jù)類型常量與變量整型數(shù)據(jù)實(shí)型數(shù)據(jù)字符型數(shù)據(jù)變量賦初值各種數(shù)值型數(shù)據(jù)間的混合運(yùn)算算術(shù)運(yùn)算符和算術(shù)表達(dá)式賦值運(yùn)算符和賦值表達(dá)式逗號運(yùn)算符和逗號表達(dá)式 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法3.1 C的數(shù)據(jù)類型的數(shù)據(jù)類型C C數(shù)數(shù)據(jù)據(jù)類類型型基本類型基本類型構(gòu)造類型構(gòu)造類型指針類型指針類型空類型空類型 void字符型
28、字符型 char整整 型型實(shí)實(shí) 型(浮點(diǎn)型)型(浮點(diǎn)型)單精度型單精度型 float雙精度型雙精度型 double數(shù)組類型數(shù)組類型結(jié)構(gòu)體類型結(jié)構(gòu)體類型共用體類型共用體類型短整型短整型 short長整型長整型 long整型整型 int枚舉類型枚舉類型 enum數(shù)據(jù)類型決定:1. 數(shù)據(jù)占內(nèi)存字節(jié)數(shù)2. 數(shù)據(jù)取值范圍3. 可以進(jìn)行的操作 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法常量和符號常量常量和符號常量v定義:程序運(yùn)行過程中,其值不能被改變的量(常數(shù))定義:程序運(yùn)行過程中,其值不能被改變的量(常數(shù))v分類:直接常量、分類:直接常量、符號常量符號常量3.2 常量與變量常量與變量類型
29、示例整型常量12 、 0 、 -3實(shí)型常量4.6 、 -1.23字符常量a 、 b 符號常量PRICE 、 PAI C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法l符號常量符號常量: :用用標(biāo)識符標(biāo)識符代表常量代表常量u一般用大寫字母:一般用大寫字母: PRICE 、 PIu定義格式:定義格式: #define 符號常量符號常量 常量常量u其值在作用域內(nèi)不能改變和再賦值。其值在作用域內(nèi)不能改變和再賦值。例例3.1 符號常量舉例符號常量舉例#define PRICE 30#include void main() int num,total; num=10; total=num*PRI
30、CE; printf(total=%dn,total);total=300運(yùn)行結(jié)果:符號常量的優(yōu)點(diǎn)是:見名知意、一改全見名知意、一改全改改 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法變量變量v 定義:其值可以改變的量。定義:其值可以改變的量。v 定義格式:定義格式:數(shù)據(jù)類型數(shù)據(jù)類型 變量名;變量名; v 變量應(yīng)該有名字,并在內(nèi)存中占據(jù)一定的存儲單元。變量應(yīng)該有名字,并在內(nèi)存中占據(jù)一定的存儲單元。 v 變量名和變量值有不同的含義變量名和變量值有不同的含義l變量名實(shí)為一個(gè)符號地址變量名實(shí)為一個(gè)符號地址 a3例例 變量的使用變量的使用main() int a; a=3; printf
31、(“a=%d,a);變量名變量值存儲單元 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法標(biāo)識符標(biāo)識符v定義:標(biāo)識變量名、符號常量名、函數(shù)名、數(shù)組名、定義:標(biāo)識變量名、符號常量名、函數(shù)名、數(shù)組名、 文件名的字符串序列文件名的字符串序列名字名字。v命名規(guī)則:命名規(guī)則:l只能由只能由字母、數(shù)字、下劃線字母、數(shù)字、下劃線組成,且組成,且第一個(gè)字第一個(gè)字符必須是字母或下劃線符必須是字母或下劃線l大小寫字母含義不同,一般用大小寫字母含義不同,一般用小寫小寫l不能使用不能使用關(guān)鍵字關(guān)鍵字lTC允許最長允許最長32個(gè)字符,建議長度不超過個(gè)字符,建議長度不超過8個(gè)字符個(gè)字符v使用:使用:先定義、后使
32、用先定義、后使用標(biāo)識符應(yīng)該“見名知意見名知意”,如,如 total , maxtotal , max標(biāo)識符應(yīng)該“不宜混淆不宜混淆”,如,如 l l與與1 , O1 , O與與0 0這些標(biāo)識符合法嗎?1A、M.D.John、¥123、#33、Tatol、int、max C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法3.3 整型數(shù)據(jù)整型常量(整常數(shù))的三種表示方法整型常量(整常數(shù))的三種表示方法v十進(jìn)制整數(shù):由數(shù)字十進(jìn)制整數(shù):由數(shù)字09和正負(fù)號表示和正負(fù)號表示. . 如 123,-456,0v八進(jìn)制整數(shù):由數(shù)字八進(jìn)制整數(shù):由數(shù)字0開頭開頭, ,后跟數(shù)字后跟數(shù)字07表示表示. . 如 0
33、123,011v十六進(jìn)制整數(shù):由十六進(jìn)制整數(shù):由0 x開頭開頭, ,后跟后跟09,af,AF表示表示. . 如 0 x123,0 xff C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法 補(bǔ)充知識:補(bǔ)充知識:字節(jié)和位字節(jié)和位v內(nèi)存以字節(jié)為單元組成內(nèi)存以字節(jié)為單元組成v每個(gè)字節(jié)有一個(gè)地址每個(gè)字節(jié)有一個(gè)地址v一個(gè)字節(jié)一般由一個(gè)字節(jié)一般由8個(gè)二進(jìn)制位個(gè)二進(jìn)制位組成組成v每個(gè)二進(jìn)位的值是每個(gè)二進(jìn)位的值是0或或101234567012345678910.7643251 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法數(shù)值的表示方法數(shù)值的表示方法原碼、反碼和補(bǔ)碼原碼、反碼和補(bǔ)碼v原碼:
34、最高位為符號位,其余各位為數(shù)值本身的絕對值原碼:最高位為符號位,其余各位為數(shù)值本身的絕對值v反碼:反碼:l正數(shù):反碼與原碼相同正數(shù):反碼與原碼相同l負(fù)數(shù):符號位為負(fù)數(shù):符號位為1,其余位對原碼取反,其余位對原碼取反v補(bǔ)碼:補(bǔ)碼:l正數(shù):原碼、反碼、補(bǔ)碼相同正數(shù):原碼、反碼、補(bǔ)碼相同l負(fù)數(shù):最高位為負(fù)數(shù):最高位為1,其余位為原碼取反,再對整個(gè)數(shù)加,其余位為原碼取反,再對整個(gè)數(shù)加13126912457810119-5=49+7=16=(14)12 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法原碼反碼補(bǔ)碼+7000001110000011100000111-71000011111111
35、00011111001+0000000000000000000000000-0100000001111111100000000數(shù)的范圍0111111111111111(-127+127)0111111110000000(-127+127)0111111110000000(-128+127)(用一字節(jié)表示數(shù))v負(fù)數(shù)補(bǔ)碼轉(zhuǎn)換成十進(jìn)制數(shù):最高位不動,其余位取反加負(fù)數(shù)補(bǔ)碼轉(zhuǎn)換成十進(jìn)制數(shù):最高位不動,其余位取反加1例 補(bǔ)碼:11111001 取反:10000110 加1: 10000111=-7 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法整型變量整型變量v整型數(shù)據(jù)在內(nèi)存中的存放形式整型數(shù)
36、據(jù)在內(nèi)存中的存放形式l數(shù)據(jù)在內(nèi)存中以二進(jìn)制補(bǔ)碼形式存放數(shù)據(jù)在內(nèi)存中以二進(jìn)制補(bǔ)碼形式存放l每一個(gè)整型變量在內(nèi)存中占每一個(gè)整型變量在內(nèi)存中占2個(gè)字節(jié)個(gè)字節(jié) 10的原碼的原碼 反碼反碼 補(bǔ)碼補(bǔ)碼-10的原碼的原碼 取絕對值取絕對值 反碼反碼 補(bǔ)碼補(bǔ)碼00 00 00 00 00 00 10 1000 00 00 00 00 00 10 1000 00 00 00 00 00 10 1010 00 00 00 00 00 10 1000 00 00 00 00 00 10 1011 11 11 11 11 11 01 0111 11 11 11 11 11 01 10整數(shù)的最左二進(jìn)制位是符號位,0正、
37、1負(fù) C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法v整型變量的分類整型變量的分類l三類整型變量三類整型變量 有符號無符號基本型(簡稱整型)int unsigned int短整型short或short intunsigned short長整型long或long intunsigned longl整數(shù)類型和取值范圍整數(shù)類型和取值范圍TURBO C所占位數(shù)最小取值范圍int16-32768+32767short16-32768+32767long32-2147483648+2147483647unsigned int16065535unsigned short16065535unsig
38、ned long3204294967295 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法v整型變量的定義整型變量的定義l先定義后使用先定義后使用強(qiáng)制類型定義強(qiáng)制類型定義int a,b; ( 指定變量指定變量a、b為整型為整型 )unsigned short c, d; (指定變量(指定變量c、d為無符號短整型為無符號短整型 )long e,f; ( 指定變量指定變量e、f為長整型)為長整型) 00 00 00 00 00 00 11 0100 00 00 00 00 00 00 0000 00 00 00 00 00 11 0100 00 00 00 00 00 11 0100
39、00 00 00 00 00 00 0000 00 00 00 00 00 11 0100 00 00 00 00 00 11 0100 00 00 00 00 00 11 01int 型short 型long 型unsigned int 型unsigned int 型unsigned long 型符號位例例3.2 整型變量的定義與使用整型變量的定義與使用 #include void main()int a,b,c,d; unsigned u ; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%dn,c,d); 指定abcd為整型變量指定u為
40、無符號整型變量定義放在函數(shù)開頭的聲明部分作用域不同類型混合運(yùn)算,類型自動轉(zhuǎn)換結(jié)果:a+u=22,b+u= -14定義與賦值同時(shí)進(jìn)行:int a=12; C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法v整型數(shù)據(jù)的溢出整型數(shù)據(jù)的溢出l此情況稱為此情況稱為“溢出溢出”,運(yùn)行時(shí)不報(bào)錯(cuò),運(yùn)行時(shí)不報(bào)錯(cuò),編程時(shí)要注意編程時(shí)要注意01 11 11 11 11 11 11 11整型變量最大值3276710 00 00 00 00 00 00 00加1后是 32768的補(bǔ)碼形式例例3.3 整型數(shù)據(jù)的溢出整型數(shù)據(jù)的溢出 #include void main( ) int a , b; a= 32767;
41、 b= a+1; printf(%d , %d n ,a,b); 32767 , -32768 運(yùn)行結(jié)果:改為:long b;結(jié)果是什么? C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法整型常量的類型整型常量的類型v整型常量的值在整型常量的值在-32768+32767-32768+32767范圍內(nèi),編譯器認(rèn)范圍內(nèi),編譯器認(rèn)為是為是intint類型類型 v整型常量的值超過上述范圍,而在整型常量的值超過上述范圍,而在2147483648 2147483648 +2147483647 +2147483647范圍內(nèi),編譯器認(rèn)為是范圍內(nèi),編譯器認(rèn)為是longlong類型類型v當(dāng)系統(tǒng)定義當(dāng)系統(tǒng)
42、定義short intshort int與與intint占內(nèi)存長度相同,則占內(nèi)存長度相同,則兩種類型常量均可以賦給兩種類型常量均可以賦給 intint和和short intshort int型變量型變量v在整型常量后面加大寫在整型常量后面加大寫L L或小寫或小寫l l,則告訴編譯器,則告訴編譯器,把該整型常量作為把該整型常量作為longlong類型處理。例:類型處理。例:123L123L、0L 0L v在整型常量后面加在整型常量后面加u u,則按無符號整型方式存放,則按無符號整型方式存放,負(fù)數(shù)轉(zhuǎn)換成補(bǔ)碼再按無符號整型方式存放。負(fù)數(shù)轉(zhuǎn)換成補(bǔ)碼再按無符號整型方式存放。 C語言程序設(shè)計(jì) 第三章第三章
43、 程序的靈魂程序的靈魂算法算法3.4 浮點(diǎn)型數(shù)據(jù)浮點(diǎn)型數(shù)據(jù)浮點(diǎn)型常量的表示方法浮點(diǎn)型常量的表示方法v浮點(diǎn)數(shù)(浮點(diǎn)數(shù)(float)又稱為實(shí)數(shù)()又稱為實(shí)數(shù)(real)v兩種表示方法:兩種表示方法:l十進(jìn)制小數(shù)形式:十進(jìn)制小數(shù)形式:必須有小數(shù)點(diǎn)必須有小數(shù)點(diǎn) 如如 0.123 、.123 、123.0 、0.0 、123.l 指數(shù)形式:指數(shù)形式:e或或E之前之前后后必須有數(shù)字;指數(shù)必須為整數(shù)必須有數(shù)字;指數(shù)必須為整數(shù) 如如 123.456e0、12.3456e1 、1.23456e2 、 0.123456e3 、0.0123456e4 等等v規(guī)范化指數(shù)形式規(guī)范化指數(shù)形式l只有一位非零整數(shù)的指數(shù)形式只
44、有一位非零整數(shù)的指數(shù)形式l是指數(shù)的輸出形式是指數(shù)的輸出形式6.28e-2 表示 6.28 10 -2-3.0824e4 表示 3.0824 10 4 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法浮點(diǎn)型變量浮點(diǎn)型變量v浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式浮點(diǎn)型數(shù)據(jù)在內(nèi)存中的存放形式l浮點(diǎn)型數(shù)據(jù)在內(nèi)存中占浮點(diǎn)型數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié)(個(gè)字節(jié)(32位)位)l在內(nèi)存中分成在內(nèi)存中分成3部分,指數(shù)為部分,指數(shù)為2的冪次的冪次 + .314159 1數(shù)符小數(shù)部分指數(shù)v浮點(diǎn)型變量的分類浮點(diǎn)型變量的分類 單精度單精度 floatfloat 32位67雙精度雙精度 doubledouble 型型6464位
45、位1516長雙精度長雙精度long doublelong double型型128128位位1819類類 型型 位數(shù)位數(shù)有效數(shù)字有效數(shù)字float x,y; (指定(指定x、y為單精度浮點(diǎn)型變量)為單精度浮點(diǎn)型變量)double z; (指定(指定z為雙精度浮點(diǎn)型變量)為雙精度浮點(diǎn)型變量)long double t; (指定(指定t t為長雙精度浮點(diǎn)型變量)為長雙精度浮點(diǎn)型變量) C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法v浮點(diǎn)型數(shù)據(jù)的舍入誤差浮點(diǎn)型數(shù)據(jù)的舍入誤差l數(shù)據(jù)超過有效位數(shù),則產(chǎn)生誤差數(shù)據(jù)超過有效位數(shù),則產(chǎn)生誤差l要避免一個(gè)很大的數(shù)與一個(gè)很小的數(shù)加減要避免一個(gè)很大的數(shù)與一
46、個(gè)很小的數(shù)加減例例3.4 浮點(diǎn)型數(shù)據(jù)的舍入誤差浮點(diǎn)型數(shù)據(jù)的舍入誤差 #include void main( ) float a , b; a= 123456.789e5; b= a+20; printf(%f n,b); 舍入誤差使舍入誤差使1.0/3*3 的的結(jié)果并不等于結(jié)果并不等于1 !12345678848.000000 運(yùn)行結(jié)果:浮點(diǎn)型常量的類型浮點(diǎn)型常量的類型l浮點(diǎn)型常量一般按雙精度浮點(diǎn)型常量一般按雙精度64位處理,數(shù)后加位處理,數(shù)后加F或或f按單精度按單精度l浮點(diǎn)型常量不分浮點(diǎn)型常量不分float和和double C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法3.5 字
47、符型數(shù)據(jù)字符型數(shù)據(jù)字符常量字符常量v定義定義: :用用單引號單引號括起來的括起來的單個(gè)單個(gè)字符字符或或轉(zhuǎn)義字符轉(zhuǎn)義字符v字符常量的字符常量的值值:該字符的:該字符的ASCII碼碼值值v定義格式:定義格式:char 變量名變量名 = 值值v轉(zhuǎn)義字符轉(zhuǎn)義字符: :反斜線后面跟一個(gè)字符或一個(gè)代碼值表示反斜線后面跟一個(gè)字符或一個(gè)代碼值表示如 a A n t 如 a97 ,A65 n10, t9char ch=65 與 char ch=A 與char=101是等效的 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法表表3.3 轉(zhuǎn)義字符及其含義轉(zhuǎn)義字符及其含義轉(zhuǎn)義字符含義nvradddtbf“x
48、hh轉(zhuǎn)義字符含義換行垂直制表回車(不換行)響鈴單引號3位8進(jìn)制數(shù)代表的字符水平制表(右移8格)退格換頁反斜線雙引號2位16進(jìn)制數(shù)代表的字符例例3.5 轉(zhuǎn)義字符的使用轉(zhuǎn)義字符的使用 #include void main( ) printf(“ ab ct derftgn”); printf(“htibbj k”);f gdeh j k顯示結(jié)果:顯示結(jié)果: 打印結(jié)果:fab gdeh jik C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法字符變量字符變量l存放字符常量,占用一個(gè)字節(jié),存放存放字符常量,占用一個(gè)字節(jié),存放一個(gè)一個(gè)字符字符l定義形式:定義形式: 賦值:賦值:char c1,
49、c2; c1=a;c2=b;字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法l以二進(jìn)制存放字符的以二進(jìn)制存放字符的ASCII碼值(碼值(0255整數(shù))整數(shù))l與整數(shù)的存儲形式類似與整數(shù)的存儲形式類似v以字符或整數(shù)形式輸出以字符或整數(shù)形式輸出例例3.6 向字符變量賦整數(shù)向字符變量賦整數(shù) #include void main( ) char c1,c2 ; c1=97 ; c2=98 ; printf(“%c %c n,c1,c2); printf(“%d %d n,c1,c2); a b97 98運(yùn)行結(jié)果:運(yùn)行結(jié)果:輸出形式取決于printf函數(shù)中的格式符格式符為“%
50、c”時(shí)輸出的變量值為字字符符格式符為“%d時(shí)輸出的變量值為整整數(shù)數(shù) C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法對字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算對字符數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算l實(shí)質(zhì)是對其實(shí)質(zhì)是對其ASCII值進(jìn)行算術(shù)運(yùn)算值進(jìn)行算術(shù)運(yùn)算例例3.7 大小寫字母的轉(zhuǎn)換大小寫字母的轉(zhuǎn)換 #include void main( )char c1,c2 ; c1=a ; c2=b ; c1=c1-32; c2=c2-32; printf(“%c %c ,c1,c2); A B運(yùn)行結(jié)果:運(yùn)行結(jié)果:字符型與整型間互相賦值字符型與整型間互相賦值例:例: 互相賦值互相賦值 #include void main( )i
51、nt c1; char c2 ; c1=a ; c2=98 ; c1=c1-32; c2=c2-32; printf(“%c %c ,c1,c2); C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法字符串常量字符串常量v定義:用雙引號定義:用雙引號(“ ”)括起來的字符序列括起來的字符序列“How do you do” , “CHINA” , “a” , “$123.45”v存儲:存儲:每個(gè)字符串尾每個(gè)字符串尾自動自動加一個(gè)加一個(gè) 0 作為字作為字符串結(jié)束標(biāo)志符串結(jié)束標(biāo)志h e l l o 0例例 字符串字符串“hellohello”在內(nèi)存中在內(nèi)存中例例 空串空串 “”“”0v字符常
52、量與字符串常量不同字符常量與字符串常量不同a a 0例例 a“a”例: char ch; ch=“A”; 例: char ch; ch=A; C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法3.6 變量賦初值變量賦初值v變量的使用:變量的使用:先定義,后使用先定義,后使用v變量定義位置:變量定義位置:一般一般放在函數(shù)開頭放在函數(shù)開頭v變量初始化變量初始化: :可以在定義時(shí)賦初值可以在定義時(shí)賦初值例: int a=1,b= -3,c; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=1;( )編譯程序根據(jù)變量定義為其分配指定字節(jié)
53、的內(nèi)存單元.地址int a=1, b=-3,c;abc2字節(jié)2字節(jié)2字節(jié)地址地址.內(nèi)存1-3隨機(jī)數(shù)int a=b=c=3 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法3.7 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算v整型、實(shí)型、字符型數(shù)據(jù)間可以混合運(yùn)算整型、實(shí)型、字符型數(shù)據(jù)間可以混合運(yùn)算自動轉(zhuǎn)換自動轉(zhuǎn)換v什么情況下發(fā)生什么情況下發(fā)生l運(yùn)算轉(zhuǎn)換運(yùn)算轉(zhuǎn)換-不同類型數(shù)據(jù)混合運(yùn)算時(shí)不同類型數(shù)據(jù)混合運(yùn)算時(shí)l賦值轉(zhuǎn)換賦值轉(zhuǎn)換-把一個(gè)值賦給與其類型不同的變量時(shí)把一個(gè)值賦給與其類型不同的變量時(shí)l輸出轉(zhuǎn)換輸出轉(zhuǎn)換-輸出時(shí)轉(zhuǎn)換成指定的輸出格式輸出時(shí)轉(zhuǎn)換成指定的輸出格式l函數(shù)調(diào)用轉(zhuǎn)換函數(shù)調(diào)
54、用轉(zhuǎn)換-實(shí)參與形參類型不一致時(shí)轉(zhuǎn)換實(shí)參與形參類型不一致時(shí)轉(zhuǎn)換v運(yùn)算轉(zhuǎn)換規(guī)則運(yùn)算轉(zhuǎn)換規(guī)則: :不同類型數(shù)據(jù)運(yùn)算時(shí)先不同類型數(shù)據(jù)運(yùn)算時(shí)先自動自動轉(zhuǎn)換轉(zhuǎn)換成同一類型成同一類型 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法doublefloatlongunsignedintchar,short低高說明說明:必定的轉(zhuǎn)換必定的轉(zhuǎn)換運(yùn)算對象類型不同時(shí)轉(zhuǎn)換運(yùn)算對象類型不同時(shí)轉(zhuǎn)換例例 char ch; int i; float f; double d;ch/i + f*d - (f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledo
55、ubledoubledoubledoubledouble10+a +i*f - d/l例例 int i; float f; double d; long l; C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法強(qiáng)制轉(zhuǎn)換(見強(qiáng)制轉(zhuǎn)換(見P56P56強(qiáng)制類型轉(zhuǎn)換運(yùn)算符部分)強(qiáng)制類型轉(zhuǎn)換運(yùn)算符部分)v一般形式:一般形式:(類型名類型名)(表達(dá)式)表達(dá)式)例:例:(int)(x+y)(int)(x+y) (int)x+y (int)x+y (double)(3/2) (double)(3/2) (int)3.6 (int)3.6 v說明:強(qiáng)制轉(zhuǎn)換得到說明:強(qiáng)制轉(zhuǎn)換得到 所需類型的中間變量,所需
56、類型的中間變量, 原變量類型不變原變量類型不變 例例3.8#include main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i);結(jié)果:結(jié)果:x=3.600000,i=3較高類型向較低類型轉(zhuǎn)換時(shí)可能發(fā)生 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法3.8 算術(shù)算術(shù)運(yùn)算符和算術(shù)表達(dá)式運(yùn)算符和算術(shù)表達(dá)式C運(yùn)算符算術(shù)運(yùn)算符:(+ - * / % + -)關(guān)系運(yùn)算符:( = !=)邏輯運(yùn)算符:(! & |)位運(yùn)算符 :( | &)賦值運(yùn)算符:(= 及其擴(kuò)展)條件運(yùn)算符:(?:)逗號運(yùn)算符:(,)指針運(yùn)算符:(* &
57、)求字節(jié)數(shù) :(sizeof)強(qiáng)制類型轉(zhuǎn)換:(類型)分量運(yùn)算符:(. -)下標(biāo)運(yùn)算符:()其它 :(( ) -)學(xué)習(xí)運(yùn)算符應(yīng)注意:v運(yùn)算符功能v與運(yùn)算量關(guān)系l要求運(yùn)算量個(gè)數(shù)l要求運(yùn)算量類型v運(yùn)算符優(yōu)先級別v結(jié)合方向v結(jié)果的類型 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符和算術(shù)表達(dá)式v基本算術(shù)運(yùn)算符:基本算術(shù)運(yùn)算符: + - * / %l結(jié)合方向:從左向右結(jié)合方向:從左向右l優(yōu)先級:優(yōu)先級: - -* / % - + - (2) (3) (4)(2) (3) (4)說明:說明:l“- -”可為可為單目單目運(yùn)算符時(shí)運(yùn)算符時(shí), ,右結(jié)合性右結(jié)合性l兩整
58、數(shù)相除,結(jié)果為整數(shù)兩整數(shù)相除,結(jié)果為整數(shù)l% %要求兩側(cè)均為整型數(shù)據(jù)要求兩側(cè)均為整型數(shù)據(jù)l+ - + - * * / / 運(yùn)算的兩個(gè)數(shù)中有一個(gè)數(shù)為實(shí)數(shù),運(yùn)算的兩個(gè)數(shù)中有一個(gè)數(shù)為實(shí)數(shù),結(jié)果是結(jié)果是doubledouble型型例 5/2 = -5/2.0 =例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2例 5/2 = 2 -5/2.0 = -2.5例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 () C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法v自增、自減運(yùn)算符自增、自減運(yùn)算符+ + l作用:使變量值加作用:使變量值加1 1或
59、減或減1 1l種類:種類:u前置前置 +i, -i (+i, -i (先執(zhí)行先執(zhí)行i i+1+1或或i-1i-1,再使用再使用i i值)值)u后置后置 i+,i- (i+,i- (先使用先使用i i值值, ,再執(zhí)行再執(zhí)行i i+1+1或或i-1i-1)例例j=3; k=+j; j=3; k=+j; j=3; k=j+; j=3; k=j+; j=3; printf(j=3; printf(“%d%d”,+j); ,+j); j=3; printf(j=3; printf(“%d%d”,j+); ,j+); a=3;b=5;c=(+a)a=3;b=5;c=(+a)* *b; b; a=3;b=5
60、;c=(a+)a=3;b=5;c=(a+)* *b; b; /k=4,j=4/k=4,j=4/k=3,j=4/k=3,j=4/4,j=4/4,j=4/3,j=4/3,j=4/c=20,a=4/c=20,a=4/c=15,a=4/c=15,a=4 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法l幾點(diǎn)說明:幾點(diǎn)說明:例例 - -i+i+ i=3; printf( i=3; printf(“%d%d”,-i+);,-i+); -(i+) -(i+)/-3/-3 u+ - + - 不能用于常量和表達(dá)式不能用于常量和表達(dá)式, ,如如 5+5+,( (a+b)+a+b)+u+ - + - 結(jié)合
61、方向:結(jié)合方向: 自右向左自右向左u優(yōu)先級:優(yōu)先級:- + - -* / % -+ - (2) (3) (4)(2) (3) (4)u該運(yùn)算符常用于循環(huán)語句中,使循環(huán)變量加減該運(yùn)算符常用于循環(huán)語句中,使循環(huán)變量加減1 1v有關(guān)表達(dá)式使用中的問題說明有關(guān)表達(dá)式使用中的問題說明l不同系統(tǒng)對運(yùn)算符和表達(dá)式的處理次序不同,盡可能不同系統(tǒng)對運(yùn)算符和表達(dá)式的處理次序不同,盡可能寫通用性強(qiáng)的語句寫通用性強(qiáng)的語句l不要寫有歧義和不知系統(tǒng)如何執(zhí)行的程序不要寫有歧義和不知系統(tǒng)如何執(zhí)行的程序 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法3.9 賦值運(yùn)算符和賦值表達(dá)式賦值運(yùn)算符和賦值表達(dá)式v簡單賦值運(yùn)算
62、符簡單賦值運(yùn)算符l符號:符號: = =l格式:格式: 變量標(biāo)識符變量標(biāo)識符= =表達(dá)式表達(dá)式l作用:將一個(gè)數(shù)據(jù)(常量或表達(dá)式)賦給一個(gè)變量作用:將一個(gè)數(shù)據(jù)(常量或表達(dá)式)賦給一個(gè)變量l左側(cè)必須是變量,不能是常量或表達(dá)式左側(cè)必須是變量,不能是常量或表達(dá)式例 a=3; d=func(); c=d+2;例 3=x-2*y; a+b=3; () C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法v賦值表達(dá)式賦值表達(dá)式l形式:形式: l賦值表達(dá)式的值與變量值相等賦值表達(dá)式的值與變量值相等,且可嵌套且可嵌套例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(
63、b=10)/(c=2)/表達(dá)式值為5,a,b,c值為5/ b=5;a=5/表達(dá)式值11,c=6,a=11/表達(dá)式值10,a=10,b=4,c=6/表達(dá)式值5,a=5,b=10,c=2 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法3.10 逗號運(yùn)算符和逗號表達(dá)式逗號運(yùn)算符和逗號表達(dá)式v形式:形式:表達(dá)式表達(dá)式1,表達(dá)式表達(dá)式2,表達(dá)式表達(dá)式nv結(jié)合性結(jié)合性:從左向右從左向右v優(yōu)先級優(yōu)先級: 15,級別最低級別最低v逗號表達(dá)式逗號表達(dá)式的值:等于表達(dá)式的值:等于表達(dá)式n的值的值v用途:用途:常用于循環(huán)常用于循環(huán)for語句中語句中例 a=3*5,a*4 a=3*5,a*4,a+5例 x
64、=(a=3,6*3) x=a=3,6*a例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c); /a=15,表達(dá)式值60/a=15,表達(dá)式值20/賦值表達(dá)式,表達(dá)式值18,x=18/逗號表達(dá)式,表達(dá)式值18,x=3/1,2,3/3,2,3 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法例例: 逗號表達(dá)式使用逗號表達(dá)式使用main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(x=%dn,x); X=3 運(yùn)行結(jié)果:運(yùn)行結(jié)果: 本章的內(nèi)容散亂而復(fù)雜,但
65、卻是程序設(shè)計(jì)的基礎(chǔ),要認(rèn)真看書,通過編程序才可以深入理解。 C語言程序設(shè)計(jì) 第三章第三章 程序的靈魂程序的靈魂算法算法課后作業(yè)課后作業(yè)P6668頁習(xí)題:頁習(xí)題:v3.2, 3.5(思考)(思考) v3.3, 3.4, 3.9, 3.12(寫出答案)(寫出答案) v3.6, 3.10(上機(jī)驗(yàn)證)(上機(jī)驗(yàn)證) 上機(jī):實(shí)驗(yàn)教材:實(shí)驗(yàn)上機(jī):實(shí)驗(yàn)教材:實(shí)驗(yàn)2(做好上機(jī)準(zhǔn)備)(做好上機(jī)準(zhǔn)備)預(yù)習(xí)第四、第五章預(yù)習(xí)第四、第五章第4章 最簡單的C程序設(shè)計(jì)順序程序設(shè)計(jì) C語言程序設(shè)計(jì) 第四章第四章 順序程序設(shè)計(jì)順序程序設(shè)計(jì)C語言概述賦值語句數(shù)據(jù)輸入輸出的概念及在C語言中的實(shí)現(xiàn)字符數(shù)據(jù)的輸入輸出格式輸入與輸出順序結(jié)
66、構(gòu)程序設(shè)計(jì)舉例4.1 C語句概述語句概述C程序結(jié)構(gòu):程序結(jié)構(gòu):v一個(gè)一個(gè)C C程序可以由多個(gè)源程序文件構(gòu)成程序可以由多個(gè)源程序文件構(gòu)成 v一個(gè)源程序文件由若干函數(shù)、預(yù)編譯命令及全局變量聲明部一個(gè)源程序文件由若干函數(shù)、預(yù)編譯命令及全局變量聲明部分構(gòu)成分構(gòu)成v函數(shù)包括數(shù)據(jù)定義部分和執(zhí)行部分,執(zhí)行部分是函數(shù)包括數(shù)據(jù)定義部分和執(zhí)行部分,執(zhí)行部分是C C語言語句,語言語句,完成對數(shù)據(jù)的操作完成對數(shù)據(jù)的操作 C語言程序設(shè)計(jì) 第四章第四章 順序程序設(shè)計(jì)順序程序設(shè)計(jì)源程序文件1預(yù)處理命令全局變量聲明函數(shù)首部局部變量聲明執(zhí)行語句函數(shù)體函數(shù)1函數(shù)n源程序文件2源程序文件nC程序C語句分為語句分為5類類v控制語句:共控制語句:共9種種l完成一定的控制功能,這些語句能夠根據(jù)一定的測試條件完成一定的控制功能,這些語句能夠根據(jù)一定的測試條件決定某些語句是否被執(zhí)行,如分支、循環(huán)、跳轉(zhuǎn)等語句。決定某些語句是否被執(zhí)行,如分支、循環(huán)、跳轉(zhuǎn)等語句。 C語言程序設(shè)計(jì) 第四章第四章 順序程序設(shè)計(jì)順序程序設(shè)計(jì)if( )else (條件語句條件語句)for( )while( ) (循環(huán)語句循環(huán)語句) dowhile( )conti
- 溫馨提示:
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. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 川渝旅游日記成都重慶城市介紹推薦景點(diǎn)美食推薦
- XX國有企業(yè)黨委書記個(gè)人述責(zé)述廉報(bào)告及2025年重點(diǎn)工作計(jì)劃
- 世界濕地日濕地的含義及價(jià)值
- 20XX年春節(jié)節(jié)后復(fù)工安全生產(chǎn)培訓(xùn)人到場心到崗
- 大唐女子圖鑒唐朝服飾之美器物之美繪畫之美生活之美
- 節(jié)后開工第一課輕松掌握各要點(diǎn)節(jié)后常見的八大危險(xiǎn)
- 廈門城市旅游介紹廈門景點(diǎn)介紹廈門美食展示
- 節(jié)后開工第一課復(fù)工復(fù)產(chǎn)十注意節(jié)后復(fù)工十檢查
- 傳統(tǒng)文化百善孝為先孝道培訓(xùn)
- 深圳城市旅游介紹景點(diǎn)推薦美食探索
- 節(jié)后復(fù)工安全生產(chǎn)培訓(xùn)勿忘安全本心人人講安全個(gè)個(gè)會應(yīng)急
- 預(yù)防性維修管理
- 常見閥門類型及特點(diǎn)
- 設(shè)備預(yù)防性維修
- 2.乳化液泵工理論考試試題含答案