版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1第2講C++程序設(shè)計根底——C++語言概述——數(shù)據(jù)類型和表達(dá)式——C++語句——C++輸入輸出——typedef語句、枚舉類型2
C++語言概述
C++語言的兼容性:C++完全兼容C,很多用C編寫的庫函數(shù)和應(yīng)用程序都可以為C++所用C++不是純粹的面向?qū)ο蟮恼Z言,它既支持面向?qū)ο蟪绦蛟O(shè)計,也支持面向過程設(shè)計3#include
<iostream.h>intmax(int
i,
int
j){
//A
if(i>=j)
return
i;
else
returnj;}void
main(void){
//B
cout<<″輸入i,j:″;
//顯示提示信息
int
i,j;
//說明變量
cin>>i>>j;
//從鍵盤上輸入變量值
cout<<″max:″<<max(i,j)<<′\n′;
//輸出提示和結(jié)果}【例】
一個簡單的C++程序。注釋編譯預(yù)處理指令函數(shù)主函數(shù)426個小寫字母
abcdefghijklmnopqrstuvwxyz26個大寫字母
ABCDEFGHIJKLMNOPQRSTUVWXYZ10個阿拉伯?dāng)?shù)字
0123456789其他符號
+-*/=,._:;?\"'~|!#%&()[]{}^<>空格C++語言根本字符:C++的字符集5關(guān)鍵字又稱保存字。是由系統(tǒng)定義的具有特定含義的英文單詞。關(guān)鍵字不能另作他用C++區(qū)分大小寫,關(guān)鍵字全部由小寫字母組成。標(biāo)準(zhǔn)C++〔ISO14882〕定義了74個關(guān)鍵字,具體的C++編譯器會有所不同6數(shù)據(jù)類型說明符與修飾符boolcharwchar_tclassconstdouble
enumfloatintlongshortsignedstructunionunsignedvoid
volatile存儲類型說明符autoexterninlineregisterstatic訪問說明符friendprivateprotectedpublic其它說明符asmexplicitnamespaceoperatortemplatethistypedeftypenameusingvirtualclass語句與標(biāo)號breakcasecatchcontinuedefaultdoelseforgotoifreturnswitchthrowtry
while運(yùn)算符及邏輯值deletefalsenewsizeoftrueC++常用關(guān)鍵字及分類
7標(biāo)識符是程序員定義的“單詞”,用來給變量、常量、數(shù)據(jù)類型、函數(shù)等命名合法標(biāo)識符由字母或下劃線開始,由字母、數(shù)字、下劃線組成,其有效長度為1-31個字符,長度超過31個字符者只識別前31個字符,VC++標(biāo)識符長度為1-247個字符。8標(biāo)點符號標(biāo)點符號:#(){},:;
“”
’?等標(biāo)點符號的作用:有一定的語法意義。如字符和字符串常量分別用‘
’和“
”引起來對語法符號起分隔作用。如;等9C++中的數(shù)據(jù)類型單精度型float雙精度型doubleC++的數(shù)據(jù)類型基本數(shù)據(jù)類型非基本數(shù)據(jù)類型數(shù)組type[]指針type*結(jié)構(gòu)struct聯(lián)合union枚舉enum類class整型int字符型邏輯型bool無值型void實型單字符型char寬字符型wchar_t10類型名稱占用字節(jié)數(shù)取值范圍bool布爾型
1true,false(signed)char有符號字符型1-128
127unsigedchar無符號字符型10
255(signed)short(int)有符號短整型2-32768
32767unsignedshort(int)無符號短整型20
65535(signed)int
有符號整型4-231
(231-1)unsigned(int)無符號整型40
(232-1)(signed)long(int)有符號長整型4-231
(231-1)unsignedlong(int)無符號長整型40
(232-1)float實型4-1038
1038double雙精度型8-10308
10308longdouble長雙精度型8-10308
10308void無值型0無值VC++中根本數(shù)據(jù)類型11C++為強(qiáng)類型語言,所有數(shù)據(jù)的使用嚴(yán)格遵從“先說明后使用”的原那么,以便編譯器進(jìn)行編譯C++的數(shù)據(jù)類型:根本數(shù)據(jù)類型亦稱內(nèi)置數(shù)據(jù)類型。C++為它們提供了內(nèi)置的支持(數(shù)據(jù)表示、數(shù)據(jù)范圍、數(shù)據(jù)操作),以完成各種允許的運(yùn)算在C++的標(biāo)準(zhǔn)庫中支持根本類抽象的組合,如字符串類,復(fù)數(shù)類等標(biāo)準(zhǔn)庫類類型在內(nèi)置數(shù)據(jù)類型和標(biāo)準(zhǔn)庫類類型之間是復(fù)合類型〔Compoundtype〕,特別是指針和數(shù)組類型12
整型
整型:用來存放整數(shù),整數(shù)〔有符號的整數(shù)〕在內(nèi)存中存放的是它的補(bǔ)碼。整型數(shù)據(jù)占用的字節(jié)數(shù)與機(jī)型有關(guān),32位機(jī)上占用4個字節(jié),短整型數(shù)據(jù)占用2個字節(jié)十進(jìn)制整數(shù):非0數(shù)字開頭的整數(shù)八進(jìn)制整數(shù):以0開頭,其余位為〔0~7〕十六進(jìn)制整數(shù):以0X或0x開頭,其余位為 〔0~9、A~F或a~f〕整型算術(shù)運(yùn)算:+-*/%13
字符型
可見字符:用單引號引起來。如:
chara=‘5’;
不可見字符:又稱控制字符,用轉(zhuǎn)義字符表示
如:charch=’\A’; charch1=‘\101’+1 charch2=‘\x41’
字符型:用來保存字符,存儲的是該字符的ASCII碼,對于單字節(jié)字符來說,占用一個字節(jié)。字符型數(shù)據(jù)從本質(zhì)上說也是整數(shù)14
實型:用來存放實數(shù),實數(shù)在內(nèi)存中以標(biāo)準(zhǔn)化的浮點數(shù)存放,包括尾數(shù)、數(shù)符和階碼。數(shù)的精度取決于尾數(shù)的位數(shù),32位機(jī)上實型為23位〔因標(biāo)準(zhǔn)化數(shù)的數(shù)碼最高位恒為1,不必存儲,實際精度為24位〕,雙精度為52位
浮點型單精度實型:floatf1=23.1f,f2=8e-6;雙精度實型:doublef3=34.5;長雙精度實型:longdoublef4=1.9e+04L,f5=3.2;15邏輯型:也稱布爾型,其取值為true〔邏輯真〕和false〔邏輯假〕,存儲字節(jié)數(shù)在不同編譯系統(tǒng)中可能有所不同,VC++6.0中為1個字節(jié)。布爾型在運(yùn)算中可以和整型相互轉(zhuǎn)化,false對應(yīng)為0,true對應(yīng)為1或非0無值型:主要用來說明函數(shù)的返回值類型根本數(shù)據(jù)類型還可以加上一些修飾詞,包括:signed〔有符號〕、unsigned〔無符號〕、long〔長〕、short〔短〕其他根本類型16常量和變量
在程序中,常量和變量是用來表示數(shù)據(jù)的常量又分為文字常量、枚舉常量、常變量
變量在程序中是指可以改變值的量變量必須用標(biāo)識符進(jìn)行標(biāo)識,稱為變量名變量有類型之分,如整型變量、字符變量等任何變量都必須先說明后使用;一是便于編譯程序為變量分配空間,二是便于編譯時進(jìn)行語法檢查17變量說明[存儲類型]
數(shù)據(jù)類型
變量1[,變量2,
,變量n];
例:inti,j,k; //說明三個整型變量i,j,kfloatx,y,z; //說明三個單精度實型變量x,y,zstaticcharc1,c2;//說明兩個靜態(tài)字符型變量c1,c2doubledx;
//說明一個雙精度型變量dx18變量初始化賦初值:定義變量時即給變量一個值稱為變量初始化或給變量賦初值例: inta=3,b=4,c(5); floatx(3.0);charh=‘A’; 變量初始化可以防止引用到隨機(jī)變量19文字常量文字常量:指程序中直接給出的量常量的值在程序執(zhí)行過程中保持不變;并且存儲在程序區(qū),而非數(shù)據(jù)區(qū);根據(jù)取值和表示方法的不同,可分為整型常量:各進(jìn)制表示,末尾可加u,l,ul實型常量:一般形式或指數(shù)形式表示字符常量:一般字符和轉(zhuǎn)義字符表示字符串常量:雙引號表示,與字符常量有區(qū)別如:#define
PI
3.1420常變量用常量說明符const給文字常量起的名字〔標(biāo)識符〕,因為其說明和引用形式很像變量,所以也稱常變量例:constfloatPI=3.14159;constintNumber_of_Student=100;21常變量必須也只能在說明時進(jìn)行初始化;常變量初始化之后,不允許再被賦值;常變量必須先說明后使用;常變量存儲在數(shù)據(jù)區(qū),并且可以按地址訪問,編譯時系統(tǒng)對常變量進(jìn)行類型檢查。C++建議使用常變量,而不要使用文字常量constfloatPI;PI=3.14; //error22引用變量已經(jīng)定義的變量的“別名”
叫做引用變量類型&引用變量名=變量名;例:inta;int&r=a;23變量的存儲類型auto自動存儲,其存儲空間可被假設(shè)干變量屢次覆蓋使用register存放在通用存放器中,一般由程序自動選擇存儲extern在所有函數(shù)和程序段中都可引用static在內(nèi)存中是以固定地址存放的,在整個程序運(yùn)行期間都有效24
運(yùn)算符和表達(dá)式運(yùn)算符:在C++中對常量或變量進(jìn)行運(yùn)算或處理
的符號操作數(shù):參與運(yùn)算的對象優(yōu)先級:指不同運(yùn)算符在運(yùn)算中的優(yōu)先關(guān)系,
可以用序號表示,序號越小,優(yōu)先級越高結(jié)合性:決定優(yōu)先級相等的運(yùn)算符組合在一起時
的運(yùn)算次序,同一優(yōu)先級的運(yùn)算符有相
同的結(jié)合性表達(dá)式:由運(yùn)算符、操作數(shù)及標(biāo)點符號組成的,
能取得一個值的式子25C++中的運(yùn)算符及其優(yōu)先級和結(jié)合性優(yōu)先級運(yùn)算符功能說明結(jié)合性()
改變優(yōu)先級
::
作用域運(yùn)算符
[] 數(shù)組下標(biāo).->
成員選擇符
.*->*
成員指針選擇符*
間接訪問&
取地址newdelete
動態(tài)內(nèi)存分配12從左至右從右至左
sizeof
求所占內(nèi)存字節(jié)數(shù)!
邏輯求反
~ 按位求反
++--
增1、減1運(yùn)算符+-
取正、取負(fù)〔〕 強(qiáng)制類型326
*/%
乘法、除法、求余+-
加法、減法34567從左到右從左到右從左到右從左到右從左到右從左到右8910<<>>
左移位、右移位<<=小于、小于等于、
>>=
大于、大于等于==!=
等于、不等于&
按位與^
按位異或|
按位或從左到右從左到右||
邏輯或
?:
條件運(yùn)算符12131415從左到右從右到左從左到右=+=-=*=/=%=&=^=|=<<=>>=
賦值運(yùn)算符 ,
逗號運(yùn)算符11&&
邏輯與從左到右從右到左優(yōu)先級運(yùn)算符功能說明結(jié)合性27sizeof()
運(yùn)算符用于計算一個操作數(shù)類型或一個變量的字節(jié)數(shù)一般格式為:sizeof(數(shù)據(jù)類型)
或
sizeof(變量名)例如:sizeof(int)//值為4
sizeof(float)//值為4
doublex[10];
sizeof(x)/sizeof(double);//值為10
28一、算術(shù)表達(dá)式1、表達(dá)式中每個變量都有確定的值時才能進(jìn)行表達(dá)式求值;2、C++中算術(shù)運(yùn)算應(yīng)注意數(shù)據(jù)溢出問題,即運(yùn)算結(jié)果超出對應(yīng)數(shù)據(jù)類型的表示范圍。編譯程序只會對除法運(yùn)算時除數(shù)為0這種情況提示出錯,因此,程序設(shè)計者必須在程序中解決檢查并處理整數(shù)溢出問題由算術(shù)運(yùn)算符連接的表達(dá)式+(取正號)
–(取負(fù)號)*/%+-
表達(dá)式29二、賦值表達(dá)式=1、賦值其意義是將賦值號右邊的值送到左邊變量所對應(yīng)的單元中。賦值號不是等號,它具有方向性常量只能取用,不能賦值
constintPI=3.14159;inta=9*2/3,b;b=a*(a+9)/PI;302、左值與右值C++將變量名代表的單元稱為“左值”,而將變量的值稱為“右值”。左值必須是內(nèi)存中一個可以訪問且可以合法修改的對象,因此只能是變量名,而不能是常量或表達(dá)式例如,3.1415926=pi; //左值不能是常數(shù)x+y=z; //左值不能是表達(dá)式constintN=30;N=40; //左值不能是常變量313、賦值表達(dá)式和復(fù)合賦值表達(dá)式由賦值運(yùn)算符或復(fù)合賦值運(yùn)算符連接的表達(dá)式賦值表達(dá)式格式為:
變量=表達(dá)式例如:x=5+6;a=b=c=d+1;
復(fù)合賦值表達(dá)式格式為:
變量復(fù)合賦值運(yùn)算符表達(dá)式
它等同于
變量=變量運(yùn)算符表達(dá)式
例如:x+=5
等同于:x=x+532三、邏輯表達(dá)式及其求值優(yōu)化
邏輯運(yùn)算用于判斷分析,運(yùn)算符包括關(guān)系〔==>=<=><!=〕和邏輯〔!&&||〕運(yùn)算符關(guān)系運(yùn)算符完成兩個操作數(shù)大小的比較,結(jié)果為邏輯值true(真)或false〔假〕。每種可比較大小的數(shù)據(jù)類型,都重載了關(guān)系運(yùn)算符。不同類型,自動轉(zhuǎn)換為同一類型后進(jìn)行比較在C++中真對應(yīng)1,假對應(yīng)0;反過來,0對應(yīng)假,非0值對應(yīng)真33C++語言中的邏輯運(yùn)算符a?。?不等于?。絘==3等于==a<=3小于或等于<=a<3小于<a>=3大于或等于>=a>3大于>優(yōu)先級例子名稱邏輯運(yùn)算符自左至右(x>2)‖(x<9)邏輯或(OR)‖(x>2)&&(x<9)邏輯與(AND)&&自右至左!(x>9)邏輯非(NOT)!結(jié)合性367111234例如:a+b>c+d//等同于(a+b)>(c+d),結(jié)果為0或1y=a>b //計算a>b的值0或1賦給y,y的值為0或1a>b>c //等同于(a>b)>c,先求a>b的值,//再將結(jié)果0或1與c比較大小設(shè)有定義floata=3.2;intb=5;那么:3>a>b //結(jié)果是?a5b3.23>F
即0>F即035例,21&&0 //邏輯與,21與0,結(jié)果為假:021||0 //邏輯或,21或0,結(jié)果為真:1!21 //邏輯非,21的非,結(jié)果為假:0邏輯表達(dá)式計算時,邏輯非優(yōu)先級最高,關(guān)系運(yùn)算其次,邏輯與和邏輯或最低36:inta=10,b=20,c=30;floatx=1.8,y=2.4;a<b&&x>y||a<b-!c按優(yōu)先級與結(jié)合性,其求值順序等同于:(a<b)&&(x>y)||(a<(b-(!c)))t1=1t2=0t4=0-&&t3=0t5=b<t6=1||
得整個表達(dá)式的值為:①②③⑥④⑤⑦137
邏輯表達(dá)式求值的優(yōu)化:在求邏輯表達(dá)式值的過程中,一旦表達(dá)式的值能夠確定,就不再逐步進(jìn)行下面的運(yùn)算。稱為“求值優(yōu)化”:inta=10,b=20,c=30;求:a<b||c++ //結(jié)果以及a,b,c的值t1=1①整個表達(dá)式的值為1可見:表達(dá)式c++已不需要計算所以: c不變?nèi)詾?038條件運(yùn)算符:由問號“?”和冒號“:”組成它是C語言中唯一的一個三目運(yùn)算符條件表達(dá)式:
表達(dá)式1?表達(dá)式2:表達(dá)式3;例,y=(x>5)?2:3.0;四、條件運(yùn)算符和條件表達(dá)式
真(非0)假(0)表達(dá)式1
取表達(dá)式2的值作為條件表達(dá)式的值
取表達(dá)式3的值作為條件表達(dá)式的值39四、位運(yùn)算c++語言提供字位運(yùn)算,它對操作數(shù)的各個位進(jìn)行操作位運(yùn)算符含義結(jié)合性優(yōu)先級~按位取反(單目)右結(jié)合2&按位與(雙目)左結(jié)合8^按位異或(雙目)9|按位或(雙目)10>>右移位(雙目)5<<左移位(雙目)40例
設(shè)intx=31,y=-5,分別求~x,x&y,x^y,x|y,
x<<3,x>>3的值。
(31)2=0000000000011111(-5)2=1111111111111011~0=1 ~1=01、按位取反:~x~00000000000111111111111111100000~x=-320&0=0 0&1=0 1&0=0 1&1=12、按位與:x&y0000000000011111&11111111111110110000000000011011x&y=27410^0=0 0^1=1 1^0=1 1^1=03、按位異或:x^y0000000000011111^11111111111110111111111111100100x^y=-284、按位或x|y0|0=0 0|1=1 1|0=1 1|1=10000000000011111|11111111111110111111111111111111x|y=-14200000000000111110000000011111000x<<3=2485、左移x<<3二進(jìn)制位同時右移指定位數(shù),從右邊移出的低位舍棄,空出的高位的處理:對于正數(shù)或無符號數(shù)補(bǔ)0;對于負(fù)數(shù)補(bǔ)100000000000111110000000000000011x>>3=36、右移x>>343位復(fù)合賦值運(yùn)算符位復(fù)合賦值運(yùn)算符含義例&=按位與賦值x&=y等價于x=x&y^=按位異或賦值x^=y等價于x=x^y|=按位或賦值x|=y等價于x=x|y>>=右移位賦值x>>=y等價于x=x>>y<<=左移位賦值x<<=y等價于x=x<<y44五、逗號表達(dá)式用逗號連接起來的表達(dá)式稱為逗號表達(dá)式,〔C++中,逗號既是分隔符,又是運(yùn)算符〕格式為:表達(dá)式1,表達(dá)式2,…,表達(dá)式n逗號表達(dá)式中的每一個表達(dá)式都會被運(yùn)算,整個逗號表達(dá)式的值為最后一個表達(dá)式的值例如:a=(x=3,x+=6,5+6);//a=11x=9,45六、自增自減運(yùn)算前置和后置運(yùn)算:前置是先增減后引用,即先對變量自加或自減,用新的值參與其他運(yùn)算;后置那么是先引用后增減,即用變量原來的值參與其他運(yùn)算,然后再對變量進(jìn)行自加或自減例如:inti=5,j=5,m,n;m=i++;//后置;相當(dāng)于m=i;i=i+1;n=++j;//前置;相當(dāng)于j=j+1;n=j;(X)m=i+++++j;n=i+++++j;n=i+++++j;意義:使變量當(dāng)前值加1或減1,再賦給該變量要求:操作數(shù)只能是變量,不能是常量或表達(dá)式++ --46
算術(shù)運(yùn)算問題1、整數(shù)的溢出2、浮點數(shù)的比較inta=100000,b=100000,intc=1000;cout<<a*b/c<<“\n”<<a*(b/c)<<endl;進(jìn)行程序設(shè)計是應(yīng)該充分考慮到每種數(shù)據(jù)類型的范圍局限性doublea1=123456789.9*9;doublea2=1111111109.1;cout<<(a1==a2?”same\n”:”notsame\n”);cout<<(abs(d1-d2)<1e-05?”same\n”:”notsame\n”);141006510000000notsamesame47
算術(shù)類型轉(zhuǎn)換和賦值類型轉(zhuǎn)換1、混合運(yùn)算的類型轉(zhuǎn)換規(guī)那么2、賦值類型轉(zhuǎn)換運(yùn)算過程中,當(dāng)某個二元運(yùn)算符兩邊的操作數(shù)類型不同但屬于類型相容時,系統(tǒng)先將精度低的操作數(shù)變換到與另一操作數(shù)精度相同,而后再進(jìn)行運(yùn)算C++系統(tǒng)可以進(jìn)行自動類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換當(dāng)賦值號的左值和右值類型不一致但屬于類型相容時,由系統(tǒng)自動進(jìn)行類型轉(zhuǎn)換3、強(qiáng)制類型轉(zhuǎn)換481、混合運(yùn)算的類型轉(zhuǎn)換規(guī)那么charshortintlongunsignedcharunsignedshortunsignedintunsignedlongfloatdoublelongdouble數(shù)據(jù)類型轉(zhuǎn)換方向49〔1〕字符可以作為整數(shù)參與數(shù)值運(yùn)算,整數(shù)值為其ASCII碼〔2〕操作數(shù)為字符或短整型時,系統(tǒng)自動變換成整型〔3〕操作數(shù)為實型時,系統(tǒng)自動變換成雙精度型〔4〕其余情況,當(dāng)兩操作數(shù)類型不同時,將精度低〔或表示范圍小〕的操作數(shù)的數(shù)據(jù)類型變換到與另一操作數(shù)類型相同再進(jìn)行運(yùn)算例:charc1=‘A’,c2=‘a(chǎn)’;inti1=0,i2=1;floatx1=2.1,x2=2.5;x2=c1*i1+c1*x1+c1*c2502.賦值類型轉(zhuǎn)換1、實型數(shù)賦給整型變量:取整;注意溢出2、整型數(shù)賦給實型變量:先轉(zhuǎn)換為實型數(shù)3、字符型數(shù)賦給整型變量:ASCII碼為依據(jù);分為兩種情況:符號位是0或1時不同:假設(shè)符號位為1,那么低位字節(jié)不變,高位字節(jié)全部置1再賦值4、絕對值較大的數(shù)賦給表達(dá)范圍較小的數(shù)據(jù)類型時,注意溢出515、賦值運(yùn)算中,當(dāng)左值與右值類型不一致時,系統(tǒng)將按照左值的類型,自動進(jìn)行強(qiáng)制轉(zhuǎn)換例如:
設(shè)有以下定義
doublex=2.3,y;inti=2,j;(1)j2.3x2.3……22(1)j=x; (2)y=i;由系統(tǒng)按左值j、y類型自動完成強(qiáng)制轉(zhuǎn)換功能(2)y2i2……2.02.0523、強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換運(yùn)算符格式為:
(type)表達(dá)式
或
type(表達(dá)式)作用:將表達(dá)式強(qiáng)制轉(zhuǎn)換為type類型, 但表達(dá)式的值及其類型不變例:
inta=7,b=5;floatx;x=a/b //值為1
x=float(a)/(float)b //值為1.4x=float(a)/b //值為1.453說明:〔1〕強(qiáng)制類型轉(zhuǎn)換不改變表達(dá)式本身的值類型,而是產(chǎn)生一個臨時變量,用來暫存轉(zhuǎn)換后的值,該臨時變量引用后即自動釋放〔2〕強(qiáng)制類型轉(zhuǎn)換符優(yōu)先級較高,只對緊隨其后的表達(dá)式起作用,而對其他局部不起作用例 (int)x*y+9.854語句1說明語句:定義語句和聲明語句;2表達(dá)式語句:表達(dá)式;2空語句:;3復(fù)合語句:{//假設(shè)干語句}過程控制語句:過程控制語句用來控制或改變程序的執(zhí)行方向;5輸入輸出語句:I/O流
定義語句
聲明變量/常變量/對象/函數(shù)的名稱
給該名稱分配內(nèi)存空間例,intx(6),m=4;
說明語句
聲明語句
只起聲明作用,不分配內(nèi)存空間例,externintx;過程控制語句算法描述的三種根本結(jié)構(gòu)(1)
順序結(jié)構(gòu)(2)分支結(jié)構(gòu)(3)循環(huán)結(jié)構(gòu)if if~else
switch條件運(yùn)算符(?:)for do~while while流程圖符號起止框過程聯(lián)系庫存數(shù)據(jù)決策磁盤數(shù)據(jù)顯示流程線注釋58(1)
順序結(jié)構(gòu)塊1塊2塊3流程圖num1
15;【例】
求兩數(shù)之和。num2
20;sum
num1+num2;輸出sum;59(2)分支結(jié)構(gòu)流程圖條件塊1塊2真假輸出maxmax
zmax
ymax
x【例】
輸入三個數(shù),輸出其中的最大數(shù)。x
7;y
12;z
10;x>y?z>max
?真假真假if if~else switch條件運(yùn)算符(?:)60if(表達(dá)式)
語句1;if(表達(dá)式)
語句1;
else
語句2;if(表達(dá)式1)語句1;
elseif(表達(dá)式2)語句2;
elseif
…
else語句n;61賦值表達(dá)式也可作為條件表達(dá)式
if(a=9){…}不等式連寫的錯誤
if(a<b<c){…}邏輯短路
if(b+2&&a/b>2)cout<<“ok\n”;邏輯推演設(shè)計條件表達(dá)式時須注意的問題:62//方法2:采用if中嵌套形式int
main(){
inta,b,c,max; cout<<“輸入三個整數(shù):"; cin>>a>>b>>c;
cout<<"a="<<a<<“\tb="<<b<<“\tc="<<c<<endl;
if(a>b)if(a>c)max=a;//a>b且a>c
elsemax=c;//a>b且a<c
else
if(b>c)max=b;//a<=b且b>c
elsemax=c;//a<=b且b<c cout<<"最大數(shù)max="<<max;
return0;}【例】63//方法3:采用if-else嵌套形式int
main(){
inta,b,c,max; cout<<"輸入三個正數(shù):"; cin>>a>>b>>c;
cout<<"a="<<a<<“\tb="<<b<<“\tc="<<c<<endl;
if(a>b&&a>c)max=a;
else
if(b>a&&b>c)max=b; elsemax=c; cout<<"最大數(shù)為:max="<<max;
return0;
}【例】64switch(表達(dá)式){
case
常量表達(dá)式1:[語句序列1;][break;]……
case
常量表達(dá)式n:[語句序列n;][break;][default:語句序列;]}65【例】
一個運(yùn)輸公司對用戶收取運(yùn)費的規(guī)定如下所示,用s表示里程數(shù)km,d表示優(yōu)惠率。設(shè)每公里的根本運(yùn)費為p元/公里,貨物重為w噸,那么總運(yùn)費的計算公式為:f=p×w×s×(1-d)。編寫計算運(yùn)費的程序。s<250 0250≤s<500 2%500≤s<1000 5%1000≤s<2000 8%2000≤s<3000 10%3000≤s 15%66輸出f250≤s<500
s<250
d=0d=2%
2000≤s<3000d=5%
d=8%
假假假真真真500≤s<1000
1000≤s<2000
d=10%
d=15%
假假真真輸入sf=p×w×s×(1-d)選擇結(jié)構(gòu)須考慮:1.判斷條件2.實現(xiàn)分支結(jié)構(gòu)語句的構(gòu)成及選擇67main() {intc,s; floatp,w,d,f;cout<<"inputtheprice,weightandkilometersofthedistance:\n";
cin>>p>>w>>s; if(s>=3000)c=12;elsec=s/250; switch(c)
/*判斷c的值*/ {case0:d=0;break; /*c的值為0時*/ case1:d=2;break; /*c的值為1時*/ case2:case3:
d=5;break; /*c的值為2、3時*/ case4:case
5:case6: case7:d=8;break; /*c的值為4、5、6、7時*/ case8:
case
9:
case
10: case11:
d=10;break;/*c的值為8、9、10、11、12時*/ case12:d=15;break; }
f=p*w*s*(1-d/100.0);
cout<<“freight=%15.4f\n“<<f; }
68【例】
設(shè)計一個計算器程序,實現(xiàn)加、減、乘、除運(yùn)算。分析:讀入兩個操作數(shù)和運(yùn)算符,根據(jù)運(yùn)算符完成相應(yīng)運(yùn)算。#include
<iostream>usingnamespace
std;int
main(){float
num1,num2;char
op;cout<<"輸入操作數(shù)1,運(yùn)算符,操作數(shù)2:"<<endl;cin>>num1>>op>>num2;switch(op){case'+':cout<<num1<<op<<num2<<"="<<num1+num2<<endl;break;case
'-':cout<<num1<<op<<num2<<"="<<num1-num2<<endl;break;case
'*':cout<<num1<<op<<num2<<"="<<num1*num2<<endl;break;case
'/':cout<<num1<<op<<num2<<"="<<num1/num2<<endl;break;default
:cout<<op<<"是無效運(yùn)算符!";}return
0;}69(3)循環(huán)結(jié)構(gòu)流程圖條件塊真假for do~while while【例】求4個整數(shù)的和。
count
4sum
0sum
sum+xcount
count-1x
輸入一個整數(shù)輸出sumcount>0?真假70while
(表達(dá)式){
循環(huán)體語句;}do {
循環(huán)體語句;}while(表達(dá)式
);for(
表達(dá)式1;
表達(dá)式2;
表達(dá)式3)
{循環(huán)體語句;}嵌套循環(huán):當(dāng)循環(huán)語句中的循環(huán)體中又有循環(huán)語句時,就構(gòu)成了嵌套循環(huán)71for語句、while語句、do/while語句比較inti=1,sum=0;
//循環(huán)初始條件while(i<=4){sum+=i;i++;//修改循環(huán)條件
}inti=1,sum=0;//循環(huán)初始條件do{
sum+=i; i++;//修改循環(huán)條件
}while(i<=4);inti,sum=0;for(i=1;i<=4;i++){ sum+=i;}/*習(xí)慣上:表達(dá)式1:循環(huán)初始條件;表達(dá)式2:循環(huán)終止條件;表達(dá)式3:修改循環(huán)條件*/72【例】
求1+2+3+4+…+100的值。#include
<iostream>usingnamespace
std;constint
n=100;
//用常變量利于修改程序int
main(){
inti=1,sum=0;//循環(huán)初始條件
while(i<=n){
sum+=i;
i++;
//修改循環(huán)條件
}cout<<"sum="<<sum<<endl;
return
0;}73【例】打印如以下圖形。*******************************************************#include<iostream>#include<iomanip>usingnamespacestd;intmain(){int
i,j;for(i=1;i<=5;i++){//外層循環(huán)
for(j=1;j<i;j++)cout<<"";//輸出空格
for(j=1;j<=11;j++)cout<<"*";//輸出*
cout<<endl; //準(zhǔn)備輸出下一行
}return
0;}74
轉(zhuǎn)向語句〔1〕break語句:只能用在switch語句和循環(huán)語句中,用來跳出switch語句或提前終止循環(huán),轉(zhuǎn)去執(zhí)行switch語句或循環(huán)語句之后的語句例: for(;;){ … if(<表達(dá)式>)break; … }75〔2〕continue語句:只能用在循環(huán)語句中,用來終止本次循環(huán)。當(dāng)程序執(zhí)行到continue語句時,將跳過其后尚未執(zhí)行的循環(huán)體語句,開始下一次循環(huán)continue語句與break語句的區(qū)別在于,continue語句結(jié)束的只是本次循環(huán),而break結(jié)束的是當(dāng)層循環(huán)例:for(I=1;I<=100;I++){if(I%3!=0)continue;cout<<l<<endl;}76〔3〕goto語句:和標(biāo)號語句一起使用,所謂標(biāo)號語句是用標(biāo)識符標(biāo)識的語句,它控制程序從goto語句所在的地方轉(zhuǎn)移到標(biāo)號語句處。goto語句會導(dǎo)致程序結(jié)構(gòu)混亂,可讀性降低,一般不提倡使用goto語句。但在多層循環(huán)嵌套中,要從深層地方跳出所有循環(huán),如果用break語句,不僅要使用屢次,而且可讀性較差,這時goto語句可以發(fā)揮作用77〔4〕return語句:用于結(jié)束函數(shù)的執(zhí)行,返回調(diào)用者,如果是主函數(shù),那么返回至操作系統(tǒng)利用一個return語句可以將一個數(shù)據(jù)返回給調(diào)用者。通常,當(dāng)函數(shù)的返回類型為void時,return語句可以省略,如果使用也僅作為函數(shù)或程序結(jié)束的標(biāo)志78輸入流對象cin:cin用來在程序執(zhí)行期間給變量輸入數(shù)據(jù)cin>>變量名1[>>變量名2>>…>>變量名n];
輸出流對象cout:cout實現(xiàn)將數(shù)據(jù)輸出到顯示器的操作cout<<表達(dá)式1[<<表達(dá)式2<<…<<表達(dá)式n];
使用時必須在程序開頭包含頭文件:#include
<iostream.h>或者寫為
#include
<iostream>
usingnamespace
std;C++輸入輸出簡介79數(shù)據(jù)的輸入輸出cin與cin.get()的區(qū)別:〔1〕cin例: charc1,c2,c3; cin>>c1; //A cin>>c2>>c3; 輸入:Abc<CR>那么cin分別將字符A、b、c賦給變量c1、c2、c3cin自動跳過輸入的空白字符〔包括空格,制表,backspace和回車等〕1.字符的輸入輸出80〔2〕cin.get()例: charc1,c2,c3,c4; cin.get(c1); //B cin.get(c2); cin.get(c3);假設(shè)輸入:Ab<CR>那么執(zhí)行結(jié)果是:字符′A′、空格、字符′b′分別賦給變量c1、c2、c3;輸入行中仍保存回車符cin.get()把從鍵盤上輸入的所有字符,包括空白字符,都作為輸入字符賦給字符變量81
字符的輸出:使用cout假定字符c1、c2、c3的值分別為字符′a′、′b′和′c′,執(zhí)行以下語句:cout<<c1<<′\t′<<c2<<′\n′;cout<<c3<<endl;cout<<′O′<<′k′<<endl;屏幕上將輸出:a bcOk輸出時字符之間是無間隔的,如果想讓字符間有間隔,必須輸出間隔符822.字符串輸入輸出輸入:常用函數(shù)getline()cin.getline(char[],int)其中第一個參數(shù)是已經(jīng)定義的字符數(shù)組名,第二個參數(shù)是讀入字符的最多個數(shù)n〔包括字符串結(jié)束符‘\0’〕。getline()輸入以用戶按下回車鍵作為結(jié)束輸出:常用cout輸出字符串。雙引號中的字符串常量照原樣輸出,程序中通常通過輸出字符串常量來輸出一些提示信息。字符數(shù)組將輸出串結(jié)束符前所有字符83說明:函數(shù)getline()保證在執(zhí)行時總會為字符串的結(jié)束符保存一個字節(jié)。當(dāng)鍵盤的輸入字符〔字節(jié)〕數(shù)多于(n-1)時,后面的字符不會進(jìn)入字符數(shù)組,字符串結(jié)束符自動加在字符數(shù)組的最后一個字節(jié)中。當(dāng)輸入字符數(shù)少于該值時,字符串結(jié)束符自動加在輸入到字符數(shù)組中的最后一個字符的后面例:charcity[11];cin.getline(city,11);//輸入最多5個中文字cout<<“城市名:“<<city<<endl;84例inti,j;floatx,y;cout<<”Inputi,j,x,y:”<<endl;cin>>i>>j; cin>>x>>y; cout<<”i=”<<i<<′\t′<<”j=”<<j<<endl;cout<<”x+y=”<<x+y<<endl;假設(shè)輸入:10204.58.6<CR>那么程序輸出:i=10 j=20x+y=13.13.十進(jìn)制數(shù)據(jù)的輸入輸出85如果要求按八進(jìn)制或十六進(jìn)制輸入輸出,在cin或cout中必須指明相應(yīng)的數(shù)據(jù)形式,oct為八進(jìn)制,hex為十六進(jìn)制,dec為十進(jìn)制
輸入輸出的格式控制(1)各種進(jìn)制數(shù)據(jù)的輸入輸出86例inti,j,k,l;cout<<”Inputi(oct),j(hex),k(hex),l(dec):”<<endl;cin>>oct>>i; //輸入為八進(jìn)制數(shù)cin>>hex>>j; //輸入為十六進(jìn)制數(shù)cin>>k; //輸入仍為十六進(jìn)制數(shù)cin>>dec>>l; //輸入為十進(jìn)制數(shù)cout<<”hex:”<<”i=”<<hex<<i<<endl;cout<<”dec:”<<”j=”<<dec<<j<<′\t′;cout<<”k=”<<k<<endl;cout<<”oct:”<<”l=”<<oct<<l;cout<<dec<<endl; //恢復(fù)十進(jìn)制輸出狀態(tài)87執(zhí)行時輸出:Inputi(oct),j(hex),k(hex),l(dec):此時從鍵盤輸入:0320x3f0xa017<CR>那么輸出結(jié)果為:hex:i=1adec:j=63 k=160oct:l=21注意:在cin或cout中指明數(shù)制后,該數(shù)制將一直有效,直到重新指明用其他數(shù)制特別注意:輸入數(shù)據(jù)的格式、個數(shù)和類型必須與cin中的變量一一對應(yīng),否那么不僅使輸入數(shù)據(jù)錯誤,而且影響后面其他數(shù)據(jù)的正確輸入88為了使數(shù)據(jù)間隔開,可以用C++提供的函數(shù)setw()
指定輸出數(shù)據(jù)項的寬度。例inti=2,j=3;floatx=2.6,y=1.8;cout<<setw(6)<<i<<setw(10)<<j<<endl;cout<<setw(10)<<i*j<<endl;cout<<setw(8)<<x<<setw(8)<<y<<endl;輸出結(jié)果為:
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024幼兒園幼兒家長志愿服務(wù)合作協(xié)議3篇
- 課題申報書:現(xiàn)代職業(yè)教育賦能鄉(xiāng)村產(chǎn)業(yè)振興的長效機(jī)制與政策研究
- 課題申報書:西南邊疆民族地區(qū)農(nóng)民數(shù)字素養(yǎng)促進(jìn)農(nóng)業(yè)新質(zhì)生產(chǎn)力的作用機(jī)制與實現(xiàn)路徑研究
- 2025年度旅游租賃合同:活動板房式旅游營地租賃與運(yùn)營協(xié)議3篇
- 婚宴發(fā)言詞范文
- 2024版商業(yè)合作合同審閱報告版
- 二零二五年展覽館場地租賃保證金及展覽策劃合同3篇
- 2024片石采購合同之道路基礎(chǔ)設(shè)施建設(shè)合作協(xié)議3篇
- 培訓(xùn)結(jié)果分析與建議
- 2025年度特種作業(yè)安裝工程安全協(xié)議書3篇
- 《地震災(zāi)害及其防治》課件
- 2024年版電商平臺入駐商家服務(wù)與銷售分成合同
- 蜜雪冰城合同范例
- 小紅書種草營銷師(初級)認(rèn)證考試真題試題庫(含答案)
- LPG液化氣充裝站介質(zhì)分析操作規(guī)程 202412
- 養(yǎng)老院環(huán)境衛(wèi)生保潔方案
- 中學(xué)學(xué)校裝修改造工程施工組織設(shè)計方案
- 2024年WPS計算機(jī)二級考試題庫350題(含答案)
- 2024年5G網(wǎng)絡(luò)覆蓋工程分包合同
- 2025屆北京市海淀區(qū)交大附中高一物理第一學(xué)期期末復(fù)習(xí)檢測試題含解析
- 天津市武清區(qū)2024-2025學(xué)年九年級上學(xué)期11月期中物理試題(無答案)
評論
0/150
提交評論