




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第二章C++語言編程基礎(chǔ)2.1C++語言詞法2.2基本數(shù)據(jù)類型2.3運算符與表達式2.4流程控制語句2.5ACM國際大學(xué)生程序設(shè)計競賽中的輸入輸出2.1C++語言詞法【例2.1】C++語言詞法應(yīng)用程序的例子。/*
這是一個簡單的C++語言程序用來計算一矩形的面積。*/#include<iostream>usingnamespacestd;intmain()//主函數(shù),程序入口{intw=4,h=3,area; //定義變量w,h,area,并給w,h賦值area=w*h; //用乘法運算符求面積cout<<"s="<<area<<endl; //輸出面積return0;}返回第5頁P162.1C++語言詞法2.1.1注釋在程序中加入注釋是一個好的編程習(xí)慣,程序中加入合理的注釋會增強程序的可讀性,它不僅對程序調(diào)試和修改有益,而且更有利于程序的維護和移交。
注釋內(nèi)容本身對程序的執(zhí)行不產(chǎn)生任何影響,因而被編譯器忽略。P162.1C++語言詞法1./*注釋內(nèi)容*/
/*和*/之間的所有字符均為注釋,將被編譯器忽略。這種形式的注釋可以擴展到多行,但不能嵌套。2.//注釋內(nèi)容由//開始到行末的內(nèi)容均為注釋。這種形式的注釋只能為一行。如例2.1第7、9、10、11行。P162.1C++語言詞法2.1.2關(guān)鍵詞關(guān)鍵詞是構(gòu)成編程語言本身的符號,是一種特殊的標(biāo)識符,又稱保留字。ANSIC關(guān)鍵詞autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofreturnstructswitchtypedefunionunsignedvoidvolatilewhileP172.1C++語言詞法ANSIC++關(guān)鍵字boolcatchclassconst_castdeletedynamic_castexplicitfalsefriendinlinemutablenamespacenewoperatorprivateprotectedpublicreinterpret_caststatic_casttempletethisthrowtruetrytypeidtypenameusingvirtualwchar_tP172.1C++語言詞法2.1.3標(biāo)識符標(biāo)識符是能被編譯器識別的名字,可以是任意長度。
C++語言的標(biāo)識符的命名規(guī)則:由字母或下劃線(_)開頭,同時由字母、0~9的數(shù)字或下劃線(_)組成。不能與關(guān)鍵詞同名。P172.1C++語言詞法例如:school_id,_age,es10為合法的標(biāo)識符。school-id,man*,2year,class為不合法的標(biāo)識符。幾點說明:(1)C++語言關(guān)鍵詞不能用做普通的標(biāo)識符使用。(2)標(biāo)識符不宜過短,過短的標(biāo)識符會導(dǎo)致程序的可讀性變差;但也不宜過長,否則將增加錄入工作量和出錯的可能性。P182.1C++語言詞法2.1.4常量常量是指直接用于程序中的、不能被程序修改的、固定不變的量。
C++語言中的常量值是用數(shù)值或字符串表示的。
C++語言常量包括整數(shù)、浮點數(shù)、布爾、字符、字符串五種類型。P182.1C++語言詞法2.1.5變量變量是指C++語言編程中合法的標(biāo)識符,是用來存取某種類型值的存儲單元,其中存儲的值可以在程序執(zhí)行的過程中被改變。在C++語言中用到的變量必須先定義后使用。對變量的定義就是給變量分配相應(yīng)類型的存儲空間。定義變量的一般形式為:
[<變量修飾符>]<變量類型說明符><變量列表>[=<初值>]P182.1C++語言詞法變量修飾符是可選項,說明了變量的訪問權(quán)限和某些規(guī)則。變量類型說明符,確定了變量的取值范圍以及對變量所能進行的操作規(guī)范。變量列表,由一個或多個變量名組成。當(dāng)要定義多個變量時,各變量之間用逗號分隔。初值是可選項,變量可以在定義的同時賦初值,也可以先定義,在后續(xù)程序中賦初值。P182.1C++語言詞法
C++語言中的變量名除了符合標(biāo)識符的條件之外,還必須滿足下列約定:變量名不能與關(guān)鍵詞相同。C++語言對變量名區(qū)分大小寫。變量名應(yīng)具有一定的含義,以增加程序的可讀性。
C++語言變量包括整數(shù)、浮點數(shù)、布爾型、字符型四種類型。P182.1C++語言詞法2.1.6運算符運算符是一種特殊字符,又稱操作符,是對變量或其他對象進行運算操作的特定符號。運算符按其功能可以分為六類:算術(shù)操作、位操作、關(guān)系操作、邏輯操作、賦值操作和條件操作運算符。P182.1C++語言詞法2.1.7分隔符分隔符是C++語言中用作特定作用的字符或字符的組合,分隔符的主要作用是告訴編譯器如何分隔和組合代碼。
C++語言中使用的分隔符共五種:“()”,“{}”,“[]”,“;”,“,”。P192.1C++語言詞法1.括號()括號“()”用來分隔表達式、組合表達式或表達式方法調(diào)用。2.花括號{}花括號“{}”表示復(fù)合語句,即一個程序塊的開始和結(jié)束。3.方括號[]方括號“[]”用來表示一維或多維數(shù)組的下標(biāo)。P192.1C++語言詞法4.逗號,逗號“,”用來分隔方法參數(shù)中的參數(shù)、同一類型變量的連續(xù)聲明以及用于逗號表達式。5.分號;分號“;”是語句的終止符,任何合法的C++語言表達式語句后面必須有分號,花括號后面沒有分號??崭?,制表符,換行符以及注釋符是特殊的分隔符,用來分隔其他標(biāo)記。P192.2基本數(shù)據(jù)類型數(shù)據(jù)類型指明變量或表達式的狀態(tài)和行為,數(shù)據(jù)類型決定了數(shù)的取值范圍和運算符號。在C++語言數(shù)據(jù)類型可以分為兩大類:基本類型和引用類型?;绢愋褪侵覆荒茉俜纸獾臄?shù)據(jù)類型,其數(shù)據(jù)在函數(shù)的調(diào)用中是以傳值方式工作的;非基本類型有時也稱復(fù)合類型,它是可以分解為基本類型的數(shù)據(jù)類型,其數(shù)據(jù)在函數(shù)調(diào)用中是以傳址方式來工作的。例2.2P192.2基本數(shù)據(jù)類型P202.2.1整型1.整數(shù)常量整數(shù)常量是不帶小數(shù)的數(shù)值,用來表示正負數(shù)。
C++語言的整數(shù)常量有三種形式:十進制、八進制、十六進制(1)十進制整數(shù)是由不以0開頭的0~9的數(shù)字組成的數(shù)據(jù)。(2)八進制整數(shù)是由以0(數(shù)字0)開頭的0~7的數(shù)字組成的數(shù)據(jù)。(3)十六進制整數(shù)是由以0x(數(shù)字0)或0X開頭的0~9的數(shù)字及A~F的字母(大小寫字母均可)組成的數(shù)據(jù)。P212.2.1整型例如:0,63,83是十進制數(shù),
00,077,0123是八進制數(shù),
0x0,0X0,0X53,0x53,0X3f,0x3f是十六進制數(shù)。整數(shù)常量的取值范圍是有限的,它的大小取決于此類整型數(shù)的類型,與所使用的進制形式無關(guān)。P212.2.1整型2.整型變量類型整型變量類型有byte、short、int、long四種說明符,都是有符號整型。(1)byte類型
byte類型說明一個帶符號的8位整型變量。由于不同的機器對于多字節(jié)數(shù)據(jù)的存儲方式不同,可能是從低字節(jié)向高字節(jié)存儲,也可能是從高字節(jié)向低字節(jié)存儲,這樣,在分析網(wǎng)絡(luò)協(xié)議或文件格式時,為了解決不同機器上的字節(jié)存儲順序問題,用byte類型來表示數(shù)據(jù)是合適的。P212.2.1整型(2)short類型
short類型說明一個帶符號的16位整型變量。它限制了數(shù)據(jù)的存儲應(yīng)為先高字節(jié),后低字節(jié)。(3)int類型
int類型說明一個帶符號的32位整型變量。int類型是一種最豐富最有效的類型。它最常用于計數(shù)、數(shù)組訪問和整數(shù)運算。P212.2.1整型(4)long類型
long類型說明一個帶符號的64位整型變量。對于大型計算,常常會遇到很大的整數(shù),并超出int所表示的范圍,這時要使用long類型。表2-2整數(shù)類型的取值范圍類型寬度取值范圍long64-9223372036854775808~9223372036854775807int32-2147483648~2147483647short16-32768~32767byte8-128~127P212.2.1整型說明:(1)在為byte和short類型分配內(nèi)存空間時,C++語言運行器一律按32位分配,這是因為現(xiàn)在大多數(shù)機器字長為32位。(2)如果某一類型的變量放不下一個較大的值,該值就會被取模以使它處于合法的范圍內(nèi)。P212.2.2浮點型1.浮點數(shù)常量浮點數(shù)是帶有小數(shù)的十進制數(shù),可用一般表示法或科學(xué)記數(shù)法表示。(1)一般表示法:十進制整數(shù)+小數(shù)點+十進制小數(shù)。如:3.14159,0.567,9777.12(2)科學(xué)記數(shù)法:十進制整數(shù)+小數(shù)點+十進制小數(shù)+E(或e)+正負號+指數(shù)。如:1.234e5,4.90867e-2P222.2.2浮點型
C++語言的浮點數(shù)常量在機器中有單精度和雙精度之分。單精度以32位形式存放,用f/F做后綴標(biāo)記(可以省略);雙精度則以64位形式存放。當(dāng)一個浮點數(shù)常量沒有特別指定精度時,則它為雙精度浮點數(shù)常量。P222.2.2浮點型2.浮點變量類型浮點變量也稱實數(shù)變量,有float和double兩種類型說明符。(1)float類型
float類型是一個位數(shù)為32位的單精度浮點數(shù)。它具有運行速度較快,占用空間較少的特點。(2)double類型
double類型是一個位數(shù)為64的雙精度浮點數(shù)。雙精度數(shù)在某些具有優(yōu)化和高速運算能力的現(xiàn)代處理機上運算比單精度數(shù)快。雙精度類型double比單精度類型float具有更高的精度和更大表示范圍,常常使用。P222.2.2浮點型浮點類型的取值范圍類型位長取值范圍F/f321.4012984632481707e-45~3.40282346638528860e+38D/d644.9406564584124654e-324~1.79769313486231570e+308P222.2.2浮點型【例2.3】列出C++語言的整型數(shù)據(jù)范圍。#include<iostream>usingnamespacestd;intmain(){intmaxint=INT_MAX;intminint=INT_MIN;longmaxlong=LONG_MAX;longminlong=LONG_MIN;shortmaxshort=SHRT_MAX;shortminshort=SHRT_MIN;cout<<"maxint="<<maxint<<endl;cout<<"minint="<<minint<<endl;cout<<"maxlong="<<maxlong<<endl;cout<<"minlong="<<minlong<<endl;cout<<"maxshort="<<maxshort<<endl;cout<<"minshort="<<minshort<<endl;return0;}VisualC++下運行結(jié)果為:maxint=2147483647minint=-2147483648maxlong=2147483647minlong=-2147483648maxshort=32767minshort=-32768
TurboC++下運行結(jié)果為:maxint=32767minint=-32768maxlong=2147483647minlong=-2147483648maxshort=32767minshort=-32768P222.2.3字符型1.字符型常量字符型常量是指由單引號括起來的單個字符。例如:'a','A','z','$','?'。注意:'a'和'A'是兩個不同的字符常量。轉(zhuǎn)義字符
C++語言還允許使用一種以“\”開頭的特殊形式的字符常量,這種字符常量稱為轉(zhuǎn)義字符。其用來表示一些不可顯示的或有特殊意義的字符。P232.2.3字符型轉(zhuǎn)義字符表功能字符形式功能字符形式回車\r單引號\'換行\(zhòng)n雙引號\"水平制表\t八進制位模式\ddd退格\b十六進制模式\xdddd換頁\f反斜線\\P23ASCII編碼表2.2.3字符型2.字符型變量字符型變量的類型說明符為char,它在機器中占8位,其范圍為0~255。注意:字符型變量只能存放一個字符,不能存放多個字符,P242.2.4布爾型1.布爾常量布爾常量只有兩個值:“true”和“false”,表示“真”和“假”,均為關(guān)鍵詞,在機器中位長為8位。2.布爾型變量布爾型變量的類型說明符為bool,用來表示邏輯值。P242.2.5類型轉(zhuǎn)換類型轉(zhuǎn)換可分為自動類型轉(zhuǎn)換、強制類型轉(zhuǎn)換兩種。1.自動類型轉(zhuǎn)換整型、浮點型、字符型數(shù)據(jù)可以進行混合運算。運算中,不同類型的數(shù)據(jù)先轉(zhuǎn)化為同一類,然后進行運算。為了保證精度,轉(zhuǎn)換從低級到高級。各類型從低級到高級的順序為:
char→int→long→float→doubleP242.2.5類型轉(zhuǎn)換2.強制類型轉(zhuǎn)換高級數(shù)據(jù)要轉(zhuǎn)換成低級數(shù)據(jù),需用使用強制類型轉(zhuǎn)換。這種使用可能會導(dǎo)致溢出或精度的下降,最好不要使用。強制類型轉(zhuǎn)換的格式為:(type)變量;P242.2.5類型轉(zhuǎn)換【例2.4】數(shù)據(jù)類型轉(zhuǎn)換的例子。#include<iostream>usingnamespacestd;intmain(){charc=50;inti=90;longl=555L;floatf=3.5f;doubled=1.234;floatf1=f*c;//float*byte->floatinti1=c+i;//char+int->intlongl1=l+i1;//long+int->longdoubled1=f1/i1-d;//float/int->//float,float-double->doublecout<<"f1="<<f1<<endl;cout<<"i1="<<i1<<endl;cout<<"l1="<<l1<<endl;cout<<"d1="<<d1<<endl;return0;}運行結(jié)果為:f1=175i1=140l1=695d1=0.016P242.3運算符與表達式
C++語言的運算符是一種特殊字符,它指明用戶對操作數(shù)進行的某種操作。表達式是由常量、變量、方法調(diào)用以及一個或多個運算符按照一定的規(guī)則的組合,它用于計算或?qū)ψ兞窟M行賦值。【例2.5】C++語言運算符與表達式簡單應(yīng)用的例子。P252.3運算符與表達式2.3.1算術(shù)運算符及表達式算術(shù)運算符用于算術(shù)運算,其操作數(shù)為數(shù)字類型或字符類型。算術(shù)表達式就是用算術(shù)運算符將變量、常量、方法調(diào)用等連接起來的式子,其運算結(jié)果為數(shù)值常量。P252.3運算符與表達式算術(shù)運算符運算符名稱使用方式說明+加a+ba加b-減a-ba減b*乘a*ba乘b/除a/ba除b%取模a%ba取模b(返回除數(shù)的余數(shù))++遞加++a,a++遞加--遞減--a,a--遞減P262.3運算符與表達式算術(shù)運算符有:單目運算符和雙目運算符。%:結(jié)果為被除數(shù)-商*除數(shù),符號與被除數(shù)一致。/:當(dāng)雙目運算符左右兩個操作數(shù)都是整數(shù)的時候,進行的是整除運算;當(dāng)雙目運算符左右兩個操作數(shù)有一個不是整數(shù)的時候,進行的是除法運算;P262.3運算符與表達式單目算術(shù)運算符“++”、“--”的前綴與后綴方式,對操作數(shù)本身的值的影響是相同的。但其對表達式的值的影響是不同的。前綴方式是先將操作數(shù)加(或減)1,再將操作數(shù)的值作為算術(shù)表達式的值;后綴方式是先將操作數(shù)的值作為算術(shù)表達式的值,再將其加(或減)1。如:a的值為5,++a為前綴方式,首先將a的值加1,再得到表達式的值為6;a++為后綴方式,首先得到表達式的值為5,再將a的值加1?!纠?.6】C++語言運算符與表達式。P262.3運算符與表達式2.3.2賦值運算符及表達式賦值運算符“=”就是把右邊操作數(shù)的值賦給左邊操作數(shù)。
賦值表達式格式:<變量名>=<表達式>;賦值表達式就是用賦值運算符將變量、常量、表達式連接起來的式子。賦值運算符左邊操作數(shù)必須是一個變量,右邊操作數(shù)可以是常量、變量、表達式,賦值運算符就是把一個常量賦給一個變量。P272.3運算符與表達式在賦值運算符兩邊的操作數(shù)的數(shù)據(jù)類型如果一致,就直接將右邊的數(shù)據(jù)賦給左邊;如果不一致,就需要進行數(shù)據(jù)類型自動或強制轉(zhuǎn)換,將右邊的數(shù)據(jù)類型轉(zhuǎn)換成左邊的數(shù)據(jù)類型后,再將右邊的數(shù)據(jù)賦給左邊變量。在賦值運算符“=”前面加上其他運算符,組成復(fù)合運算符P272.3運算符與表達式復(fù)合運算符運算符名稱使用方式說明+=相加賦值a+=b加并賦值,a=a+b-=相減賦值a-=b減并賦值,a=a-b*=相乘賦值a*=b乘并賦值,a=a*b/=相除賦值a/=b除并賦值,a=a/b%=取模賦值a%=b取模并賦值,a=a%bP282.3運算符與表達式2.3.3關(guān)系運算符及表達式關(guān)系運算符用來對兩個操作數(shù)進行比較。關(guān)系表達式就是用關(guān)系運算符將兩個表達式連接起來的式子,其運算結(jié)果為布爾邏輯值。
運算過程為,如果關(guān)系表達式成立,結(jié)果為真(true),否則為假(false)。P282.3運算符與表達式關(guān)系運算符運算符名稱使用方法說明==等于a==b如果a等于b返回真,否則為假!=不等于a!=b如果a不等于b返回真,否則為假>大于A>b如果a大于b返回真,否則為假<小于A<b如果a小于b返回真,否則為假<=小于或等于a<=b如果a小于或等于b返回真,否則為假>=大于或等于a>=b如果a大于或等于b返回真,否則為假P282.3運算符與表達式2.3.4邏輯運算符及表達式邏輯運算符用來對關(guān)系表達式進行運算。邏輯表達式就是用邏輯運算符將關(guān)系表達式連接起來的式子,其運算結(jié)果為布爾邏輯值。邏輯運算符運算符名稱運算符名稱&&邏輯與!邏輯非||邏輯或^邏輯異或除邏輯非是單目運算符外,其余都為雙目運算符。P282.3運算符與表達式與、或、非、異或運算規(guī)則表達式A表達式BA&&BA||BA^B!Afalsefalsefalsefalsefalsetruefalsetruefalsetruetruetruetruefalsefalsetruetruefalsetruetruetruetruefalsefalse通常,關(guān)系運算符和邏輯運算符在一起使用,用于流程控制語句的判斷條件。P292.3運算符與表達式【例2.7】使用關(guān)系運算符和邏輯運算符實例。#include<iostream>usingnamespacestd;intmain(){inta=25;intb=3;boold=a<b;cout<<a<<"<"<<b<<"=";cout<<d<<endl;intf=0;d=f!=0&&a/f>5;cout<<"f!=0&&a/f>5="<<d<<endl;return0;}運行結(jié)果為:25<3=0f!=0&&a/f>5=0P292.3運算符與表達式2.3.5位運算符位運算符是用來對整型(long、int、char)數(shù)中的位進行測試、置位或移位處理,它涉及到操作數(shù)中的每一位。位運算符運算符含義運算符含義運算符含義~位非(單目)>>右移,最低位移出,最高位補符號位,正數(shù)補0,負數(shù)補1<<=左移并賦值&位與<<左移,最高位移出,最低為補0>>=右移并賦值|位或&=位與并賦值^=位異或并賦值^位異或|=位或并賦值P292.3運算符與表達式在位運算過程中,如果碰到兩個操作數(shù)類型不同,即長度不同,例如A&B,A是short型(16位),B是long型(32位),則系統(tǒng)首先將A擴展到32位,高16位用0補齊,再按位進行位運算。P292.3運算符與表達式【例2.8】使用位運算符實例。#include<iostream>usingnamespacestd;intmain(){inta=1;intb,c;b=a>>2;cout<<"a>>2="<<b<<endl;b=a<<2;cout<<"a<<2="<<b<<endl;b=3;c=b&a;cout<<b<<"&"<<a<<"="<<c<<endl;c=b|a;cout<<b<<"|"<<a<<"="<<c<<endl;c=b^a;cout<<b<<"^"<<a<<"="<<c<<endl;return0;}運行結(jié)果為:a>>2=0a<<2=43&1=13|1=33^1=2P302.3運算符與表達式2.3.6條件運算符條件運算符的符號只有一個“?”,它是一個三目運算符,要求有三個操作表達式。一般形式為:
<表達式1>?<表達式2>:<表達式3>其中表達式1是一個關(guān)系表達式或邏輯表達式。條件運算符的執(zhí)行過程:先求解表達式1的值,若表達式1的值為真,則求解表達式2的值,且作為整個條件表達式的結(jié)果;若表達式1的值為假,則求解表達式3的值,且作為整個條件表達式的結(jié)果。P302.3運算符與表達式2.3.7運算符的優(yōu)先級優(yōu)先級順序指多種運算操作在一起時的運算的順序。優(yōu)先級高的先運算。在兩個相同的優(yōu)先級的運算符運算操作時,則采用左運算符優(yōu)先規(guī)則,即從左到右執(zhí)行。優(yōu)先級類別運算符結(jié)合性0[]()::.->從左至右1單目++--!~&*(間接引用操作符)
sizeofnewdelete–(負號)從右至左2算術(shù)*/%從左至右3+-4移位>><<從左至右5關(guān)系<><=>=從左至右6==!=7邏輯位&從左至右8^9|10邏輯&&從左至右11||12三目?:從右至左13賦值=+=-=*=/=%=&=|=^=<<=>>=從右至左14逗號,從左至右P312.4流程控制語句2.4.1.1C++語句概況程序是若干語句的集合,而語句是命令計算機進行操作的指令。程序包括數(shù)據(jù)描述部分與數(shù)據(jù)操作部分。數(shù)據(jù)描述就是定義數(shù)據(jù)結(jié)構(gòu)和類型,并給相關(guān)數(shù)據(jù)賦初值,而數(shù)據(jù)操作是對數(shù)據(jù)進行加工處理,它又可以分為計算、操作運算語句(如表達式語句),和描述操作運算的執(zhí)行順序(如循環(huán)控制語句)的流程控制語句。2.4.1C++語言語句P312.4.1C++語言語句機器語言指令是計算機直接可以執(zhí)行的指令,而高級語言編寫的語句經(jīng)過翻譯后,變成計算機可以直接執(zhí)行的機器語言指令。
C++語言中語句可大致分為以下五類:1.流程控制語句(1)if()
else(2)for()(3)while(4)do
while(5)continue(6)break(7)switch(8)goto(9)returnP322.4.1C++語言語句2.函數(shù)調(diào)用語句由函數(shù)調(diào)用加一個分號構(gòu)成;如:x=max(a,b);3.表達式語句由表達式構(gòu)成的一個語句。
a=3賦值表達式
a=3;
賦值語句
注意:表達式和表達式語句的區(qū)別。P322.4.1C++語言語句4.空語句由一個分號構(gòu)成。;5.復(fù)合語句用{}把一些語句括起來形成復(fù)合語句。即復(fù)合語句包括若干條語句。它實際上就是一個程序段。P322.4.1.2程序的三種結(jié)構(gòu)程序最終可以分為順序執(zhí)行、選擇分支和循環(huán)控制三種流程結(jié)構(gòu)。1.順序執(zhí)行流程結(jié)構(gòu)順序結(jié)構(gòu)是計算機程序執(zhí)行的最自然和基本的流程結(jié)構(gòu),默認方式下都是順序結(jié)構(gòu)。先執(zhí)行完A語句的操作,再執(zhí)行B語句的操作。ABABP322.4.1.2程序的三種結(jié)構(gòu)2.選擇分支流程結(jié)構(gòu)選擇分支結(jié)構(gòu)就是通過對給定的條件進行判斷,決定執(zhí)行兩個或多個分支程序段的那一條分支。pABTRUEFALSE條件成立?成立
不成立ab其中:條件P是由算術(shù)、關(guān)系和邏輯表達式所組成的一個復(fù)合表達式,其值是邏輯值真或假。P322.4.1.2程序的三種結(jié)構(gòu)3.循環(huán)控制流程結(jié)構(gòu)循環(huán)結(jié)構(gòu)通過對給定的條件進行判斷,決定是否多次執(zhí)行某個程序段(循環(huán)體)。循環(huán)結(jié)構(gòu)根據(jù)先判斷循環(huán)條件是否滿足,再執(zhí)行循環(huán)體;還是先執(zhí)行循環(huán)體,再判斷循環(huán)條件是否滿足,大致可分為當(dāng)型循環(huán)和直到型循環(huán)兩種類型P332.4.2if語句與條件選擇控制2.4.2.1if語句的基本形式
C++中if語句有二種基本的形式如下述:
if(條件表達式)語句如果條件表達式為真,則執(zhí)行后面的語句或程序段(復(fù)合語句),否則執(zhí)行下一條語句。
條件表達式
語句TFP332.4.2if語句與條件選擇控制注意:
(1)條件表達式為算術(shù)、關(guān)系和邏輯表達式所組成的復(fù)合表達式,其值為邏輯值‘真’或‘假’。(2)語句可以為復(fù)合語句,即為一段程序。此時,“下一條語句”為復(fù)合語句后面的那條語句。如:if(x%2==0)cout<<x;P342.4.2if語句與條件選擇控制
if(條件表達式)語句1
else
語句2如果條件表達式為真,則執(zhí)行語句1,否則執(zhí)行語句2。
P342.4.2if語句與條件選擇控制【例2.9】實現(xiàn)打印變量x、y中較大者。#include<iostream>usingnamespacestd;intmain(){intx=35,y=10;if(x>y)cout<<x;elsecout<<y;return0;}小提示:為了增加程序的可讀性,編寫程序時建議采用鋸齒型的書寫形式P342.4.2if語句與條件選擇控制2.4.2.2if語句的嵌套
if語句中滿足(或不滿足)條件時,所執(zhí)行的語句又是一個if語句,此時,稱為if語句的嵌套。若后面又再跟一個或多個if語句,則為if語句的多層嵌套。If語句的嵌套常見的有如下幾種情況:1、if(條件表達式1)語句1
elseif(條件表達式2)語句2
elseif(條件表達式3)語句3:
else語句nP342.4.2if語句與條件選擇控制說明:(1)此種情況相當(dāng)于else后面跟的又是一個if語句,是if語句的多層嵌套。(2)該方式實現(xiàn)了程序的多條分支流程結(jié)構(gòu)。(3)else總是和距它最近的if配對。P352.4.2if語句與條件選擇控制【例2.10】汽車運輸中根據(jù)距離的遠近,給予一定的折扣比例優(yōu)惠。當(dāng)距離大于4000千米時,折扣比例為0.75,距離小于等于4000千米而大于3000千米時,折扣比例為0.8,距離小于等于3000千米而大于2000千米時,折扣比例為0.85,距離小于等于2000千米而大于1000千米時,折扣比例為0.9,其他折扣為0.95,每千米的運費為p。P352.4.2if語句與條件選擇控制2、if(條件表達式1)
if(條件表達式2)語句1//內(nèi)嵌if
else語句2else
if(條件表達式3)語句3//內(nèi)嵌if
else語句4說明:(1)該程序流程是:滿足條件表達式1和條件表達式2,則執(zhí)行語句1;滿足條件表達式1并且不滿足條件表達式2時,執(zhí)行語句2;不滿足條件表達式1和滿足條件表達式3,則執(zhí)行語句3;不滿足條件表達式1且不滿足條件表達式3時,執(zhí)行語句2。(2)此種情況下相當(dāng)與if-else語句結(jié)構(gòu)中的語句1是一個if-else語句,語句2又是一個if-else語句,是一種if嵌套。(3)在存在多個if-else語句結(jié)構(gòu)的情況下,if-else配套的原則是:else總是與其最近的if配套。P362.4.2if語句與條件選擇控制3、if(條件表達式1)
if(條件表達式2)語句1
else語句2說明:(1)該程序流程是:滿足條件表達式1和條件表達式2,則執(zhí)行語句1;滿足條件表達式1,但不滿足條件表達式2時,執(zhí)行語句2。(2)此情況下相當(dāng)于if語句結(jié)構(gòu)中的語句是一個if-else語句,else與其最近的if(第2個if)配套。P362.4.2if語句與條件選擇控制【例2.11】計算階躍函數(shù)y的值#include<iostream>usingnamespacestd;intmain(){intx,y;cin>>x;if(x>0)y=1;elseif(x==0)y=0;elsey=-1;cout<<"x="<<x<<",y="<<y<<endl;return0;}P362.4.2if語句與條件選擇控制【例2.12】從鍵盤輸入3個數(shù)a,b,c,要求按由小到大的順序輸出。P372.4.2if語句與條件選擇控制【例2.13】判斷一年是否是閏年的程序。閏年year的條件是滿足下列條件之一:(1)能被4整除,但不能被100整除;(2)能被4整除,又能被400整除。綜合運用算術(shù)、關(guān)系和邏輯表達式,可寫成判斷閏年的條件表達式如下:(year%4==0&&year%100!=0)||(year%4==0&&year%400==0)若上述表達式為真,則year為閏年,否則不是閏年。
還可以寫出判斷非閏年的表達式:(year%4!=0)||(year%100==0&&year%400!=0)若上述表達式為真,則year為非閏年,否則是閏年。P372.4.3條件表達式表達式1?表達式2:表達式3執(zhí)行過程:先求表達式1的值,若為真,則求表達式2的值,并把它作為整個條件表達式的值;否則,求表達式3的值,并將它作為整個條件表達式的值。
例如:x=a<b?a:b;P382.4.4switch語句與多項選擇語句的基本格式如下:switch(表達式){case常量表達式1:語句1;break;case常量表達式2:語句2;break;..case常量表達式n:語句n;break;default:語句n+1}語句的執(zhí)行過程:
根據(jù)計算出來的表達式的值與各常量表達式進行比較,如果與case后的某個常量表達式的值匹配,則執(zhí)行相應(yīng)的語句I;若都不匹配,則執(zhí)行default后面的語句。P382.4.4switch語句與多項選擇說明:(1)switch語句中的表達式只能是整型、字符型和枚舉類型表達式,后面的常量表達式類型也必須與其匹配;(2)break語句的作用中斷并退出switch語句,執(zhí)行switch的下一條語句。從而保證某case情況下,執(zhí)行一路分支程序。如果則會繼續(xù)執(zhí)行下一個case后面的一路分支程序。利用該特點,當(dāng)有幾種情況,需執(zhí)行同一段程序時,可以省略break語句。(3)case的順序可以任意。P382.4.4switch語句與多項選擇【例2.14】從鍵盤輸入數(shù)字1-7,對應(yīng)輸出星期幾的英文單詞。P392.4.5while語句“當(dāng)型循環(huán)”結(jié)構(gòu)一般形式:while(條件表達式)
語句執(zhí)行流程:
(1)先計算條件表達式的值,(2)當(dāng)表達式為真(非0)值時,
執(zhí)行while語句的內(nèi)嵌語句;再返回(1)。(3)否則,表達式為假(0值)時,
退出該循環(huán),繼續(xù)執(zhí)行while循環(huán)后的下一條語句。P402.4.5while語句說明:(1)條件表達式是由算術(shù)、關(guān)系和邏輯表達式組成,其值為‘真’(1)或‘假’(0);(2)內(nèi)嵌的語句可以是復(fù)合語句(通常情況下),此時循環(huán)體中有一個以上的語句,可用花括號括起來;(3)循環(huán)體中應(yīng)該有退出循環(huán)的語句,否則,會進入無限循環(huán)或死循環(huán)。P402.4.5while語句【例2.15】求簡單幾何級數(shù)P402.4.6do-while語句
do-while語句是另外一種編寫循環(huán)程序的語句,屬于“直到型循環(huán)”結(jié)構(gòu)。
do
語句while(條件表達式);
執(zhí)行流程:
(1)先執(zhí)行語句;
(2)計算條件表達式,
當(dāng)表達式的值為真(非0)時,返回(1)繼續(xù)執(zhí)行該語句;(3)否則,表達式為假(0值)時,退出該循環(huán),執(zhí)行do-while循環(huán)后的下一條語句。P412.4.6do-while語句說明:(1)條件表達式是由算術(shù)、關(guān)系和邏輯表達式組成,其值為‘真’(1)或‘假’(0)。(2)內(nèi)嵌的語句可以是復(fù)合語句(通常情況下),此時循環(huán)體中有一個以上的語句,可用花括號括起來;(3)循環(huán)體中應(yīng)該有退出循環(huán)的語句,否則,會進入無限循環(huán)或死循環(huán)。P412.4.6do-while語句【例2.16】用do-while求例2.15P412.4.7for語句for語句是C++中功能最強、使用最靈活的循環(huán)語句。其一般形式為:
for(表達式1;表達式2;表達式3)
語句執(zhí)行過程:
(1)首先,求解表達式1。(2)求解表達式2,若其值為真,執(zhí)行內(nèi)嵌語句,然后執(zhí)行(3);否則結(jié)束循環(huán),轉(zhuǎn)到(4)。(3)求解表達式3,轉(zhuǎn)回(2)。(4)執(zhí)行下一條語句。P412.4.7for語句【例2.17】用for語句求例2.15P422.4.7for語句說明:(1)表達式1通常作為循環(huán)前給循環(huán)變量賦初值。如循環(huán)變量已經(jīng)賦初值,則可以省略,但是省略時,表達式1后面的分號不能省略。(2)表達式2通常作為循環(huán)結(jié)束條件判斷的條件表達式。如想省略,則循環(huán)體內(nèi)必須有跳出循環(huán)的的控制語句,否則,會陷入無限(或死)循環(huán)。(3)表達式3通常用于讓循環(huán)變量遞進變化,以達到循環(huán)結(jié)束條件。如省略,則循環(huán)體中應(yīng)該有改變循環(huán)變量的語句,以保證循環(huán)結(jié)束。P422.4.8break語句和continue語句break語句break語句有兩個作用:(1)直接中斷當(dāng)前正在執(zhí)行的語句。(2)跳出它所在的塊,主要用于循環(huán)語句中,強迫退出循環(huán),使循環(huán)終止?!纠?.18】從鍵盤上輸入若干個正整數(shù),直到輸入負整數(shù)為止,計算并輸出顯示已輸入的正整數(shù)之和。輸入的數(shù)不超過20個。P422.4.8break語句和continue語句continue語句用來結(jié)束本次循環(huán)或跳轉(zhuǎn)到外層循環(huán)中。注意:
continue與break語句的區(qū)別是:continue只結(jié)束本次循環(huán),再進行下一次循環(huán)結(jié)束條件判斷,而不是終止整個循環(huán)的執(zhí)行;而break則是終止整個循環(huán),不再進行條件判斷。比較下列循環(huán)程序:(1)
(2)while(表達式1)
while(表達式1){
{
:
:
if(表達式2)break;if(表達式2)continue;
:
:}
}P432.4.8break語句和continue語句P432.4.8break語句和continue語句【例2.19】輸出100-200之間不能被3整除的數(shù)。P442.4.9循環(huán)嵌套一個循環(huán)體內(nèi)又包含一個完整的循環(huán),稱為循環(huán)的嵌套。實際問題可能非常復(fù)雜,編寫程序時,經(jīng)常用到循環(huán)嵌套的情況。使用循環(huán)嵌套時,內(nèi)外層次要清晰、不能交叉,內(nèi)外層的循環(huán)變量不能同名?!纠?.20】輸出乘法99表。P442.4.10return語句return語句的作用使程序從方法中返回到調(diào)用者。return語句的格式:return[<變量、常量或表達式>]P452.4.11程序設(shè)計綜合舉例【例2.21】求1–500之間的素數(shù)P452.4.11程序設(shè)計綜合舉例【例2.22】求Fibon
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑龍江工業(yè)學(xué)院《生物醫(yī)學(xué)信息與統(tǒng)計學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 陽光學(xué)院《流體傳動與控制基礎(chǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 武漢海事職業(yè)學(xué)院《單片機原理與應(yīng)用綜合設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 大興安嶺職業(yè)學(xué)院《企業(yè)電子產(chǎn)品設(shè)計與制造》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川汽車職業(yè)技術(shù)學(xué)院《科學(xué)社會主義概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 雙頭應(yīng)急燈項目效益評估報告
- 沈陽音樂學(xué)院《內(nèi)科護理學(xué)(2)》2023-2024學(xué)年第二學(xué)期期末試卷
- 鄭州商貿(mào)旅游職業(yè)學(xué)院《社會治理》2023-2024學(xué)年第二學(xué)期期末試卷
- 伊犁師范大學(xué)《中職英語微格教學(xué)技能訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 人教版初中歷史與社會七年級上冊 3.5 干旱的寶地-塔里木盆地 教學(xué)設(shè)計
- 醫(yī)院骨科專病數(shù)據(jù)庫建設(shè)需求
- 三年級下冊混合計算100題及答案
- 中小學(xué)幼兒園安全風(fēng)險防控工作規(guī)范
- ESD技術(shù)要求和測試方法
- 正確認識民族與宗教的關(guān)系堅持教育與宗教相分離
- 宜黃縣二都鎮(zhèn)高山飾面用花崗巖開采以及深加工項目環(huán)評報告
- 血液科護士的惡性腫瘤護理
- 畜禽廢棄物資源化利用講稿課件
- 土地糾紛調(diào)解簡單協(xié)議書
- 服裝倉庫管理制度及流程
- 《餐飲渠道開發(fā)方案》課件
評論
0/150
提交評論