版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
計算機程序設計基礎(C語言)1編輯版計算機程序設計基礎(C語言)1編輯版
1.課堂要求很嚴格。2.多聽,適時做筆記。3.上課不能講閑話。4.課后認真完成作業(yè)、實驗報告。5.有問題,及時與老師聯(lián)系。教學要求2編輯版1.課堂要求很嚴格。教學要求2編輯版選用教材與參考書主教科書
顧治華、陳天煌等
《C語言程序設計》
機械工業(yè)出版社
2007.2參考教材顧治華、陳天煌等《C語言程序設計實驗指導》
機械工業(yè)出版社2007.2參考書譚浩強《C語言程序設計》清華大學出版社3編輯版選用教材與參考書主教科書顧治華、陳天煌等《C語言程序課程內(nèi)容第一章C語言程序設計概述
第二章算法及算法設計簡介
第三章數(shù)據(jù)描述與基本操作第四章選擇結構程序設計
第五章循環(huán)結構程序設計
第六章數(shù)組與指針第七章函數(shù)與模塊化程序設計方法4編輯版課程內(nèi)容第一章C語言程序設計概述4編輯版第一章
C語言程序設計概述5編輯版第一章
C語言程序設計概述5編輯版1.1程序設計的概念1.2C語言的產(chǎn)生及發(fā)展1.3簡單C程序介紹1.4
C程序的上機步驟1.5C語言的基本語法和基本結構1.6本章要點小結6編輯版1.1程序設計的概念6編輯版1.1程序設計的概念1.1.1程序設計語言1.1.2程序設計的概念7編輯版1.1程序設計的概念1.1.1程序設計語言7編輯版計算機計算機是用來延伸人的能力的工具,需要人來駕馭我們的職責是讓非計算機專業(yè)的人更容易駕馭它完成這一目標的主要手段之一就是
“編程(Programming)”8編輯版計算機計算機是用來延伸人的能力的工具,需要人來駕馭8編輯版計算機基本工作過程整個過程的執(zhí)行者是硬件,但硬件是受軟件控制的編程,就是編寫軟件,使硬件按照人的意圖工作9編輯版計算機基本工作過程整個過程的執(zhí)行者是硬件,但硬件是受軟件控制計算機基本工作過程輸入/輸出設備存儲器運算器控制器源程序和輸入數(shù)據(jù)輸出結果取出數(shù)據(jù)存入數(shù)據(jù)操作命令存取命令取出程序指令輸入輸出命令計算結果CPU“馮·諾依曼機”結構大腦眼/耳/口程序和數(shù)據(jù)硬盤CPU內(nèi)存執(zhí)行結果10編輯版計算機基本工作過程存儲器運算器控制器源程序輸出結果取出數(shù)據(jù)存軟件的形成軟件(Software)的形成程序員(Programmer)編寫程序源代碼(SourceCode)編譯器(Compiler)把源代碼轉換為可被計算機理解的機器代碼(MachineCode)并把機器代碼以可執(zhí)行文件(ExecutableFile)的形式保存在磁盤上11編輯版軟件的形成軟件(Software)的形成11編輯版機器語言匯編語言高級語言面向過程面向對象CPU指令系統(tǒng),由0、1序列構成的指令碼組成如:10000000加
10010000減用助記符號描述的指令系統(tǒng)如ADDA,B面向機器的語言程序設計是數(shù)據(jù)被加工的過程客觀世界可以分類,對象是類的實例對象是數(shù)據(jù)和方法的封裝對象間通過發(fā)送和接受消息發(fā)生聯(lián)系程序設計關鍵是定義類,并由類派生對象1.1.1程序設計語言12編輯版機器語言匯編語言高級語言面向過程面向對象CPU指令系統(tǒng),由0程序設計語言的故事計算機為什么用二進制呢?為什么不用我們?nèi)粘J煜さ氖M制呢?二進制在在電器元件中容易實現(xiàn)計算機進行二進制運算比進行十進制運算要簡單得多13編輯版程序設計語言的故事計算機為什么用二進制呢?13編輯版程序設計語言的故事機器語言編寫的1+1程序匯編語言(AssembleLanguage)編寫的1+1程序101110000000000100000000000001010000000100000000MOVAX,1ADDAX,114編輯版程序設計語言的故事機器語言編寫的1+1程序10111000M程序設計語言的故事BASIC語言編寫的1+1程序C語言編寫的1+1程序PRINT1+1#include<stdio.h>main(){ printf("%d\n",1+1);}15編輯版程序設計語言的故事BASIC語言編寫的1+1程序PRINT5254565860626466687072747678808284868890929496AdaALGOL60ALGOL68PascalModula-2CPLBCPLBCC++JavaLISPPROLOGCOBOLFORTRAN77FORTRANPL/1Simula67Smalltalk80BASICANSI-BASICQBASICVBFORTRAN9016編輯版5254565860626466687072747678801.1.2程序設計的概念程序設計就是用計算機語言來編寫程序的過程。什么是程序?著名計算機科學家沃思提出有名的公式:算法+數(shù)據(jù)結構=程序17編輯版1.1.2程序設計的概念程序設計就是用計算機語言來編寫程算法即問題的求解過程、計算機的工作步驟。數(shù)據(jù)結構即對參與運算的數(shù)據(jù)怎樣進行合理的組織、安排,以提高程序運行的效率和求解的精確性。程序的兩大要素:數(shù)據(jù)結構、算法18編輯版算法即問題的求解過程、計算機的工作步驟。程序的兩大要素:數(shù)據(jù)1.2C語言的產(chǎn)生和發(fā)展1.2.1C語言的產(chǎn)生1.2.2C語言的發(fā)展1.2.3C語言的特點19編輯版1.2C語言的產(chǎn)生和發(fā)展1.2.1C語言的產(chǎn)1.2.1C語言的產(chǎn)生一切從一個叫“SpaceTravel”的電子游戲開始的……KenThompson為了讓他的游戲能在PDP-7上運行,用匯編語言給PDP-7寫了一個操作系統(tǒng)—UNIX匯編太不好用了,Thompson需要高級語言試驗了一些高級語言,包括Fortran,都不理想他在BCPL基礎上,自己設計了一個B語言UNIX開始發(fā)展,B也不夠用了DennisRitchie加入,把B改造成C開始用C重寫UNIX20編輯版1.2.1C語言的產(chǎn)生一切從一個叫“SpaceT1.2.2C語言的發(fā)展C語言發(fā)展過程產(chǎn)生過程時間:1972~1973地點:美國貝爾實驗室目的:UNIX操作系統(tǒng)設計人:Ken.Thompson和Dennis.M.RitchieC標準標準C:K&R合著《TheCProgrammingLanguage》ANSIC:1983年87ANSIC:1987年1990年國際標準的ANSIC21編輯版1.2.2C語言的發(fā)展C語言發(fā)展過程21編輯版Ritchie和Thompson在開發(fā)UNIX22編輯版Ritchie和Thompson在開發(fā)UNIX22編輯版接受美國國家技術勛章23編輯版接受美國國家技術勛章23編輯版C語言的祖師爺DennisM.Ritchie24編輯版C語言的祖師爺DennisM.Ritchie24編輯版Ritchie漫畫像
25編輯版Ritchie漫畫像
25編輯版C語言本身既有一般高級語言的特點,又由低級語言(匯編語言)的特點。C語言是一種結構化的程序設計語言,它具有實現(xiàn)順序、分支、循環(huán)三種基本結構化控制的語句。C語言簡潔,緊湊,使用方便靈活。只有32個保留字,9種控制語句,書寫形式自由。數(shù)據(jù)類型豐富。有整型、實型、字符型、數(shù)組型、指針型、結構體型、共用體型和枚舉型等。1.2.3C語言的特點26編輯版C語言本身既有一般高級語言的特點,又由低級語言(匯編語言)的5、運算功能強。有32種運算符,包括了算術運算、關系運算、邏輯運算、位運算、指針運算等。6、目標代碼質量高,運行速度快。7、可移植性強。8、語法限制不太嚴格,程序設計自由度大。1.2.3C語言的特點27編輯版5、運算功能強。有32種運算符,包括了算術運算、關系運算、邏C語言是編譯型語言
一種編譯語言對應一種編譯器按照該語言的語法編寫程序源代碼,把自己的思想融入到代碼中編譯器讀入源代碼,把程序員的意圖轉換成可執(zhí)行程序,供他人使用28編輯版C語言是編譯型語言一種編譯語言對應一種編譯器28編輯版C語言與計算機系統(tǒng)層次關系29編輯版C語言與計算機系統(tǒng)層次關系29編輯版1.3簡單C程序介紹30編輯版1.3簡單C程序介紹30編輯版C程序格式和結構特點第一個程序Hello,World!/*example1.1ThefirstCProgram*/#include<stdio.h>main(){printf(“Hello,World!”);}注釋編譯預處理函數(shù)語句輸出:Hello,World!31編輯版C程序格式和結構特點第一個程序Hello,World!注/*example1.2calculatethesumofaandb*/#include<stdio.h>/*Thisisthemainprogram*/main(){inta,b,sum;a=10;b=24;
sum=add(a,b);printf(”sum=%d\n",sum);}/*Thisfunctioncalculatesthesumofxandy*/intadd(intx,inty){intz;z=x+y;return(z);}運行結果:sum=34語句預處理命令注釋主函數(shù)子函數(shù)32編輯版/*example1.2calculat格式特點習慣用小寫字母,大小寫敏感不使用行號,無程序行概念可使用空行和空格常用鋸齒形書寫格式main(){
……………….………………
…………..…………..
……………….
………………………….
……………….………………..}main(){
inti,j,sum;sum=0;for(i=1;i<10;i++){for(j=1;j<10;j++){sum+=i*j;}}printf(“%d\n”,sum);}優(yōu)秀程序員的素質之一:使用TAB縮進{}對齊有足夠的注釋有合適的空行33編輯版格式特點main()main()優(yōu)秀程序員的素質之一:3結構特點函數(shù)與主函數(shù)程序由一個或多個函數(shù)組成必須有且只能有一個主函數(shù)main()程序執(zhí)行從main開始,在main中結束,其它函數(shù)通過嵌套調(diào)用得以執(zhí)行。程序語句C程序由語句組成用“;”作為語句終止符注釋/**/為注釋,不能嵌套不產(chǎn)生編譯代碼例:/*Thisisthemain/*ofexample1.1*/*/非法編譯預處理命令①函數(shù)首部:包括函數(shù)名、函數(shù)類型、函數(shù)參數(shù)名、參數(shù)類型。②函數(shù)體:聲明部分,執(zhí)行部分。34編輯版結構特點例:/*Thisisthemain1.4C程序的上機步驟35編輯版1.4C程序的上機步驟35編輯版編輯鏈接編譯執(zhí)行程序代碼的錄入,生成源程序*.c語法分析查錯,翻譯生成目標程序*.obj與其它目標程序或庫鏈接裝配,生成可執(zhí)行程序*.exe開始編輯編譯
有錯?執(zhí)行連接結果正確結束可執(zhí)行目標程序f.exe源程序f.c目標程序f.obj庫函數(shù)和其他目標程序YesNoYesNo36編輯版編輯鏈接編譯執(zhí)行程序代碼的錄入,語法分析查錯,翻譯與其它目標1.5C語言的基本語法和結構1.5.1C語言的基本語法1.5.2C語言的基本結構37編輯版1.5C語言的基本語法和結構1.5.1C語言1.5.1C語言的基本語法標識符關鍵字運算符分隔符常量注釋符字符集38編輯版1.5.1C語言的基本語法標識符38編輯版標識符常量、變量、語句標號以及自定義函數(shù)的名稱只能是字母、數(shù)字和下劃線組成的字符串,第一個字符必須是字母或下劃線標準C不限制標識符長度,但一般不超過8字符標識符大小寫有區(qū)別標識符名最好能“顧名思義”39編輯版標識符常量、變量、語句標號以及自定義函數(shù)的名稱39編輯版32個關鍵字:(由系統(tǒng)定義,不能重作其它定義)autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile40編輯版32個關鍵字:(由系統(tǒng)定義,不能重作其它定義)40編輯版9種控制語句:if()~else~switch~case~for()~while()~do~while()continuebreakgotoreturn41編輯版9種控制語句:41編輯版34種運算符:算術運算符:+-*/%++--關系運算符:<<===>>=!=邏輯運算符:!&&||位運算符:<<>>~|^&賦值運算符:=及其擴展條件運算符:?:逗號運算符:,指針運算符:*&求字節(jié)數(shù):sizeof強制類型轉換:(類型)分量運算符:.->下標運算符:[]其它:()-42編輯版34種運算符:42編輯版1.5.2C語言的基本結構(1)順序結構
ABab43編輯版1.5.2C語言的基本結構(1)順序結構ABab(2)選擇結構,或稱分支結構
此結構中必包含一個判斷框。根據(jù)給定的條件P是否成立而選擇執(zhí)行A框或B框abBAp不成立成立44編輯版(2)選擇結構,或稱分支結構此結構中必包含一個判斷框。根據(jù)
(3)
循環(huán)結構,它又稱為重復結構,即反復執(zhí)行某一部分的操作。又兩類循環(huán)結構:
a.當型(while型)循環(huán)結構ap1TFAbb.直到型(Until型)循環(huán)結構
aATFbp245編輯版
(3)
循環(huán)結構,它又稱為重復結構,即反復執(zhí)行某一部分1.6本章要點小結程序設計的概念C語言的產(chǎn)生及發(fā)展C語言的特點C程序的介紹和上機步驟C語言的基本語法和結構46編輯版1.6本章要點小結程序設計的概念46編輯版本章課堂練習
(1)以下說法中正確的是().A)C語言程序總是從第一個函數(shù)開始執(zhí)行
B)在C語言程序中,要調(diào)用的函數(shù)必須在main()函數(shù)中定義
C)C語言程序總是從main()函數(shù)開始執(zhí)行
D)C語言程序中的main()函數(shù)必須放在程序的開始部分47編輯版本章課堂練習(1)以下說法中正確的是().47編解答:C解釋:C語言程序總是從main()函數(shù)開始執(zhí)行,而不論其在程序中的位置。當主函數(shù)執(zhí)行完畢時,亦即程序執(zhí)行完畢。除main函數(shù)外,其它函數(shù)都是在執(zhí)行main函數(shù)時被調(diào)用執(zhí)行的。在C語言中,函數(shù)不允許嵌套定義。習慣上,將主函數(shù)main()放在最前頭,但并不是必須的。48編輯版解答:C48編輯版(2).以下敘述不正確的是A)一個C源程序可由一個或多個函數(shù)組成B)一個C源程序必須包含一個main函數(shù)C)C程序的基本組成單位是函數(shù)
D)在C程序中,注釋說明只能位于一條語句的后面49編輯版(2).以下敘述不正確的是49編輯版解答:D解釋:
凡是用“/*”和“*/”括起來的文字,都是注釋。其出現(xiàn)的位置可以任意。50編輯版解答:D50編輯版(3).下列標識符中,合法的變量名有:A)a.bB)$888C)A1D)
3x5651編輯版(3).下列標識符中,合法的變量名有:51編輯版解答:C解釋:變量名只能由字母、數(shù)字和下劃線三種字符所組成,且第一個字符必須為字母或下劃線。C語言的關鍵字不能用作變量名。另外,C語言對英文字母的大小寫敏感,即同一字母的大小寫,被認為是兩個不同的字符。習慣上,變量名和函數(shù)名中的英文字母用小寫,以增加可讀性。52編輯版解答:C52編輯版第二章程序的靈魂:算法53編輯版第二章程序的靈魂:算法53編輯版一個程序主要包括以下兩方面的信息:(1)對數(shù)據(jù)的描述。在程序中要指定用到哪些數(shù)據(jù)以及這些數(shù)據(jù)的類型和數(shù)據(jù)的組織形式這就是數(shù)據(jù)結構(datastructure)(2)對操作的描述。即要求計算機進行操作的步驟也就是算法(algorithm)54編輯版一個程序主要包括以下兩方面的信息:54編輯版數(shù)據(jù)是操作的對象操作的目的是對數(shù)據(jù)進行加工處理,以得到期望的結果著名計算機科學家沃思(NikiklausWirth)提出一個公式:
算法
+數(shù)據(jù)結構=程序55編輯版數(shù)據(jù)是操作的對象55編輯版一個程序除了算法和數(shù)據(jù)結構這主要要素外,還應當采用結構化程序設計方法進行程序設計,并且用某一種計算機語言表示算法、數(shù)據(jù)結構、程序設計方法和語言工具是一個程序設計人員應具備的知識算法+數(shù)據(jù)結構+程序設計方法+語言工具和環(huán)境=程序56編輯版一個程序除了算法和數(shù)據(jù)結構這主要要素外,還應當采用結構化程序算法是解決“做什么”和“怎么做”的問題程序中的操作語句,是算法的體現(xiàn)不了解算法就談不上程序設計57編輯版算法是解決“做什么”和“怎么做”的問題57編輯版2.1算法的概念2.2算法的特性2.3算法的表示2.4結構化程序設計方法58編輯版2.1算法的概念58編輯版2.1算法的概念廣義地說,為解決一個問題而采取的方法和步驟,就稱為“算法”對同一個問題,可以有不同的解題方法和步驟為了有效地進行解題,不僅需要保證算法正確,還要考慮算法的質量,選擇合適的算法59編輯版2.1算法的概念廣義地說,為解決一個問題而采取的方法和步計算機算法可分為兩大類別:數(shù)值運算算法非數(shù)值運算算法數(shù)值運算的目的是求數(shù)值解非數(shù)值運算包括的面十分廣泛,最常見的是用于事務管理領域2.1算法的概念60編輯版計算機算法可分為兩大類別:2.1算法的概念60編輯版可以用最原始的方法進行:步驟1:先求1*2,得到結果2。步驟2:將步驟1得到的乘積2再乘以3,得到結果6。步驟3:將6再乘以4,得24。步驟4:將24再乘以5,得120。這就是最后的結果。例2.1求1×2×3×4×5×…×100太繁瑣例2.1求1×2×3×4×5簡單算法的舉例概念61編輯版可以用最原始的方法進行:例2.1求1×2×3×4×5×…改進的算法:設變量p為被乘數(shù)變量i為乘數(shù)用循環(huán)算法求結果求1×2×3×4×5簡單算法的舉例概念62編輯版改進的算法:求1×2×3×4×5簡單算法的舉例概念62編輯版S1:使p=1,或寫成1pS2:使i=2,或寫成2iS3:使p與i相乘,乘積仍放在變量p中,可表示為:p*ipS4:使i的值加1,即i+1iS5:如果i不大于5,返回重新執(zhí)行S3;否則,算法結束最后得到p的值就是
5!的值若是100,求什么?簡單算法的舉例概念63編輯版S1:使p=1,或寫成1p若是100,求什么?簡單算法的舉
例2.2有50個學生,要求將成績在80-90分的學生的學號和成績輸出。用ni代表第i個學生學號,gi表示第i個學生成績S1:1iS2:如果90≥gi≥80,
則輸出ni和gi,否則不輸出S3:i+1iS4:如果i≤50,返回到步驟S2,繼續(xù)執(zhí)行,否則,算法結束64編輯版例2.2有50個學生,要求將成績在80-90分的學生的2.1算法的概念2.2算法的特性2.3算法的表示2.4結構化程序設計方法65編輯版2.1算法的概念65編輯版一個有效算法應該具有以下特點:(1)
有窮性。一個算法應包含有限的操作步驟,而不能是無限的。(2)
確定性。算法中的每一個步驟都應當是確定的,而不應當是含糊的、模棱兩可的。2.2算法的特性66編輯版一個有效算法應該具有以下特點:2.2算法的特性66編輯版一個有效算法應該具有以下特點:(3)
有零個或多個輸入。所謂輸入是指在執(zhí)行算法時需要從外界取得必要的信息。(4)
有一個或多個輸出。算法的目的是為了求解,“解”就是輸出。沒有輸出的算法是沒有意義的。(5)
有效性。算法中的每一個步驟都應當能有效地執(zhí)行,并得到確定的結果。2.2算法的特性67編輯版一個有效算法應該具有以下特點:2.2算法的特性67編輯版對于一般最終用戶來說:他們并不需要在處理每一個問題時都要自己設計算法和編寫程序可以使用別人已設計好的現(xiàn)成算法和程序只需根據(jù)已知算法的要求給予必要的輸入,就能得到輸出的結果輸入3個數(shù)黑箱子3個數(shù)中最大數(shù)求3個數(shù)的最大數(shù)2.2算法的特性68編輯版對于一般最終用戶來說:輸入3個數(shù)黑箱子3個數(shù)中最大數(shù)求3個數(shù)2.1算法的概念2.2算法的特性2.3算法的表示2.4結構化程序設計方法69編輯版2.1算法的概念69編輯版常用的方法有:自然語言傳統(tǒng)流程圖結構化流程圖偽代碼……2.3算法的表示70編輯版常用的方法有:2.3算法的表示70編輯版自然語言表示法2.1節(jié)例子介紹的算法是用自然語言表示的用自然語言表示通俗易懂,但文字冗長,容易出現(xiàn)歧義性用自然語言描述包含分支和循環(huán)的算法,不很方便除了很簡單的問題外,一般不用自然語言71編輯版自然語言表示法2.1節(jié)例子介紹的算法是用自然語言表示的71編傳統(tǒng)的程序流程圖用一些圖形符號形象直觀的表述算法,上表給出了ANSI規(guī)定的程序流程圖符號。流程圖是用一些圖框來表示各種操作用圖形表示算法,直觀形象,易于理解72編輯版?zhèn)鹘y(tǒng)的程序流程圖用一些圖形符號形象直觀的表述算法,上表給出了x≧0Y……N……一個入口兩個出口傳統(tǒng)的程序流程圖73編輯版x≧0Y……N……一個入口兩個出口傳統(tǒng)的程序流程圖73編輯版③①②①③②③位置不夠防止交叉?zhèn)鹘y(tǒng)的程序流程圖74編輯版③①②①③②③位置不夠防止交叉?zhèn)鹘y(tǒng)的程序流程圖74編輯版
例2.4將例2.1的算法用流程圖表示。
求1×2×3×4×5如果需要將最后結果輸出:1t輸出ti>5開始2it*iti+1i結束NY75編輯版例2.4將例2.1的算法用流程圖表示。1t輸出ti>通過以上幾個例子可以看出流程圖是表示算法的較好的工具一個流程圖包括以下幾部分:(1)表示相應操作的框(2)帶箭頭的流程線(3)框內(nèi)外必要的文字說明流程線不要忘記畫箭頭,否則難以判定各框的執(zhí)行次序傳統(tǒng)的程序流程圖76編輯版通過以上幾個例子可以看出流程圖是表示算法的較好的工具傳統(tǒng)的程特點:繪制簡單,描述直觀,之前廣泛使用。缺點:程序流程圖不易表示算法或程序的層次結構。用箭頭表示的控制流可能引起隨意的轉移控制。可能誘使人們過早地考慮局部程序的控制結構而忽視全局的程序結構。不易表示數(shù)據(jù)結構和程序模塊之間的關系。傳統(tǒng)的程序流程圖77編輯版特點:繪制簡單,描述直觀,之前廣泛使用。傳統(tǒng)的程序流程圖77N-S圖表示法
1973年美國學者I.Nassi和B.Shneiderman提出了一種新的流程圖形式。在這種流程圖中,完全去掉了帶箭頭的流程線。全部算法寫在一個矩形框內(nèi),在該框內(nèi)還可以包含其他的從屬于它的框。
這種流程圖又稱N—S結構化流程圖(N和S是兩位美國學者的英文姓名的第一個字母)。這種流程圖適于結構化程序設計,因此很受歡迎。78編輯版N-S圖表示法1973年美國學者I.Nassi和BN-S流程圖用以下的流程圖符號:ABABYNpA當p1成立A直到p2成立順序結構選擇結構循環(huán)結構(當型)循環(huán)結構(直到型)N-S圖表示法
79編輯版N-S流程圖用以下的流程圖符號:ABABYNpA當p1成立A用偽碼表示算法
偽代碼是用介于自然語言和計算機語言之間的文字和符號來描述算法。它不用圖形符號,因此書寫方便,格式緊湊,也比較好懂,便于向計算機語言算法(即程序)過渡。
80編輯版用偽碼表示算法偽代碼是用介于自然語言和計算機語言BEGIN(算法開始)1=>iWhilei<=30{inputniandgii+1=>i}1=>iWhilei<=30{ifgi>=80andgi<=90printniandgii+1=>i}END(算法結束)
前例用偽代碼表示算法如下:81編輯版BEGIN(算法開始)前例用偽代碼表示算法如下:81編輯版用計算機語言表示算法
要完成一項工作,包括設計算法和實現(xiàn)算法兩個部分。設計算法的目的是為了實現(xiàn)算法。不僅要考慮如何設計一個算法,也要考慮如何實現(xiàn)一個算法。82編輯版用計算機語言表示算法要完成一項工作,包括設計算法和實現(xiàn)算法用C語言程序實現(xiàn)前例如下#include<stdio.h>/*打印出50名同學中成績在80-90分者*/main(){
int
i,g[50],n[50];
for(i=0;i<50;i++)/*輸入50名同學的學號,成績*/scanf(“%d,%d”,&n[i],&g[i]);for(i=0;i<50;i++)/*輸出成績80-90分同學的學號,成績*/
if((g[i]>=80)&&(g[i]<=90))printf(“%6d,%3d\n”,n[i],g[i]);}fc1.c83編輯版用C語言程序實現(xiàn)前例如下#include<stdio.h>2.1算法的概念2.2算法的特性2.3算法的表示2.4結構化程序設計方法84編輯版2.1算法的概念84編輯版2.4結構化程序設計方法簡介
荷蘭學者E.W.dijkctra提出了結構化程序設計(structuredprogramming)的理論,成為70年代中期至90年代初的程序設計主流。結構化程序設計方法提出了一些大家都要遵循的原則,這些原則歸納為32個字:自頂向下,逐步細化。模塊設計,結構編碼。清晰第一,效率第二。書寫規(guī)范,縮進格式。85編輯版2.4結構化程序設計方法簡介荷蘭學者E.W.dijkc順序、分支和循環(huán)三種基本結構的共同特點:(1)只有一個入口。(2)只有一個出口。(3)結構內(nèi)的每一部分都有機會被執(zhí)行到。也就是說,對每一個框來說,都有從入口到出口的路徑通過它。(4)結構內(nèi)不存在“死循環(huán)”(無終止的循環(huán))。86編輯版順序、分支和循環(huán)三種基本結構的共同特點:(1)只有一個入結構化程序
所謂結構化程序,就是僅僅使用順序、選擇、循環(huán)等三種基本結構所構造的程序。
結構化程序設計方法
結構化程序設計方法的基本思想是,把一個復雜問題的求解過程分階段進行。每個階段的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。
87編輯版結構化程序所謂結構化程序,就是僅僅使用順序、選擇、結構化程2.4本章要點小結
算法的概念算法的特性算法的表示結構化程序設計方法88編輯版2.4本章要點小結算法的概念88編輯版第三章數(shù)據(jù)描述與
基本操作89編輯版第三章數(shù)據(jù)描述與
3.1基本數(shù)據(jù)類型3.2運算符和表達式3.3輸入輸出操作90編輯版3.1基本數(shù)據(jù)類型90編輯版3.1基本數(shù)據(jù)類型3.1.1C語言的數(shù)據(jù)類型3.1.2常量和變量3.1.3數(shù)據(jù)類型轉換91編輯版3.1基本數(shù)據(jù)類型3.1.1C語言的數(shù)據(jù)類型91編輯版3.1.1C語言的數(shù)據(jù)類型(一)什么是數(shù)據(jù)類型?(二)C語言的數(shù)據(jù)類型有哪些?92編輯版3.1.1C語言的數(shù)據(jù)類型(一)什么是數(shù)據(jù)類型?92編(一)什么是數(shù)據(jù)類型?數(shù)據(jù)結構+算法=程序C語言中以“數(shù)據(jù)類型”形式存在對數(shù)據(jù)的描述對操作的描述93編輯版(一)什么是數(shù)據(jù)類型?數(shù)據(jù)結構+算法=程序C語言中以對數(shù)據(jù)數(shù)據(jù)類型基本類型整型(有符號、無符號)字符型實型(浮點型)枚舉類型構造類型數(shù)組類型結構體類型共用體類型指針類型空類型單精度型雙精度型在程序中對用到的所有數(shù)據(jù)都必須指定其數(shù)據(jù)類型.?不同類型的數(shù)據(jù),所占內(nèi)存的字節(jié)數(shù)不同,對應的操作也不相同。(二)C的數(shù)據(jù)類型94編輯版數(shù)據(jù)類型基本類型整型(有符號、無符號)構造類型數(shù)組類型指針類整型數(shù)據(jù)1.整型數(shù)據(jù)的分類最基本的整型類型基本整型(int型):占2個或4個字節(jié)(32位編譯系統(tǒng))短整型(shortint):VC++6.0中占2個字節(jié)長整型(longint):VC++6.0中占4個字節(jié)雙長整型(longlongint):C99新增的,64位占8個字節(jié),VC++6.0中定義為_int6495編輯版整型數(shù)據(jù)1.整型數(shù)據(jù)的分類95編輯版2.整型變量的符號屬性整型變量的值的范圍包括負數(shù)到正數(shù)可以將變量定義為“無符號”類型擴充的整形類型:有符號基本整型
[signed]int;無符號基本整型
unsignedint;有符號短整型
[signed]short[int];無符號短整型
unsignedshort
[int];有符號長整型
[signed]long[int];無符號長整型
unsignedlong
[int];整型數(shù)據(jù)96編輯版2.整型變量的符號屬性整型數(shù)據(jù)96編輯版字符型數(shù)據(jù)字符是按其代碼(整數(shù))形式存儲的C99把字符型數(shù)據(jù)作為整數(shù)類型的一種字符型數(shù)據(jù)在使用上有自己的特點97編輯版字符型數(shù)據(jù)字符是按其代碼(整數(shù))形式存儲的97編輯版1.字符與字符代碼大多數(shù)系統(tǒng)采用ASCII字符集字母:A~Z,a~z數(shù)字:0~9專門符號:29個:!”#&‘()*等空格符:空格、水平制表符‘\t’、換行‘\n’等不能顯示的字符:空(null)字符(以‘\0’表示)、鳴鈴(以‘\a’表示)、退格(以‘\b’表示)、回車(以‘\r’表示)等字符型數(shù)據(jù)98編輯版1.字符與字符代碼字符型數(shù)據(jù)98編輯版字符’1’和整數(shù)1是不同的概念:字符’1’只是代表一個形狀為’1’的符號,在需要時按原樣輸出,在內(nèi)存中以ASCII碼形式存儲,占1個字節(jié)整數(shù)1是以整數(shù)存儲方式(二進制補碼方式)存儲的,占2個或4個字節(jié)字符型數(shù)據(jù)99編輯版字符’1’和整數(shù)1是不同的概念:字符型數(shù)據(jù)99編輯版2.字符變量用類型符char定義字符變量
charc=’?’;
系統(tǒng)把“?”的ASCII代碼63賦給變量cprintf(“%d%c\n”,c,c);輸出結果是:
63?字符型數(shù)據(jù)100編輯版2.字符變量字符型數(shù)據(jù)100編輯版浮點型數(shù)據(jù)浮點型數(shù)據(jù)是用來表示具有小數(shù)點的實數(shù)float型(單精度浮點型)編譯系統(tǒng)為float型變量分配4個字節(jié)數(shù)值以規(guī)范化的二進制數(shù)指數(shù)形式存放
101編輯版浮點型數(shù)據(jù)浮點型數(shù)據(jù)是用來表示具有小數(shù)點的實數(shù)101編輯版浮點型數(shù)據(jù)是用來表示具有小數(shù)點的實數(shù)float型(單精度浮點型)double型(雙精度浮點型)編譯系統(tǒng)為double型變量分配8個字節(jié)15位有效數(shù)字浮點型數(shù)據(jù)102編輯版浮點型數(shù)據(jù)是用來表示具有小數(shù)點的實數(shù)浮點型數(shù)據(jù)102編輯版幾種基本數(shù)據(jù)類型類型符號關鍵字數(shù)的表示范圍所占位數(shù)整型字符型實型有無(signed)int32-2147483648~2147483647(signed)short16-32768~32767(signed)long32-2147483648~214748364732Unsignedint0~4294967295320~4294967295unsignedlongunsignedshort160~65535有float323.4e-38~3.4e38有double641.7e-308~1.7e308有char8-128~127無unsignedchar80~255說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨編譯器不同而不同,上表以VC++6.0為例:103編輯版幾種基本數(shù)據(jù)類型類型符號關鍵字數(shù)的表示范圍所占位數(shù)整型字符型舉例:數(shù)據(jù)溢出(Overflow)的危害
一臺安裝了Windows?95/98的機器,如果連續(xù)運行49.7天,可能死機原因:
Windows自啟動時刻起,有一個計數(shù)器,記錄系統(tǒng)已經(jīng)運行了多少毫秒。這個計數(shù)器個unsignedlong
unsignedlong的最大值:4294967295
一天有24*60*60*1000=86400000毫秒
4294967295/86400000=49.71026961805……
當49.7天的時候,此計數(shù)器會溢出,引起死機104編輯版舉例:數(shù)據(jù)溢出(Overflow)的危害一臺安裝了Wind(一)常量(二)變量3.1.2常量與變量105編輯版(一)常量3.1.2常量與變量105編輯版預備知識:bit,Byte,Word
bit,位
Byte,字節(jié)1B==8bWord,字1W==2BKilobyte(KB),1KB==1,024BMegabyte(MB),1MB==1,024KBGigabyte(GB),1GB==1,024MBTerabyte(TB)1TB==1,024GB106編輯版預備知識:bit,Byte,Wordbit,一個字節(jié)有多大?可以表示數(shù)字0~255
保存一個字符(英文字母、數(shù)字、符號),ASCII編碼兩個字節(jié)保存一個漢字107編輯版一個字節(jié)有多大?107編輯版預備知識:二進制世界上有(10)2種人,1種人懂二進制,1種人不懂二進制一個位有多大?只能是“0”或者“1”,這叫二進制二進制詮釋了計算機的哲學
種類眾多的復雜事物都是由若干種簡單事物構成108編輯版預備知識:二進制世界上有(10)2種人,1種人懂二進制,1種1.常量:在程序運行過程中,其值不能被改變的量整型常量:如1000,12345,0,-345實型常量十進制小數(shù)形式:如0.34-56.790.0指數(shù)形式:如12.34e3(代表12.34103)字符常量:如’?’轉義字符:如’\n’字符串常量:如”boy”符號常量:#definePI3.14163.1.2常量與變量109編輯版1.常量:在程序運行過程中,其值不能被改變的量3.1.2常字符與字符串的區(qū)別有哪些?定界符不同:字符常量使用單引號,而字符串常量使用雙引號;長度不同:字符常量的長度固定為1,而字符串常量的長度,可以是0,也可以是某個整數(shù);存儲要求不同:字符常量存儲的是字符的ASCII碼值,而字符串常量,除了要存儲有效的字符外,還要存儲一個結束標志’\0’。110編輯版字符與字符串的區(qū)別有哪些?定界符不同:字符常量使用單引號,而2.變量:在程序運行期間,變量的值是可以改變的變量必須先定義,后使用定義變量時指定該變量的名字和類型變量名和變量值是兩個不同的概念變量名實際上是以一個名字代表的一個存儲地址從變量中取值,實際上是通過變量名找到相應的內(nèi)存地址,從該存儲單元中讀取數(shù)據(jù)3.1.2常量與變量111編輯版2.變量:在程序運行期間,變量的值是可以改變的3.1.2方式:1、定義變量的同時賦初值(也叫變量初始化)。格式:數(shù)據(jù)類型變量名[=初值][,變量名2[=初值2]……];2、通過一個賦值語句給變量賦初值。格式:
變量名=初值;變量賦初值出現(xiàn)在函數(shù)體的聲明部分出現(xiàn)在函數(shù)體的執(zhí)行部分inta,b=3;inta,b;b=3;112編輯版方式:變量賦初值出現(xiàn)在函數(shù)體出現(xiàn)在函數(shù)體inta,b=1、程序中用到的變量必須“先定義(declare),后使用”。2、C語言的關鍵字不能用作變量名。3、C語言對英文字母的大小寫敏感,即同一字母的大小寫,被認為是兩個不同的字符。4、定義變量時,給幾個變量賦相同的初值,應寫成:inta=3,b=3,c=3;
不能寫成:inta=b=c=3;×5、給變量賦值時,正常情況下應給變量賦相同類型的數(shù)據(jù)。若給變量賦與其類型不同的數(shù)據(jù)時,需進行類型轉換。關于變量以及變量賦初值的幾點說明113編輯版1、程序中用到的變量必須“先定義(declare),后使用”變量——舉例#include<stdio.h>voidmain(){intstudent,age;intif=adrress=1;floatscore=90;
stadent=2;Age=20.7;printf("%d%d%d%f",if,student,age,score);}本程序中有幾處錯誤?undeclaredidentifier114編輯版變量——舉例#include<stdio.h>本程序中有變量使用要注意長度不要對變量所占的內(nèi)存空間字節(jié)數(shù)想當然用sizeof獲得變量或者數(shù)據(jù)類型的長度程序在TurboC2.0和VisualC++6.0下的運行結果不同注意!#include<stdio.h>voidmain(){
printf("DatatypeNumberofbytes\n");
printf("-------------------------------\n");
printf("char%d\n",sizeof(char));
printf("int%d\n",sizeof(int));
printf("shortint%d\n",sizeof(short));
printf("longint%d\n",sizeof(long));
printf("float%d\n",sizeof(float));
printf("double%d\n",sizeof(double));}115編輯版變量使用要注意長度不要對變量所占的內(nèi)存空間字節(jié)數(shù)想當然注意!3.1.3數(shù)據(jù)類型轉換(一)隱式轉換(自動轉換)(二)顯式轉換(強制轉換)116編輯版3.1.3數(shù)據(jù)類型轉換(一)隱式轉換(自動轉換)116編(一)隱式轉換(自動轉換)轉換發(fā)生條件運算轉換------不同類型數(shù)據(jù)混合運算時賦值轉換------把一個值賦給與其類型不同的變量時輸出轉換------輸出時轉換成指定的輸出格式函數(shù)調(diào)用轉換--實參與形參類型不一致時轉換先轉換、后運算117編輯版(一)隱式轉換(自動轉換)轉換發(fā)生條件運算轉換------不隱式轉換(自動轉換)同種數(shù)據(jù)類型的運算結果,還是該類型不同種數(shù)據(jù)類型的運算結果,是兩種類型中取值范圍更大的那種long
double>double>float=long>=int>=short>char把數(shù)據(jù)賦值給另外一種類型變量也會發(fā)生自動類型轉換從小到大,順利轉換從大到小,可能丟失信息(好的編譯器會發(fā)出警告)見教材28頁118編輯版隱式轉換(自動轉換)同種數(shù)據(jù)類型的運算結果,還是該類型見教材隱式轉換(自動轉換)不同類型數(shù)據(jù)間的混合運算:+、-、*、/運算的兩個數(shù)中有一個數(shù)為float或double型,結果是double型。系統(tǒng)將float型數(shù)據(jù)都先轉換為double型,然后進行運算;(2)如果int型與float或double型數(shù)據(jù)進行運算,先把int型和float型數(shù)據(jù)轉換為double型,然后進行運算,結果是double型;(3)字符型數(shù)據(jù)與整型數(shù)據(jù)進行運算,就是把字符的ASCII代碼與整型數(shù)據(jù)進行運算.119編輯版隱式轉換(自動轉換)不同類型數(shù)據(jù)間的混合運算:119編輯版inti;floatf;doubled;longe;……i=2;f=2.5;d=3.9;e=3;……10+‘a(chǎn)’+i*f-d/e1075.01.3112.0110.7intdoubledoubledoubledouble思考:根據(jù)已知變量定義及賦值語句,計算以下表達式的值,并說明每一步所得結果的數(shù)據(jù)類型。120編輯版inti;10+‘a(chǎn)’+i*f-d/e1075.01.3(二)顯式轉換(強制轉換)一般形式(要轉換成的數(shù)據(jù)類型)(被轉換的表達式)注:當被轉換的表達式是一個簡單表達式時,外面的一對圓括號可以缺省。舉例floatx,y;x=2.3;y=4.5;
(int)(x+y)//6(int)(int)x+y//6.5(double)說明強制轉換得到的是所需類型的中間變量,原變量或表達式的類型不變。121編輯版(二)顯式轉換(強制轉換)一般形式(要轉換成的數(shù)據(jù)類型)(#include<stdio.h>voidmain(){floatx;inti;x=3.6;i=(int)x;printf("x=%f,i=%d",x,i);}思考:以下程序的輸出結果是什么?x=3.600000,i=3程序運行結果:結論:較高類型向較低類型轉換時可能發(fā)生精度損失問題122編輯版#include<stdio.h>思考:以下程序的輸出結舉例:已知三角形的邊長a、b、c,求三角形周長的一半。#include<stdio.h>voidmain(){floata,b,c,s;a=3;b=4;c=5;s=1/2*
(a+b+c);printf("s=%8.2f",s);}s=0.00程序運行結果:?s=6.00程序運行結果:改為:1.0/2(1/2.0)或(float)1/2(1/(float)2)123編輯版舉例:已知三角形的邊長a、b、c,求三角形周長的一半。#inC運算符簡介算術運算符和算術表達式賦值運算符和賦值表達式逗號運算符和逗號表達式關系運算符和表達式邏輯運算符和表達式條件運算符與表達式3.2運算符與表達式124編輯版C運算符簡介3.2運算符與表達式124編輯版1、算術運算符
+-*/%2、關系運算符><==>=<=!=
3、邏輯運算符!&&||4、位運算符<<>>~|^&5、賦值運算符
=及其擴展賦值運算符6、條件運算符?:7、逗號運算符,8、指針運算符*&9、求字節(jié)數(shù)運算符sizeof10、強制類型轉換運算符(類型)11、分量運算符.12、下標運算符[]13、其他如函數(shù)調(diào)用運算符()分類運算符詳見254頁!C運算符簡介125編輯版1、算術運算符
運算符必須有運算對象,分為3類:運算對象是一個的,則稱為單目運算運算對象是兩個的,則稱為雙目運算運算對象是三個的,則稱為三目運算C運算符簡介126編輯版運算符必須有運算對象,分為3類:C運算符簡介基本算術運算符+-*/%說明
例:
5/3=1
-5/3=-1模運算符或求余運算符算術表達式用算術運算符和括號將運算對象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子。優(yōu)先級和結合性先乘除、后加減,有括號先算括號。自左至右常量、變量、函數(shù)等說明
兩個整數(shù)相除的結果為整數(shù),舍去小數(shù)部分。當商為負數(shù)時,多采用“向零取整”的方法。求余運算的兩側均應為整數(shù)
5%3=2例:
a*b/c-1.5+’a’
算術運算符和算術表達式如果一個運算符兩側的數(shù)據(jù)類型不同,先自動進行類型轉換,使二者具有同一類型,然后進行運算。127編輯版基本算術運算符+-*/%說明格式:前置:++i,--i(在使用i之前,使i的值加(減)1)后置:i++,i--(在使用i之后,使i的值加(減)1)自增、自減運算符作用:自增運算符(++)使單個變量的值增1;自減運算符(--)使單個變量的值減1。例1i=3;……A)j=++i;j=i++;j=-i++;i=i+1i=i-1?j,i
A)j=4i=4j=3i=4j=-3++和--結合方向是“自右至左”128編輯版格式:前置:++i,--i(在使用i之前,使i的(1)自增、自減運算是C語言特有的,常用于循環(huán)語句中,使循環(huán)控制變量加(或減)1,以及指針變量中,使指針指向下(或上)一個地址。(2)自增、自減運算符,不能用于常量和表達式。例如,5++、--(a+b)等都是非法的。(3)++和--的結合方向為自右至左。(P30)(4)如果對一個變量的自增/自減運算,單獨構成語句,而不是作為表達式的一部分時,前置和后置運算效果一樣,都是使變量自加1。如i++;和++i;是一樣的,都是使i加1。(5)在表達式中,連續(xù)使用同一變量進行自增或自減運算時,很容易出錯,所以最好避免這種用法。說明129編輯版(1)自增、自減運算是C語言特有的,常用于循環(huán)語句中,使賦值運算符簡單賦值運算符:=復合賦值運算符:+=,-=,*=,/=,%=……
簡單賦值運算符的一般形式為:變量
=
表達式它的作用是將一個表達式的值賦給一個變量。
復合賦值運算的一般格式為:變量雙目運算符=
表達式└──┬──┘復合賦值運算符它等價于:變量=變量雙目運算符
(表達式)。只有當表達式簡化為一個變量或一個常數(shù)時,兩邊的括號可以省略。賦值運算符和賦值表達式130編輯版賦值運算符簡單賦值運算符:=簡單賦值運算符的一般形式為:賦值表達式格式:<變量><賦值運算符><表達式>賦值表達式的值:被賦變量的值類型轉換轉換條件:當賦值運算符兩側的數(shù)據(jù)類型不一致時轉換原則:轉換為被賦值變量的類型。131編輯版賦值表達式格式:<變量><賦值運算符><表達式>類注意:將取值范圍小的類型轉為取值范圍大的類型是安全的反之是不安全的如果大類型的值在小類型能容納的范圍之內(nèi),則平安無事但是,浮點數(shù)轉為整數(shù),會丟失小數(shù)部分,非四舍五入反之,轉換后的結果必然是錯誤的,具體結果與機器和實現(xiàn)方式有關。避免如此使用例1floata;intb;a=1.2;b=a*3;?b
b=3例2a=b=5;a=7+(b=8)?a,b
a=5;b=5a=15;b=8自右而左的結合性132編輯版注意:例1floata;intb;?bb=3例2算術自反賦值運算符
(1)運算規(guī)則
對象數(shù)名稱運算符運算規(guī)則運算對象運算結果結合性雙目加賦值減賦值乘賦值除賦值模賦值+=-=*=/=%=a+=b相當于a=a+ba-=b相當于a=a-ba*=b相當于a=a*ba/=b相當于a=a/ba%=b相當于a=a%b數(shù)值型數(shù)值型自右向左整型整型133編輯版算術自反賦值運算符(1)運算規(guī)則對象數(shù)名稱運算符運逗號運算符,逗號表達式表達式1,表達式2,……,表達式n說明1、逗號表達式的求解過程為自左至右,依次計算各表達式的值,最后一個表達式的值即為整個逗號表達式的值;2、逗號運算符的優(yōu)先級最低。3、使用逗號表達式的目的通常是想分別得到各個表達式的值,而并非一定要得到整個表達式的值。4、常用于for循環(huán)語句中,除此以外很少使用。逗號運算符和逗號表達式134編輯版逗號運算符,逗號表達式表達式1,表達式2,……,表達例1a=3a=(3*5,a*4)?aa=12例2a=3a=3*5,a*4?aa=15表達式的值為60135編輯版例1a=3?aa=12例2a=3?aa=15135編關系運算符及其優(yōu)先次序關系運算符:用來對兩個數(shù)值進行比較的比較運算符C語言提供6種關系運算符:①<
(小于)②<=(小于或等于)③>
(大于)④>=(大于或等于)
⑤==(等于)⑥!=(不等于)優(yōu)先級相同
(高)優(yōu)先級相同
(低)136編輯版關系運算符及其優(yōu)先次序關系運算符:優(yōu)先級相同(高)優(yōu)先級相關系、算術、賦值運算符的優(yōu)先級算術運算符(高)賦值運算符(低)關系運算符關系運算符及其優(yōu)先次序137編輯版關系、算術、賦值運算符的優(yōu)先級算術運算符(高)賦c>a+b等效于
c>(a+b)a>b==c等效于
(a>b)==ca==b<c等效于
a==(b<c)a=b>c等效于
a=(b>c)關系運算符及其優(yōu)先次序138編輯版c>a+b等效于c>(a+b)關系運算符關系表達式關系表達式用關系運算符將兩個數(shù)值或數(shù)值表達式連接起來的式子關系表達式的值是一個邏輯值,即“真”或“假”在C的邏輯運算中,以“1”代表“真”,以“0”代表“假”139編輯版關系表達式關系表達式139編輯版關系運算注意:例若a=0;b=0.5;x=0.3;
則a<=x<=b的值為0例5>2>7>8在C中是允許的,值為0例‘a(chǎn)’>0結果為‘A’>100結果為10140編輯版關系運算注意:例若a=0;b=0.5;x=0.3;關系運算注意:例注意區(qū)分“=”與“==”inta=0,b=1;if(a=b)printf(“aequaltob”);elseprintf(“anotequaltob”);例應避免對實數(shù)作相等或不等的判斷如1.0/3.0*3.0==1.0結果為0141編輯版關系運算注意:例注意區(qū)分“=”與“==”例應避邏輯運算符及其優(yōu)先次序3種邏輯運算符:&&(邏輯與)||(邏輯或)!(邏輯非)&&和||是雙目(元)運算符!是一目(元)運算符邏輯表達式用邏輯運算符將關系表達式或其他邏輯量連接起來的式子142編輯版邏輯運算符及其優(yōu)先次序3種邏輯運算符:142編輯版判斷年齡在13至17歲之內(nèi)?age>=13&&age<=17判斷年齡小于12或大于65?age<12||age>65邏輯運算符及其優(yōu)先次序143編輯版判斷年齡在13至17歲之內(nèi)?邏輯運算符及其優(yōu)先次序143編輯邏輯運算的真值表邏輯運算符及其優(yōu)先次序144編輯版邏輯運算的真值表邏輯運算符及其優(yōu)先次序144編輯版邏輯運算符的優(yōu)先次序!→&&→||(!為三者中最高)與其他運算符的優(yōu)先次序!(高)算術運算符關系運算符
&&和||賦值運算符(低)邏輯運算符及其優(yōu)先次序145編輯版邏輯運算符的優(yōu)先次序!邏輯表達式邏輯表達式的值應該是邏輯量“真”或“假”編譯系統(tǒng)在表示邏輯運算結果時以數(shù)值1代表“真”,以0代表“假”但在判斷一個量是否為“真”時以0代表“假”,以非0代表“真”注意:將一個非零的數(shù)值認作為“真”146編輯版邏輯表達式邏輯表達式的值應該是邏輯量“真”或“假”146編輯(1)若a=4,則!a的值為0(2)若a=4,b=5,則a&&b的值為1(3)a和b值分別為4和5,則a||b的值為1(4)a和b值分別為4和5,則!a||b的值為1(5)4&&0||2的值為1邏輯表達式147編輯版(1)若a=4,則!a的值為0邏輯表達式147編輯版修改后的邏輯運算真值表邏輯表達式148編輯版修改后的邏輯運算真值表邏輯表達式148編輯版判別某一年是否閏年,用邏輯表達式表示閏年的條件是符合下面二者之一:①能被4整除,但不能被100整除,如2008②能被400整除,如2000(year%4==0&&year100!=0)||year%400==0如果表達式值為1,則閏年;否則為非閏年邏輯表達式149編輯版判別某一年是否閏年,用邏輯表達式表示邏輯表達式149編輯版條件運算符和條件表達式有一種if語句,當被判別的表達式的值為“真”或“假”時,都執(zhí)行一個賦值語句且向同一個變量賦值如:if(a>b)max=a;elsemax=b;max=(a>b)?a
:b;條件運算符150編輯版條件運算符和條件表達式有一種if語句,當被判別的表達式的值為條件運算符和條件表達式有一種if語句,當被判別的表達式的值為“真”或“假”時,都執(zhí)行一個賦值語句且向同一個變量賦值如:if(a>b)max=a;elsemax=b;max=(a>b)?a
:b;條件表達式151編輯版條件運算符和條件表達式有一種if語句,當被判別的表達式的值為條件表達式的一般形式為表達式1?表達式2:
表達式3條件運算符和條件表達式條件運算符的執(zhí)行順序:求解表達式1若為非0(真)則求解表達式2,
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年小學六年級語文教研組工作計劃(二篇)
- 2024年小學學校德育工作計劃樣本(二篇)
- 2024年處方點評標準及獎懲細則(五篇)
- 2024年安全主任的崗位職責樣本(四篇)
- 2024年小學安全工作總結標準樣本(二篇)
- 【《銀行員工績效管理探析的國內(nèi)外文獻綜述》3600字】
- 2024年員工培訓合同例文(三篇)
- 2024年幼兒園保育老師的工作計劃范例(二篇)
- 2024年合伙投資合同例文(四篇)
- 2024年幼兒園大班家長工作計劃例文(二篇)
- 值班人員的福利補貼方案
- hologic雙能x線骨密度儀介紹課件
- 全新檔案法專題學習講座課件
- 部編版小學語文四年級上冊第六單元教材分析解讀課件
- 2023年江蘇交通控股有限公司校園招聘筆試模擬試題及答案解析
- 《麻雀》公開課完整版課件
- 塑料廠風險點管控清單及隱患排查表
- 干部人事檔案專項審核認定表填寫模板
- 六年級下冊數(shù)學課件-第1課時 負數(shù)的認識-人教版 (共20張PPT)
- 解讀《中華人民共和國簡史》PPT
- 人性化設計產(chǎn)品案例課件
評論
0/150
提交評論