![高級程序設(shè)計語言課件_第1頁](http://file4.renrendoc.com/view10/M00/05/17/wKhkGWWUjVmAMEVzAACDY3RJFMw844.jpg)
![高級程序設(shè)計語言課件_第2頁](http://file4.renrendoc.com/view10/M00/05/17/wKhkGWWUjVmAMEVzAACDY3RJFMw8442.jpg)
![高級程序設(shè)計語言課件_第3頁](http://file4.renrendoc.com/view10/M00/05/17/wKhkGWWUjVmAMEVzAACDY3RJFMw8443.jpg)
![高級程序設(shè)計語言課件_第4頁](http://file4.renrendoc.com/view10/M00/05/17/wKhkGWWUjVmAMEVzAACDY3RJFMw8444.jpg)
![高級程序設(shè)計語言課件_第5頁](http://file4.renrendoc.com/view10/M00/05/17/wKhkGWWUjVmAMEVzAACDY3RJFMw8445.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
高級程式設(shè)計語言2004-9-15第一章 C語言概述2004-9-15電腦基本結(jié)構(gòu)2004-9-15電腦基本結(jié)構(gòu)CPU
(CentralProcessingUnit)主記憶體運算器控制器外設(shè)輸入設(shè)備輸出設(shè)備主機電腦2004-9-15程式設(shè)計語言程式設(shè)計語言:是人和電腦之間交換資訊所用的一種工具。是用來編寫電腦程式的工具;電腦將嚴格按照程式運行和工作,並提供產(chǎn)生的結(jié)果。即人通過程式的形式向電腦提出服務(wù)要求,電腦按程式自動進行工作2004-9-15程式設(shè)計語言程式設(shè)計語言包括:機器語言組合語言高級語言2004-9-15機器語言與組合語言機器語言:機器語言就是能夠被電腦直接識別和執(zhí)行的機器指令。機器指令是CPU提供的基本功能(與電腦體系結(jié)構(gòu)相關(guān))機器指令是二進位代碼是電腦唯一能夠直接執(zhí)行的程式語言編程、閱讀程式比較困難組合語言:用助記符表示的機器語言,即符號化的機器語言電腦不能直接執(zhí)行組合語言程式,需要轉(zhuǎn)化為機器語言與電腦體系結(jié)構(gòu)相關(guān)2004-9-15機器語言與組合語言例:X=10,Y=17,計算SUM=X+Y0A11...A00000020601A20300F400DATA SEGMENTX DB 10Y DB 17SUM DB 0DATA ENDS... MOV AL,X ADD AL,Y MOV SUM,AL HLT 機器語言程式組合語言程式2004-9-15高級(programming,程式設(shè)計)語言高級語言:又稱為演算法語言,是一種接近於自然語言的電腦程式設(shè)計語言。這種語言通常由:基本字元集,詞法規(guī)則,語法規(guī)則,語義規(guī)則等構(gòu)成。一般由兩部分內(nèi)容組成:對數(shù)據(jù)的描述對處理過程(操作)的描述獨立於電腦體系結(jié)構(gòu)電腦不能直接執(zhí)行高級語言程式,需要轉(zhuǎn)換(高級語言程式→組合語言程式→機器指令)2004-9-15高級(programming,程式設(shè)計)語言例:X=10,Y=17,計算SUM=A+BDATA SEGMENTA DB 10B DB 17SUM DB 0DATA ENDS... MOV AL,A ADD AL,B MOV S,AL HLT 組合語言程式...int A,B,SUM;A=10;B=17;SUM=A+B;...C語言程式2004-9-15高級(程式設(shè)計)語言高級程式語言與自然語言自然語言程式設(shè)計語言人與人資訊交流的工具(人具有思維、推理能力)人-機對話的工具(電腦具有計算與邏輯判斷的能力)語法規(guī)則靈活(可以省略,顛倒)嚴格遵循語法規(guī)則表達方式多樣演算法多樣2004-9-15高級(programming,程式設(shè)計)語言根源程式(高級語言成語)“轉(zhuǎn)換”成目標(biāo)程式(機器指令)的方法:編譯方式:將根源程式一次性地轉(zhuǎn)換成等價的目標(biāo)程式。此後,可以多次直接運行這個目標(biāo)程式。翻譯方式:"運行"根源程式的"當(dāng)時"逐個語句地進行"翻譯"並立即"運行"這一句的功能,直到最後一個語句為止2004-9-15編譯方式與翻譯方式編譯方式:翻譯方式2004-9-15C語言的歷史C語言產(chǎn)生與UNIX操作系統(tǒng)(OperatingSystem)密切相關(guān)標(biāo)準化1983年,美國標(biāo)準化組織(ANSI,AmericanNationalStandardsInstitute)成立C語言工作小組,發(fā)表C語言標(biāo)準:ANSIC1987年,ANSI發(fā)表新的C語言標(biāo)準:87ANSIC1989年,國際標(biāo)準化組織(ISO,InternationalStandardizationOrganization)接納ANSIC,標(biāo)準,發(fā)表ISOC標(biāo)準2004-9-15C語言的特點語言簡潔、緊湊,使用方便、靈活(32個關(guān)鍵字,9中控制語句)運算符豐富(34種運算式)豐富的數(shù)據(jù)類型結(jié)構(gòu)化的控制語句,程式模組化(函數(shù)是基本模組)語法限制不嚴格,程式設(shè)計自由度大能夠進行位操作(即對存儲單位進行操作)高效率的目標(biāo)代碼可移植性好(與彙編比較)2004-9-15"Hello,world"例1“Hello,world”C程式是由函數(shù)(function)和變數(shù)組成(variable)main函數(shù):C程式總是從main函數(shù)開始執(zhí)行代碼在main函數(shù)中調(diào)用其他函數(shù)來完成相應(yīng)的工作“其它函數(shù)”:用戶自行編寫的函數(shù)庫函數(shù)(libraryfunctions)函數(shù)之間通信的一種方式是:調(diào)用者提供一組參數(shù)(arguments)給被調(diào)用函數(shù)#include<stdio.h>main(){ printf("hello,world\n");}函數(shù)名參數(shù)表2004-9-15"Hello,world"printf函數(shù)是一個庫函數(shù)的參數(shù)“hello,world\n”:字串(characterstring/stringconstant)\n:由\開頭的字元:用於表示難於輸入、特殊的控制字元換行符(newlinecharacter
)#include<stdio.h>main(){
}printf("hello,world\n");函數(shù)名2004-9-15#include<stdio.h>intmax(intx,inty);
main(){inta,b,c;/*announcement,variablesdefination*/scanf("%d%d,",&a,&b); /*inputthevalueofaandb*//*callmaxfunction,gettheresult,andassignittoc*/
c=max(a,b);printf("max=%d\n",c);/*outputthevalueofc*/return;}/*definemaxfunction,functionvalueisinteger*/intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}例2 比較兩個整數(shù)的大小,輸出其中較大的數(shù)2004-9-15“Hello,world”C程式的格式一條語句(statement)占一行;運算符之間應(yīng)用空格(blanks)分割;語句縮進(indentation):4個空格/一個tab的舉例,突出程式的邏輯結(jié)構(gòu){}(braces)位置函數(shù)定義:均置與行首其餘情況:{在行尾}在行首2004-9-15程式程式包括兩個方面:對數(shù)據(jù)的描述,即數(shù)據(jù)結(jié)構(gòu)(datastructure)對操作的描述(操作步驟),即演算法(algorithm)操作的對象是數(shù)據(jù),操作的目的是對數(shù)據(jù)進行加工處理,以獲取結(jié)果演算法:解決”做什麼”和”怎麼做”的問題語句(statements)只是演算法的具體體現(xiàn)沃思公式:數(shù)據(jù)結(jié)構(gòu)+演算法=程式2004-9-15演算法的概念演算法(廣義):為解決一個問題而採用的方法和步驟。演算法多樣性不同的演算法具有簡單和複雜的分別,但首要保證演算法正確性,再考慮演算法的品質(zhì)。電腦演算法:是電腦為解決一個問題而採用的方法和步驟。電腦演算法的兩大類:數(shù)值運算演算法:目的求數(shù)值解非數(shù)值運算演算法:應(yīng)用廣泛2004-9-15簡單演算法舉例例2.1求5!思考:給定正整數(shù)n,求n
應(yīng)具有通用性、靈活性累加,累乘等運算問題的基本演算法累計結(jié)果(total):需要設(shè)定初值;變化量(i):正確確定每次參與運算的變化量累次計算,直到i到達預(yù)期範(fàn)圍total=totalOPERATOR(運算符)i;改變i值,重複計算應(yīng)用:例2.42004-9-15簡單演算法舉例例2.3判斷2000-2500年中的每一年是否閏年,將結(jié)果輸出。仔細確定判斷條件,逐步縮小判斷範(fàn)圍對範(fàn)圍的確定要保證無遺漏2004-9-15演算法的特性有窮性:要確定合理的限定範(fàn)圍確定性有零個或多個輸入有一個或多個輸出有效性2004-9-15怎樣表示一個演算法演算法表示的方法:自然語言:通俗易懂,但文字冗長,不嚴格,易出現(xiàn)歧義性傳統(tǒng)流程圖:直觀形象,易於理解用圖框表示各種操作。用流程線表示各圖框的執(zhí)行順序要注意避免無規(guī)律的流程轉(zhuǎn)向結(jié)構(gòu)化流程圖(N-S流程圖)演算法全部的矩形框內(nèi)無流程線偽代碼PAD圖2004-9-15程式設(shè)計的三種基本結(jié)構(gòu)順序結(jié)構(gòu):自頂向下,無分支,無轉(zhuǎn)移選擇結(jié)構(gòu):有分支,需條件判斷迴圈結(jié)構(gòu):有轉(zhuǎn)移,某些語句需要重複執(zhí)行當(dāng)型(While型)迴圈直到型(Until型)迴圈這三種基本結(jié)構(gòu)可以組成任意複雜的演算法。2004-9-15順序結(jié)構(gòu)順序結(jié)構(gòu):自頂向下順序執(zhí)行,無分支,無轉(zhuǎn)移AB流程圖表示法ABN-S圖表示法ab2004-9-15選擇結(jié)構(gòu)(選取結(jié)構(gòu)、分支結(jié)構(gòu))選擇結(jié)構(gòu):有分支,需條件判斷無論條件p是否成立,只能執(zhí)行A,B兩個分支中的一支A、B分支中,可以有一支是“空語句”(圖2.16)AB流程圖表示法N-S圖表示法pYes/成立NO/不成立ABp成立不成立ab2004-9-15迴圈結(jié)構(gòu)(重複結(jié)構(gòu))當(dāng)型(While型)迴圈流程順序:“判斷
執(zhí)行
再判斷
再執(zhí)行
...”由判斷條件P決定重複執(zhí)行的次數(shù),迴圈次數(shù)可控當(dāng)P不成立時,停止迴圈循環(huán)體內(nèi)應(yīng)該有使迴圈停止的操作A流程圖表示法N-S圖表示法p成立不成立A當(dāng)p成立ab2004-9-15迴圈結(jié)構(gòu)(重複結(jié)構(gòu))直到(Until型)型迴圈先執(zhí)行,再判斷(即操作A至少要執(zhí)行一次)重複執(zhí)行,直到條件滿足(即條件不成立時,重複執(zhí)行)流程圖表示法N-S圖表示法p不成立成立A直到p成立Aab2004-9-15基本結(jié)構(gòu)的特點基本結(jié)構(gòu)的特點:只有一個入口只有一個出口結(jié)構(gòu)內(nèi)部每一部分都能被執(zhí)行到結(jié)構(gòu)內(nèi)不存在“死迴圈”由基本結(jié)構(gòu)所構(gòu)成的演算法屬於”結(jié)構(gòu)化”的演算法不存在無規(guī)律的轉(zhuǎn)向,只在結(jié)構(gòu)內(nèi)部才存在分支和跳轉(zhuǎn)2004-9-15偽代碼(pseudocode)偽代碼:用文字和符號描述演算法格式自由,書寫方便,修改容易一般在設(shè)計演算法時使用數(shù)據(jù)類型(Type)數(shù)據(jù)類型:是數(shù)據(jù)結(jié)構(gòu)的表現(xiàn)形式?jīng)Q定了該類型的變數(shù)或者常量的取值範(fàn)圍決定了該類型的變數(shù)或者常量可以執(zhí)行哪些操作例:"inti" i是整數(shù)類型的變數(shù),其取值範(fàn)圍為-32768~32767之間的整數(shù);可以執(zhí)行的操作:加、減、乘、除、求餘(算術(shù)運算);比大?。P(guān)係運算)等實數(shù)無此操作運算符(Operators)與運算式(Expressions)運算符:定義了對不同數(shù)據(jù)類型變數(shù)或者常量的基本操作(運算)算術(shù)運算符(ArithmeticOperators)關(guān)係運算符(RelationalOperators)邏輯運算符(LogicalOperators)賦值運算強制類型轉(zhuǎn)換運算式(Expressions):通過運算符將變數(shù)、常量連接起來,產(chǎn)生新值常量與變數(shù)常量(Constants):是指在程式執(zhí)行過程中值不發(fā)生改變的量。常量也有數(shù)據(jù)類型常量分為直接常量(字面常量)和符號常量(SymbolicConstants)直接常量,例:50,3.14,'A',“abc”符號常量,例:#define PRICE 30符號常量符號常量:是一種特殊形式的常量,即用一個識別字表示一個常量。定義形式
#define常量名(識別字)常量值使用符號常量:含義清楚;在需要改變一個常量時能做到“一改全改”編程風(fēng)格在程式中不要出現(xiàn)“magicnumbers”(例如:
x=100*50+78),而符號常量名可以指明每一個常量的含義符號常量名使用大寫字母符號常量舉例例:計算某類食品的價格,要求從鍵盤讀入購買該食品的數(shù)目,輸出總價格。#include<stdio.h>#definePRICE 28Main(){ int num; printf("inputnumber:"); scanf("%d",&num); printf("total=%d",num*PRICE); return0;}變數(shù)(Variable)程式執(zhí)行過程中,其值可以改變的量稱為變數(shù)。它用變數(shù)名(識別字)來表示,在內(nèi)存中佔據(jù)一定記憶體單元。變數(shù)變數(shù)名:一個變數(shù)有一個名字變數(shù)在內(nèi)存中佔據(jù)一定的存儲單元,在該存儲單元中存放變數(shù)的值——變數(shù)值變數(shù)名是一個符號地址在程式中從變數(shù)中取值,實際上是通過變數(shù)名找到相應(yīng)的記憶體地址,從其存儲單元中讀取數(shù)據(jù)。變數(shù)名與變數(shù)值例:inta=3;......3...............3a變數(shù)名變數(shù)值存儲單元80A580A680A780A880A980AA80AB80AD變數(shù)a
地址
記憶體
識別字(包含變數(shù)名)的命名規(guī)則識別字(identifier):用來標(biāo)識變數(shù)名、符號常量名、函數(shù)名、數(shù)組名、檔案名等的有效字元序列稱之為識別字。命名規(guī)則只能由字母(a~z,A~Z)、數(shù)字(0~9)和下劃線('_')三種字元組成例:不合法的識別字 bass-9 firstone 第一個字元只能是字母或下劃線一般只有庫函數(shù)才有以'_'為首字母識別字用戶一般不用'_'作為識別字的首字母,避免衝突區(qū)分字母大小寫例如:int a,A;/*a和A是兩個不同的整型變數(shù)*/識別字(包含變數(shù)名)的命名規(guī)則關(guān)鍵字(Keywords)保留關(guān)鍵字(保留字):在C語言中具有特定含義,專門用作C語言特定成分的一類識別字,例如:intfloatcharifelsewhilefor例:
intfor;X某些系統(tǒng)有標(biāo)誌符長度限制(建議不超過8字元)。內(nèi)部表示符長度可以為31bytes選擇變數(shù)名和其他標(biāo)誌符時,應(yīng)注意做到“見名知義”聲明(Declarations)變數(shù)聲明(Declarations):指定數(shù)據(jù)類型;列出將要使用的變數(shù)格式:
數(shù)據(jù)類型 變數(shù)名1,變數(shù)名2,...變數(shù)名n;一切變數(shù),都要先聲明,後使用!數(shù)據(jù)類型概述內(nèi)容:基本數(shù)據(jù)類型數(shù)據(jù)在內(nèi)存中的存儲形式(即類型在電腦內(nèi)部如何表示的)取值範(fàn)圍限定符基本數(shù)據(jù)類型基本數(shù)據(jù)類型char:字元型,1個位元組長度,可以存放系統(tǒng)本地字元集(characterset)中的一個字元int:整型,其存儲空間長度通常反映了機器中整數(shù)的自然長度(字長)float:單精確度浮點型double:雙精度浮點型char(字元型)char:字元型,長度為一個位元組字元在內(nèi)存單元中存放的是其對應(yīng)的ASCII碼(8bit的0、1二進位序列)例字元'a',在內(nèi)存中占一個位元組(8bits)
'a'類型長度決定了類型的取值範(fàn)圍,char的取值範(fàn)圍(ASCII碼取值):0~28-1(0~255)ASCII碼(P364)‘0’48;‘A’65;‘a(chǎn)’9701100001補充1:字長bit:在電腦中採用二進位,代碼只有“0”和“1”,其中無論是“0”或是“1”在CPU中都是一“位”。字長:CPU在單位時間內(nèi)(同一時間)能一次處理的二進位數(shù)的位數(shù)叫字長。例:8位CPU:即能一次處理8位數(shù)據(jù)的CPU。32位的CPU:就能在單位時間內(nèi)處理字長為32位的二進位數(shù)據(jù)。位元組和字長的區(qū)別:由於常用的英文字元用8位二進位就可以表示,所以通常就將8位稱為一個位元組。字長的長度是不固定的,對於不同的CPU、字長的長度也不一樣。8位的CPU一次只能處理一個位元組,而32位的CPU一次就能處理4個位元組,同理字長為64位的CPU一次可以處理8個位元組。補充2:補數(shù)(1/3)源碼:電腦中採用一組二進位序列來存儲數(shù)值,其中最高位為符號為(0為正,1為負)。例:(+10)源=00001010例:(-10)源=10001010例:十進位:10-10=10+(-10)=0
源碼:00001010
+10001010
=10010100=-20X
補充2:補數(shù)(2/3)反碼:正數(shù)的反碼=源碼負數(shù)的反碼=除符號位外,源碼的其餘各位逐位取反例:(-10)源=10001010,則(-10)反=11110101補數(shù):正數(shù)的補數(shù)=源碼=反碼負數(shù)的補數(shù)=反碼+1例:(-10)補=11110110例:(10)補+(-10)補=00000000補=(0)10
例:(9)10+(-6)10=(9)補+(-6)補 =00001001+11111010=00000011=(3)10補充2:補數(shù)(3/3)例:(5)10+(-6)10=-1
(5)補+(-6)補=00000101+11111010=11111111補=(-1)10補數(shù)的設(shè)計目的是:使符號位能與有效值部分一起參加運算,從而簡化運算規(guī)則。所以,在電腦內(nèi)部數(shù)值都被表示成為補數(shù)的形式。int(整型)整型數(shù)據(jù)在內(nèi)存中以二進位補數(shù)來表示int其存儲空間長度通常=機器字長通常int長度為32bit/16bit,其中第一個bit表示符號位(0:正,1:負)例:intnum=120;例:intnum=-120;如果int長度為16bit,取值範(fàn)圍是-216-1~216-1-1,(-32768~32767)00000000011110001111111110001000浮點型(實數(shù)型)實數(shù)有兩種表示形式:十進位數(shù)形式,由數(shù)字和小數(shù)點組成例:123.4,5.0指數(shù)形式,字母e之前必須有數(shù)字,e之後必須為整數(shù)例:123.4e0=123.4,1.234e2=123.4,
123.4e-2=1.234規(guī)範(fàn)化的指數(shù)形式(C中實數(shù)的指數(shù)形式的輸出)字母e之前的小數(shù)部分,小數(shù)點左邊應(yīng)有且只有一位(非0)數(shù)字例:4.321e-02,4.321e+02浮點型在內(nèi)存中的存放形式以float型為例:按指數(shù)形式存儲(小數(shù))符號位+小數(shù)部分+(指數(shù))符號位+指數(shù)部分例:12.345在內(nèi)存中一般占4個位元組(32bit)C標(biāo)準未定義具體格式,一般C編譯器以24bit表示小數(shù)部分(包括符號位),8bit指數(shù)部分(包括指數(shù)的符號位)小數(shù)部分位越多,有效數(shù)字越多,數(shù)值範(fàn)圍越小float型的有效數(shù)字為7位數(shù)符小數(shù)階符指數(shù)01.234501浮點型float型:單精確度浮點類型,典型長度:32bit,典型有效數(shù)字:7位double型:雙精度浮點類型,典型長度:64bit;典型有效數(shù)字:15~16位例:floatf=
1.2345678;f的有效數(shù)字只有7位,即1.234567,超出7位的部分直接舍去(8被舍去)f的指數(shù)形式的輸出為:1.234567e+00限定符(qualifiers)限定符(即修飾符)用於限定基本數(shù)據(jù)類型主要用於改變數(shù)據(jù)類型在內(nèi)存中的長度
改變類型的取值範(fàn)圍格式:限定符1[限定符2]類型例:shortint例:unsignedshortint3類限定符short和long(限定整型)signed和unsigned(限定字元和整型)longdouble(限定浮點型)short和longshort和long:用於限定整型,提供不同長度的整數(shù)型例: shortintsh;
longintcounter;通常,int:16/32bit,shortint:16bit,
longint:32bit編譯器會跟據(jù)機器的硬體特性自主選擇整型的長度。基本規(guī)則:shortint和int至少為16bitlongint至少為32bitshortint類型的長度≤int類型長度
≤longint類型長度signed和unsignedsigned和unsigned:用於限定char類型和所有整型(包括shortint類型、int類型、longint類型)
unsigned限定的類型的數(shù)值總是非負(0,正整數(shù))signed限定的類型的數(shù)值有正、有負例:unsignedchar:取值範(fàn)圍0~28-1=255例:signedchar:取值範(fàn)圍-128~127例:unsignedint:取值範(fàn)圍0~216-1=65535signed和unsigned注意:signed和unsigned可以限定所有整型例:unsigendint
signdlongint當(dāng)整數(shù)沒有限定符時,默認是有符號的(即類型記憶體結(jié)構(gòu)中有1bit的符號位)例:intnum;/*長度為16bit,其中1bit符號位,15bit數(shù)據(jù)*/字元型沒有限定符時,是否有符號位由編譯系統(tǒng)決定longdoublelongdouble(高精度浮點數(shù)),類型長度≥double(雙精度類型)longdouble型:典型長度:128bit;典型有效數(shù)字:18~19位基本數(shù)據(jù)類型詳述每一種類型:記憶體中的存放形式分類常量(表示的方法,特殊的常量)變數(shù)(類型的聲明與定義,取值範(fàn)圍)細節(jié)問題整型數(shù)據(jù)整型分類有符號型:[signed]int:基本整型短整型([signed]short[int])長整型([signed]long[int])無符號型:無符號整型(unsignedint)無符號短整型(unsignedshort)無符號長整型(unsignedlong)在內(nèi)存中的存放形式(P41,P44)取值範(fàn)圍(P43)整型數(shù)據(jù)整型常量基本型(int)常量表示方法:十進位數(shù),例:12、345、0八進制數(shù)(以0開頭),例:012、045十六進制數(shù)(0x開頭),例:0x12、0x345長整型(long)常量表示方法:常數(shù)後加尾碼L(l)例:43210L(43210l);0x10ACA870L;1234L無符號整型常量表示方法:常數(shù)後加尾碼U(u)例:4321U;43210UL;-1234U(=64302);1234U整型數(shù)據(jù)整型變數(shù)分類(P42)定義格式(P44)細節(jié)問題:溢出避免溢出:根據(jù)估計變數(shù)值的範(fàn)圍,定義相應(yīng)類型的整型變數(shù)實型數(shù)據(jù)(浮點型)實型變數(shù)的分類(P46)單精確度(float) 例:float x,y;雙精度(double) 例:doublez;長雙精度(longdouble) 例:longdoublet;在內(nèi)存中的存放形式:按指數(shù)形式存放取值範(fàn)圍和有效數(shù)字長度(P46)取值範(fàn)圍由小數(shù)部分和指數(shù)部分共同決定記憶體中,小數(shù)域的長度決定的該種類型浮點數(shù)的有效位數(shù)。例如:float型,小數(shù)部分為24bit,小數(shù)域的長度為24-1=23bit,223=8388608,有7位有效數(shù)字數(shù)符小數(shù)階符指數(shù)小數(shù)部分指數(shù)部分實型數(shù)據(jù)(浮點型)細節(jié)問題:舍入誤差(P47):一個浮點型數(shù)據(jù)的有效數(shù)字長度有限的,在有效位以外的數(shù)據(jù)會被省去,這樣可能會產(chǎn)生誤差例3.4實型數(shù)據(jù)實型常量兩種表示方法:十進位數(shù)形式和指數(shù)形式例:10.0(實數(shù)常量)而10(整型常量)例:1.234e4也可以在實常量加尾碼F(f)實型變數(shù)分類(P46)定義格式(P47)字元型數(shù)據(jù)字元數(shù)據(jù)的存儲字元在內(nèi)存單元中存放的是其對應(yīng)的ASCII碼(P374),且一個字元佔用一個位元組的存儲空間C語言中,字元型數(shù)據(jù)可以視為是一種特殊的整型數(shù)據(jù)(8bit的整數(shù))。字元型數(shù)據(jù)可以賦值為整數(shù)值(ASCII值,0~255),字元數(shù)據(jù)可以以字元形式輸出,也可以用整數(shù)形式輸出。例3.6可以對字元型數(shù)據(jù)進行算術(shù)運算例3.7字元數(shù)據(jù)的存儲(續(xù))在TurboC中把字元處理為帶符號的整數(shù)ASCII碼取值為0~255,所以ASCII碼值為128~255間的字元,最高位為1(即符號位)例:求下段代碼的輸出
char c=130
printf("c=%d",c);解:C在內(nèi)存中:
10000010補=-126
所以列印出來c=-12610000010字元型數(shù)據(jù)字元常量一般字元常量的表示:撇號(單引號)括起來的單個字元例:'a';'F','0','+'特殊字元常量(鍵盤無法直接輸入):特點由'\'轉(zhuǎn)義字元引導(dǎo)(P48)例:'\n':換行符例:'\\':反斜杠例:'\016':對應(yīng)ASCII碼值為14的字元(見P374)字元型數(shù)據(jù)字串常量用雙引號括起來的字元序列例:"abcd","a"(區(qū)別字元常量'a')存儲形式(P52)系統(tǒng)自動在字串的末尾加上一個字串結(jié)束標(biāo)記‘\0’,以此判斷字串是否結(jié)束。程式中長度為n個字元的字串常量,在內(nèi)存中需要用n+1個位元組空間來存儲它。舉例:字串“string”的存儲string\01151161141051101030字元型數(shù)據(jù)字元變數(shù)字元變數(shù)用來存放字元常量只能放一個字元例:charch='a';變數(shù)賦初值C語言允許在定義變數(shù)時對變數(shù)進行初始化,即對變數(shù)賦初值。例::
對變數(shù)進行初始化,允許只對定義的變數(shù)的一部分賦初值。例:inta,b,c=25;
例:inta,b=c=25;
XC語言中若有幾個變數(shù)初值相同,必須分別賦值。對字元型變數(shù)初始化時,既可以將字元用單引號括起來直接賦值,也可以使用該字元的ASCII碼進行賦值。例:charch=‘A’; charch=65;inta=2;inta;a=2;基本的算術(shù)運算符:+-*/%乘法運算(*),例:2*y,而2y和2?y都是非法的除法運算(\),兩個運算元中:均是整數(shù),其值為整數(shù)。例:8/3=2有一個負整數(shù)運算元,結(jié)果向零取整。例:-5/3-2有一個浮點數(shù),其結(jié)果為double型模運算(%),例:7%4=3兩個運算元必須都是整型算術(shù)運算符算術(shù)運算式算術(shù)運算式:用算術(shù)運算符和括弧將運算對象(運算元)連接起來,符合C語法規(guī)則的式子運算對象(運算元):包括常量、變數(shù)、函數(shù)例:x+sqrt(a+b)/(abs(a-b)+x)
=運算符(包括算術(shù)運算符)具有優(yōu)先順序與結(jié)合性算術(shù)運算式求值時,先確定優(yōu)先順序,例*、/、%、+、-相同優(yōu)先順序,根據(jù)運算符的結(jié)合性(結(jié)合方向)確定執(zhí)行順序算術(shù)運算符結(jié)合方向:從左向右例如:x+y*3/(z-8)算術(shù)運算式強制類型轉(zhuǎn)換符將一個運算式的值轉(zhuǎn)換為所需類型的值強制類型轉(zhuǎn)換符格式:(類型名)(運算式)例:a是int型,而(double)a:將a的值轉(zhuǎn)換為double型例:(int)(x+y)(區(qū)別:(int)x+y)強制類型轉(zhuǎn)換符並不改變操作變數(shù)的類型值,例3.8強制類型轉(zhuǎn)換符自增、自減運算符(++,--)++i,--i:先自增/減,再使用i(i值已修改)i++,i--:先使用i(i值已修改),再自增/減例:例:j=i++;j=i;i=i+1;j=++i;i=i+1;j=i;區(qū)分:j=i+1;/*i值未變*/j=++i;/*i值改變*/自增、自減運算符自增、自減運算符只能用於變數(shù),而不能用於常量和運算式例:PRICE++X;5++X;(a+b)++X;(-b)++X自增、自減運算符優(yōu)先順序高於算術(shù)運算符,結(jié)合方向“自右向左”例:如果i=3,那麼printf("%d",-i++)輸出是幾?i值又為幾?格式:變數(shù)=運算式/常量/變數(shù)例:a=(x+y);x=3;x=y;作用:將等號右邊的運算式/常量/變數(shù)的值賦值給等號左邊變數(shù)區(qū)別賦值運算符與數(shù)學(xué)中的”等於“賦值,例賦值運算符i=3;j=i;3i存儲單元3j存儲單元整型與浮點型浮點型數(shù)據(jù)
整型變數(shù):取整(舍掉實數(shù)的小數(shù)部分)整型數(shù)據(jù)
浮點型變數(shù)(單,雙精度):數(shù)值不變,以浮點形式存儲到變數(shù)中浮點型間double型數(shù)據(jù)float型變數(shù):截取前面7位有效數(shù)字存放到變數(shù)中,注意避免數(shù)值範(fàn)圍溢出float型變數(shù)
double型數(shù)據(jù):數(shù)值不變,有效數(shù)字擴展到16位賦值結(jié)果與類型轉(zhuǎn)換整型之間長度相同的有符號和無符號的整型數(shù)間:原樣賦值整型包括:char,short,int,long負值
無符號整型變數(shù),無符號整數(shù)
整型變數(shù)間轉(zhuǎn)換時,數(shù)值會變化。例3.9賦值結(jié)果與類型轉(zhuǎn)換1111111111111111intb=-1;1111111111111111unsigneda=b;/*a=216-1=65535*/賦值結(jié)果與類型轉(zhuǎn)換整型之間長度不同的有符號整型數(shù)(char,short,int,long)間:短數(shù)據(jù)
長變數(shù):需要符號擴展
符號擴展:若最高位為1(負值),變數(shù)高位元組補1,反之補0。例11111110charc='\376';1111111111111111inta=c;賦值結(jié)果與類型轉(zhuǎn)換整型之間長度不同的有符號整型數(shù)(char,short,int,long)間:長數(shù)據(jù)
短變數(shù):將數(shù)據(jù)低位元組位原封不動地送到變數(shù)中例1000000000001000intb=a;/*b=-32760*/00000000011000001000000000001000longa=6324232L;幾個需要注意的問題子運算式的求值順序運算符的結(jié)合規(guī)律實參數(shù)的求值順序第三章數(shù)據(jù)類型、運算符與運算式C語句概述語句(statement):指示電腦完成一定操作任務(wù)的指令。一條語句
編譯
若干條機器指令聲明:數(shù)據(jù)的描述,而語句:對數(shù)據(jù)的操作每條語句以分號(;)結(jié)束C程式結(jié)構(gòu)C程式根源程式檔1根源程式檔2根源程式檔N預(yù)處理指令全局變數(shù)聲明函數(shù)1函數(shù)n函數(shù)首部函數(shù)體局部變數(shù)聲明執(zhí)行語句C語句的分類控制語句選擇語句:if–else;switch迴圈語句:for()~while()~do~while()轉(zhuǎn)向語句break;continuegoto;returnC語句的分類函數(shù)調(diào)用語句格式:函數(shù)名(參數(shù)表);例:printf("Helloworld\n");運算式語句格式:運算式;例:i++;例:a=x+y;重要的運算式語句:賦值語句格式:賦值運算式;例:a=3; 例:if((a=b)>0)t=a;/*區(qū)別與賦值運算式的區(qū)別,P69*/區(qū)別:賦值運算式可以包含在其他運算式中,賦值語句不行C語句的分類空語句格式: ;功能:什麼也不做應(yīng)用:迴圈語句中的空循環(huán)體,例
for(i=0;I<1000;i++)
;在程式開發(fā)過程中起到占位的作用,例
...
;/*某一功能暫時未完成,有待今後補齊代碼*/C語句的分類複合語句(語句塊)格式:
{
語句1;
語句2;
...
語句N;
}複合語句中}後無分號複合語句在語法上相當(dāng)於一條語句在複合語句中(語句塊中),可以聲明變數(shù)數(shù)據(jù)的輸入、輸出C語言沒有專門的輸入/輸出(I/O)語句I/O操作由標(biāo)準庫函數(shù)提供原始檔案必須包含I/O庫函數(shù)所對應(yīng)的頭檔(stdio.h)方法:在原始檔案頂部,添加#include"stdio.h"標(biāo)準I/O設(shè)備標(biāo)準輸入設(shè)備:鍵盤標(biāo)準輸出設(shè)備:顯示器字元輸出函數(shù)putchar功能:向標(biāo)準輸出(顯示器)輸出一個字元調(diào)用方式:putchar(c);參數(shù)c可以是字元型或者整型常量、變數(shù)、運算式例: 例:#include"stdio.h"main(){charc1='a',c2=97;putchar(c1);putchar(c2);putchar('a');putchar(97);}#include"stdio.h"main(){putchar('a');putchar('\n');putchar('\141');}字元輸入函數(shù)getchar功能:從標(biāo)準輸入(鍵盤)輸入一個字元調(diào)用方式:getchar();使用注意無參數(shù),函數(shù)返回值就是從標(biāo)準輸入得到的字元輸入時,按回車後,才開始接收字元只能接收第一個字元,多餘的字元將省略getchar()得到的字元可以賦給字元型,整型變數(shù),或作為運算式的一部分例:c=getchar()+('a'–'A');字元輸入函數(shù)getchar例:例:#include"stdio.h"main(){charc;printf("Enteracharacter:");c=getchar();putchar(c);}#include"stdio.h"main(){printf("Enteracharacter:");putchar(getchar());}格式輸出函數(shù)printf功能:向標(biāo)準輸出(顯示器)按照指定格式輸出任意類型的數(shù)據(jù)。調(diào)用方式:printf(格式控制,輸出表);例:printf("Answer=%d\n",11);例:printf("Helloworld!\n");雙引號括起來的字串要輸出的內(nèi)容,包括:常量、變數(shù)、運算式格式控制格式控制符的組成:普通字元:原樣輸出例:printf("a+b=12,\141\n");格式轉(zhuǎn)換說明:將要輸出的數(shù)據(jù)轉(zhuǎn)換為指定格式輸出每一個格式轉(zhuǎn)換說明都由%引導(dǎo),而以格式字元結(jié)束例:printf("%d%f%c",a,f1,'a');有多少個的格式轉(zhuǎn)換說明,就對應(yīng)有多少個數(shù)據(jù)參數(shù)
intprintf(格式轉(zhuǎn)換說明,參數(shù)1,參數(shù)2,...);
格式轉(zhuǎn)換說明格式轉(zhuǎn)換說明組成:%-7.3f引導(dǎo)符格式字元表示左對齊輸出,省略表示右對齊輸出表示輸出最小寬度表示輸出精度表示引導(dǎo)精度值格式轉(zhuǎn)換說明例:printf("%d",12345);輸出:例:printf("%7d",12345);輸出:例:printf("%-7d",12345);輸出:例:printf("%4d",12345);輸出:例:printf("%-4d",12345);輸出:例:printf("%7.3d",12345);輸出:01234567812345
1234512345--123451234512345格式轉(zhuǎn)換說明例:printf("%f",1.2345);輸出:例:printf("%7f",1.2345);輸出:例:printf("%-7f",1.2345);輸出:例:printf("%3f",1.2345);輸出:例:printf("%9f",12345);輸出:例:printf("%9.3f",12345);輸出:例:printf("%.3f",12345);輸出:例:printf("%-9.3f",12345);輸出:0123456781.2345001.2345001.2345001.2345001.2345001.2341.2341.234格式轉(zhuǎn)換說明例:printf("%s","hello");輸出:例:printf("%9s","hello");輸出:例:printf("%-4s","hello");輸出:例:printf("%.3s","hello");輸出:例:printf("%9.3s","hello");輸出:例:printf("%-9.3s","hello");輸出:012345678hellohellohellohelhelhel------格式轉(zhuǎn)換說明注意:printf函數(shù)默認是右對其輸出寬度值m:輸出的最小寬度,如果沒有指定精度,按數(shù)值的實際長度輸出如果數(shù)值的位數(shù)>m,則直接按數(shù)值的位數(shù)輸出如果數(shù)值的位數(shù)<m,則補齊位數(shù)(默認用空格)精度值:整型:輸出數(shù)值的最小位數(shù),如果數(shù)值的位數(shù)>m,則直接按數(shù)值的位數(shù)輸出浮點型:指定實數(shù)小數(shù)點後的位數(shù)字串:指定輸出字串的最大位數(shù)(超出的截斷)格式字元格式字元:指定輸出數(shù)據(jù)的類型和相應(yīng)的格式整型格式字元(P73-P74)d:帶符號的十進位整型u:無符號的十進位整型o:以無符號的八進制整型x:以無符號的十六進制整型ld:帶符號的十進位長整型整型格式字元例(P74例4.3)a:1111111111111111b:1111111111111110#include"stdio.h"main(){unsignedinta=65535;intb=-2;printf("a=%d,%o,%x,%u\n",a,a,a,a);printf("b=%d,%o,%x,%u\n",b,b,b,b);}輸出:a=-1,177777,ffff,65535b=-2,177776,fffe,65534格式字元c:輸出一個字元s:輸出字串例:#include"stdio.h"main(){charc='a';printf("c=%c,%c\n",c,97);printf("%s\n","CHINA");}格式字元e:以指數(shù)形式輸出實型數(shù)據(jù);f:以小數(shù)形式輸出實型數(shù)據(jù);g:自動選擇f格式或e格式中寬度較小的一種輸出實數(shù),且不列印無效的0。注意:單精確度型數(shù)據(jù),用%f輸出,前7位有效,且小數(shù)點後固定位6位雙精度型數(shù)據(jù),用%lf輸出,前16位有效,且小數(shù)點後固定位6位printf函數(shù)注意事項輸出數(shù)據(jù)類型要與格式說明相匹配,包括類型、格式格式字元x,e,g可以是大寫字母X,E,G除x,e,g外的格式字元均為小寫如若輸出字元“%”,在“格式控制”中用連續(xù)兩個“%”即可長度修正符:h(short):只能修飾整型數(shù)據(jù)l(long):修飾整型數(shù)據(jù)——輸出長整型,修飾浮點型——輸出雙精度格式輸入函數(shù)scanf功能:將用戶從標(biāo)準輸入輸入的數(shù)據(jù)存儲到由變數(shù)地址所指定的記憶體空間。調(diào)用格式:scanf(格式控制,變數(shù)地址表);“格式控制”部分同printf函數(shù),但有區(qū)別(無精度控制)。“地址表”由變數(shù)地址組成,表明每個輸入項應(yīng)在存儲單元的首地址。獲取變數(shù)首地址的格式:&變數(shù)名例:#include"stdio.h"main(){charc;inti;
scanf("%c%d",&c,&i)}......變數(shù)c
地址
記憶體
80A580A680A780A880A980AD變數(shù)i
格式輸入函數(shù)scanf格式控制:與printf函數(shù)中的格式控制相似每一個格式轉(zhuǎn)換說明都由%引導(dǎo),而以格式字元結(jié)束例:scanf("%d%i%f",&i1,&i2,&f);格式字元(P80)對於無符號整型,可使用u,o,x格式符i,表示可以用十進位(123),也可用八進制(0123),和十六進制(0x123)輸入;而格式符d只能輸入十進位整型附加格式說明字元:l,h,*,域?qū)挘≒80)scanf函數(shù)注意事項輸入數(shù)據(jù)的分割採用隱含的分隔符號:空格、回車、Tab鍵根據(jù)格式中指定的域?qū)挿指糍Y料項目(不提倡)採用用戶指定的分隔符號,即在格式控制字串內(nèi)除格式說明以外的其他字元,輸入數(shù)據(jù)時都應(yīng)照樣輸入例:scanf("input%d,%d",&a,&b);
在輸入時應(yīng)鍵入:input2,3輸入無符號數(shù)據(jù)時,應(yīng)採用o,x格式符引例計算函數(shù)值:輸入xX=0?
YNy=1y=six/x
輸出y#include"stdio.h"#include"math.h"main(){floatx,y;printf("inputx:\n");scanf("%f",&x);if(x!=0.0)y=sin(x)/x;elsey=1;printf("y=%f",y);}關(guān)係運算符關(guān)係運算實際上是“比較運算”<<=>>=(優(yōu)先順序相同)==!=(優(yōu)先順序相同)優(yōu)先順序:算術(shù)運算符關(guān)係運算符賦值運算符結(jié)合方向:從左向右例:c>a+b
c>(a+b)a==b>ca==(b>c)a=b==ca=(b==c)低高低高關(guān)係運算式關(guān)係運算式:用關(guān)係運算符將兩個運算式(算術(shù)運算式,字元運算式,關(guān)係運算式,邏輯運算式,賦值運算式)連接起來的式子例:x+y>5'a'=='A' 字元量比較:根據(jù)ASCII值(4*2)>(4==2) 關(guān)係運算式的值:“真”(1)或“假”(0)
例:a=3,b=2,c=1則:a>b的值為真,運算式的值為1a>b==c的值為真,運算式的值為1b+c<a的值為假,運算式的值為0b+c<=a的值為真,運算式的值為1例:a=3,b=2,c=1,如果d=a!=
b==c,則d=1邏輯運算符邏輯運算符:&&邏輯與例:a&&b,若a,b都為真,則邏輯運算式值為真。||邏輯或例:a||b,若a,b都為假,則邏輯運算式值為假,(換言之:a,b中有一個為真,則邏輯運算式值為真)。!邏輯非例: !a,若a為真,則邏輯運算式值為假;反之依然。真值表(P89)邏輯運算符優(yōu)先順序:!&&||結(jié)合順序:!:從右向左&&和||:從左向右例:!a||b&&x>y&&c
(!a)||
b&&(x>y)&&c低高低高?。ǚ牵?/p>
算術(shù)運算符關(guān)係運算符&&
||賦值運算符各種運算符的優(yōu)先順序12345邏輯運算式邏輯運算式:用邏輯運算符將關(guān)係運算式或邏輯量連接起來的式子邏輯量:用來進行判斷的變數(shù)或者常量C編譯系統(tǒng)認為:值等於零:假非零值:真例:若a=4,在a&&1中,a就是邏輯量,代表真邏輯運算式的值:真為1,假為0例:若a=4,則:!a 0a&&-5 1a||0 1a&&0 0邏輯運算式例:a=3,b=2,c=1則:a>b&&b>c(a>b)&&(b>c)a!=b&&b!=c(a!=b)&&(b!=c)!a||c>a(!a)||(c>a)例:5>3||
2&&
!8<4-!0,結(jié)果為1例:判斷某年year是否是閏年(閏年:能被4整除,且不能被100整除,或者能被400整除)year%4==0&&year%100!=0||year%400==0
例:x≤a+1,並且y≤b,C語言邏輯運算式:x<=a+1&&y<=b例 的定義域(x>2||x<1)&&x!=0if語句if語句的三種形式:條件執(zhí)行格式:if(判斷條件p)
語句A;例:例A空p真假if(a>0)printf("a=%dispositive\n",a);...if(x>y){ temp=x;x=y;y=temp;}...條件執(zhí)行注意:語句A可以是複合語句判斷條件P是一個運算式,如果值為0
假,非0
真例:例:例:if('a')printf("OK\n");x=-1;
if(x)printf("OK\n");y=0;
if(y)printf("OK\n");例:任給a,b,c三數(shù),按從大到小順序輸出(1/2)例:任給a,b,c三數(shù),按從大到小順序輸出方法:判斷-交換若a<b,則a,b交換若a<c,則a,c交換a最大若b<c,則b,c交換c最小判斷——ifelse語句交換:需引入臨時變數(shù)
tmp=a;a=b;b=tmp;例:任給a,b,c三數(shù),按從大到小順序輸出(2/2)交換a,bBa<b真假輸入a,b,c交換a,cBa<c真假交換b,cBb<c真假輸出a,b,c#include"stdio.h"main(){inta,b,c;inttmp;printf("Inputa,b,c:\n");scanf("%d%d%d",&a,&b,&c);if(a<b){tmp=a;a=b;b=tmp}if(a<c)tmp=a;a=c;c=tmp;}if(b<c){tmp=b;b=c;c=tmp;}printf("%d,%d,%d\n",a,b,c);}if語句——分支選擇if語句的三種形式:分支選擇格式:if(判斷條件p)
語句A;
else
語句B;例:注意:else部分不能單獨存在,它必須是if語句的一部分語句A、B都可以是複合語句ABp真假if(a>0)printf("a=%dispositive\n",a);elseprintf("a=%disnotpositive\n",a);if語句例:輸入一個整數(shù),判斷奇偶#include"stdio.h"main(){inta;printf("Inputinteger:\n");scanf("%d",&a);if(a%2)printf("%disanodd\n",a);elseprintf("%disaeven\n",a);}if語句——階梯式if語句的三種形式:多分支選擇(稱為
階梯式ifelse或elseif語句)格式:if(判斷條件p1)
語句A1
elseif(判斷條件p2)
語句A2
elseif(判斷條件p3)
語句A3
else
語句A4注意:執(zhí)行順序:從上向下逐個判斷條件pi,一旦發(fā)現(xiàn)條件pi滿足,執(zhí)行Ai,並跳過剩餘的階梯最後一個else表示除了以上所有條件(p1、p2、p3)外的情況下,有時可以省略else與最近的if語句匹配A1p2p1真假真假A2p3真假A3A4if語句例:評價學(xué)生成績,規(guī)則:score>=90,Ascore>=80,Bscore>=60,Cscore<60,D#include"stdio.h"main(){intscore;printf("Inputscore:\n");scanf("%d",&score);if(score>=90)printf("%dgreedisA\n",score);elseif(score>=80)printf("%dgreedisB\n",score);elseif(score>=60)printf("%dgreedisC\n",score);else printf("%dgreedisD\n",score);printf("finish\n");
}if語句例:判斷輸入的字元是數(shù)字、大寫字母、小寫字母或其他字元。#include<stdio.h>intmain(){ charc; printf("Enteracharacter:"); c=getchar(); if(c>='0'&&c<='9') printf("Digit!\n"); elseif(c>='A'&&c<='Z') printf("Uppercase!\n"); elseif(c>='a'&&c<='z') printf("Lowercase!\n"); elseprintf("Othercharater!\n");}if語句的嵌套標(biāo)準格式
if(P1)
if(P2)
A1;
else
A2;
else
if(P3)
A3;
else
A4;P1真假P2真假P3真假A1A2A3A4if語句的嵌套標(biāo)準格式
if(P1)
if(P2)
A1;
else
A2;
else
if(P3)
A3;
else
A4;格式1
if(P1)
A1;
else
if(P2)
A2;
else
A3;格式2
if(P1)
if(P2)
A1;
else
A2;
else
A3;else與最近的if語句匹配
if(P1)
if(P2)
A1;
else
if
(P3)
A3;
else
A4;if語句的嵌套注意:else與最近的if語句匹配例:
if(x>0)
if(y==1)printf("1");
elseprintf("2");通過加{}可以改變else的層次例
if(x>0){
if(y==1)printf("1");
}
elseprintf("2");例:斷某一年是否是閏年(被4整除且不被100整除,或者被400整除)#include"stdio.h"main(){intyear,flag;scanf(“%d”,%year);if(year%400==0)flag=1;elseif(year%4==0) if(year%100==0)flag=0; elseflag=1;elseflag=0;if(flag) printf("%disleapyear\n",year);else printf("%disnotaleapyear\n",year);}flag=1year%4year%400真假真假
year%100真假flag=0flag=1flag=0輸入yearflag真假輸入閏年輸入非閏年例:斷某一年是否是閏年(被4整除且不被100整除,或者被400整除)#include"stdio.h"main(){intyear,flag;scanf(“%d”,%year);if(year%400==0)flag=1;elseif(year%4==0) if(year%100==0)flag=0; elseflag=1;elseflag=0;if(flag) printf("%disleapyear\n",year);else printf("%disnotaleapyear\n",year);}if(year%4!=0)flag=0;elseif(year%100!=0)flag=1;elseif(year%400==0)flag=1;elseflag=0;if(year%4==0&&year%100||year%400==0)flag=1;elseflag=0;條件運算符唯一的三目運算符格式:運算式1?運算式2:運算式3例:x=a>b?a:b
等價if(a>b)x=a;
elsex=b;優(yōu)先順序:高於賦值運算賦,低於算術(shù)、條件、邏輯運算符結(jié)合方向:從右向左例:a>b?a:c>d?c:d等價a>b?a:(c>d?c:d)
switch語句和break語句switch語句:是專門用於實現(xiàn)多分支選擇的語句break語句:終止switch語句的執(zhí)行格式:
switch語句的一般形式:
switch(運算式){
case常量運算式1:語句1
case常量運算式2:語句2
……
case常量運算式n:語句n
[default:語句n+1]
}執(zhí)行過程:計算運算式若與常量運算式i一致,開始執(zhí)行,直到遇到break語句或switch語句的}時結(jié)束若與所有常量運算式均不一致,執(zhí)行default後的語句switch語句switch語句中的“運算式”和case後面的“常量運算式”的結(jié)果值的類型應(yīng)該一致。每一個case的常量運算式的值必須互不相同,否則出現(xiàn)矛盾現(xiàn)象。各個case的出現(xiàn)次序不影響執(zhí)行結(jié)果。執(zhí)行完一個case後面的語句後,流程控制轉(zhuǎn)移下一個case繼續(xù)執(zhí)行。default語句為選擇項,可有可無。另外,default後面可以不加break語句。多個case可以共用一組執(zhí)行語句,如例:
…
case‘A’:
case‘B’:
case‘C’:printf(“>60\n”);break;Grade的值為‘A’、‘B’、‘C’時都執(zhí)行同一組語句。概述迴圈結(jié)構(gòu):在給定條件成立時,反復(fù)執(zhí)行某程式段,直到條件不成立為止。給定的條件稱為迴圈條件,反復(fù)執(zhí)行的程式段稱為循環(huán)體。實現(xiàn)迴圈的四種語句用goto語句和if語句構(gòu)成迴圈;(不提倡)用while語句;(while型迴圈,先判斷,再執(zhí)行)用do-while語句;(先執(zhí)行,再判斷)用for語句;(多功能)goto語句以及用goto語句構(gòu)成迴圈goto語句功能:無條件地轉(zhuǎn)向語句標(biāo)號所在的語句行出開始執(zhí)行格式為:goto語句標(biāo)號;語句標(biāo)號:屬於識別字,命名規(guī)則與變數(shù)相同不提倡使用,會破壞結(jié)構(gòu)化,例: 例:求1+2+3…+100的和
for(...)for(...){...if(disaster)gotoerror;}...er
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 菊花種植收購事宜合同
- 基于大數(shù)據(jù)驅(qū)動的企業(yè)轉(zhuǎn)型升級合作協(xié)議
- 企業(yè)廣告牌制作合同
- 塔吊租賃協(xié)議樣本
- 環(huán)境監(jiān)測與評估合同
- 防雷裝置檢測技術(shù)服務(wù)合同
- 場地轉(zhuǎn)讓合同協(xié)議書
- 房地產(chǎn)項目合作協(xié)議
- 自動化生產(chǎn)線改造項目合作合同
- 美食外賣平臺食品質(zhì)量免責(zé)協(xié)議
- RBA商業(yè)道德程序文件(系列)
- 2024年國家保密法知識競賽經(jīng)典題庫及完整答案【必刷】
- 某山體滑坡綜合治理工程監(jiān)理規(guī)劃
- 遼寧省大連市2023-2024學(xué)年八年級下學(xué)期第一次月考語文試題(含答案解析)
- 抑郁癥病例分享
- 《子路、曾皙、冉有、公西華侍坐》課件()
- 青島版(五四制)四年級數(shù)學(xué)下冊全冊課件
- 胎膜早破的診斷與處理指南
- 新時代勞動教育教程(中職版勞動教育)全套教學(xué)課件
- 廚房用電安全知識
- 承德承德縣2023-2024學(xué)年八年級上學(xué)期期末數(shù)學(xué)綜合檢測卷(含答案)
評論
0/150
提交評論