




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1第2講C++程序設(shè)計(jì)根底——C++語(yǔ)言概述——數(shù)據(jù)類型和表達(dá)式——C++語(yǔ)句——C++輸入輸出——typedef語(yǔ)句、枚舉類型2
C++語(yǔ)言概述
C++語(yǔ)言的兼容性:C++完全兼容C,很多用C編寫(xiě)的庫(kù)函數(shù)和應(yīng)用程序都可以為C++所用C++不是純粹的面向?qū)ο蟮恼Z(yǔ)言,它既支持面向?qū)ο蟪绦蛟O(shè)計(jì),也支持面向過(guò)程設(shè)計(jì)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;
//說(shuō)明變量
cin>>i>>j;
//從鍵盤(pán)上輸入變量值
cout<<″max:″<<max(i,j)<<′\n′;
//輸出提示和結(jié)果}【例】
一個(gè)簡(jiǎn)單的C++程序。注釋編譯預(yù)處理指令函數(shù)主函數(shù)426個(gè)小寫(xiě)字母
abcdefghijklmnopqrstuvwxyz26個(gè)大寫(xiě)字母
ABCDEFGHIJKLMNOPQRSTUVWXYZ10個(gè)阿拉伯?dāng)?shù)字
0123456789其他符號(hào)
+-*/=,._:;?\"'~|!#%&()[]{}^<>空格C++語(yǔ)言根本字符:C++的字符集5關(guān)鍵字又稱保存字。是由系統(tǒng)定義的具有特定含義的英文單詞。關(guān)鍵字不能另作他用C++區(qū)分大小寫(xiě),關(guān)鍵字全部由小寫(xiě)字母組成。標(biāo)準(zhǔn)C++〔ISO14882〕定義了74個(gè)關(guān)鍵字,具體的C++編譯器會(huì)有所不同6數(shù)據(jù)類型說(shuō)明符與修飾符boolcharwchar_tclassconstdouble
enumfloatintlongshortsignedstructunionunsignedvoid
volatile存儲(chǔ)類型說(shuō)明符autoexterninlineregisterstatic訪問(wèn)說(shuō)明符friendprivateprotectedpublic其它說(shuō)明符asmexplicitnamespaceoperatortemplatethistypedeftypenameusingvirtualclass語(yǔ)句與標(biāo)號(hào)breakcasecatchcontinuedefaultdoelseforgotoifreturnswitchthrowtry
while運(yùn)算符及邏輯值deletefalsenewsizeoftrueC++常用關(guān)鍵字及分類
7標(biāo)識(shí)符是程序員定義的“單詞”,用來(lái)給變量、常量、數(shù)據(jù)類型、函數(shù)等命名合法標(biāo)識(shí)符由字母或下劃線開(kāi)始,由字母、數(shù)字、下劃線組成,其有效長(zhǎng)度為1-31個(gè)字符,長(zhǎng)度超過(guò)31個(gè)字符者只識(shí)別前31個(gè)字符,VC++標(biāo)識(shí)符長(zhǎng)度為1-247個(gè)字符。8標(biāo)點(diǎn)符號(hào)標(biāo)點(diǎn)符號(hào):#(){},:;
“”
’?等標(biāo)點(diǎn)符號(hào)的作用:有一定的語(yǔ)法意義。如字符和字符串常量分別用‘
’和“
”引起來(lái)對(duì)語(yǔ)法符號(hà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無(wú)值型void實(shí)型單字符型char寬字符型wchar_t10類型名稱占用字節(jié)數(shù)取值范圍bool布爾型
1true,false(signed)char有符號(hào)字符型1-128
127unsigedchar無(wú)符號(hào)字符型10
255(signed)short(int)有符號(hào)短整型2-32768
32767unsignedshort(int)無(wú)符號(hào)短整型20
65535(signed)int
有符號(hào)整型4-231
(231-1)unsigned(int)無(wú)符號(hào)整型40
(232-1)(signed)long(int)有符號(hào)長(zhǎng)整型4-231
(231-1)unsignedlong(int)無(wú)符號(hào)長(zhǎng)整型40
(232-1)float實(shí)型4-1038
1038double雙精度型8-10308
10308longdouble長(zhǎng)雙精度型8-10308
10308void無(wú)值型0無(wú)值VC++中根本數(shù)據(jù)類型11C++為強(qiáng)類型語(yǔ)言,所有數(shù)據(jù)的使用嚴(yán)格遵從“先說(shuō)明后使用”的原那么,以便編譯器進(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)庫(kù)中支持根本類抽象的組合,如字符串類,復(fù)數(shù)類等標(biāo)準(zhǔn)庫(kù)類類型在內(nèi)置數(shù)據(jù)類型和標(biāo)準(zhǔn)庫(kù)類類型之間是復(fù)合類型〔Compoundtype〕,特別是指針和數(shù)組類型12
整型
整型:用來(lái)存放整數(shù),整數(shù)〔有符號(hào)的整數(shù)〕在內(nèi)存中存放的是它的補(bǔ)碼。整型數(shù)據(jù)占用的字節(jié)數(shù)與機(jī)型有關(guān),32位機(jī)上占用4個(gè)字節(jié),短整型數(shù)據(jù)占用2個(gè)字節(jié)十進(jìn)制整數(shù):非0數(shù)字開(kāi)頭的整數(shù)八進(jìn)制整數(shù):以0開(kāi)頭,其余位為〔0~7〕十六進(jìn)制整數(shù):以0X或0x開(kāi)頭,其余位為 〔0~9、A~F或a~f〕整型算術(shù)運(yùn)算:+-*/%13
字符型
可見(jiàn)字符:用單引號(hào)引起來(lái)。如:
chara=‘5’;
不可見(jiàn)字符:又稱控制字符,用轉(zhuǎn)義字符表示
如:charch=’\A’; charch1=‘\101’+1 charch2=‘\x41’
字符型:用來(lái)保存字符,存儲(chǔ)的是該字符的ASCII碼,對(duì)于單字節(jié)字符來(lái)說(shuō),占用一個(gè)字節(jié)。字符型數(shù)據(jù)從本質(zhì)上說(shuō)也是整數(shù)14
實(shí)型:用來(lái)存放實(shí)數(shù),實(shí)數(shù)在內(nèi)存中以標(biāo)準(zhǔn)化的浮點(diǎn)數(shù)存放,包括尾數(shù)、數(shù)符和階碼。數(shù)的精度取決于尾數(shù)的位數(shù),32位機(jī)上實(shí)型為23位〔因標(biāo)準(zhǔn)化數(shù)的數(shù)碼最高位恒為1,不必存儲(chǔ),實(shí)際精度為24位〕,雙精度為52位
浮點(diǎn)型單精度實(shí)型:floatf1=23.1f,f2=8e-6;雙精度實(shí)型:doublef3=34.5;長(zhǎng)雙精度實(shí)型:longdoublef4=1.9e+04L,f5=3.2;15邏輯型:也稱布爾型,其取值為true〔邏輯真〕和false〔邏輯假〕,存儲(chǔ)字節(jié)數(shù)在不同編譯系統(tǒng)中可能有所不同,VC++6.0中為1個(gè)字節(jié)。布爾型在運(yùn)算中可以和整型相互轉(zhuǎn)化,false對(duì)應(yīng)為0,true對(duì)應(yīng)為1或非0無(wú)值型:主要用來(lái)說(shuō)明函數(shù)的返回值類型根本數(shù)據(jù)類型還可以加上一些修飾詞,包括:signed〔有符號(hào)〕、unsigned〔無(wú)符號(hào)〕、long〔長(zhǎng)〕、short〔短〕其他根本類型16常量和變量
在程序中,常量和變量是用來(lái)表示數(shù)據(jù)的常量又分為文字常量、枚舉常量、常變量
變量在程序中是指可以改變值的量變量必須用標(biāo)識(shí)符進(jìn)行標(biāo)識(shí),稱為變量名變量有類型之分,如整型變量、字符變量等任何變量都必須先說(shuō)明后使用;一是便于編譯程序?yàn)樽兞糠峙淇臻g,二是便于編譯時(shí)進(jìn)行語(yǔ)法檢查17變量說(shuō)明[存儲(chǔ)類型]
數(shù)據(jù)類型
變量1[,變量2,
,變量n];
例:inti,j,k; //說(shuō)明三個(gè)整型變量i,j,kfloatx,y,z; //說(shuō)明三個(gè)單精度實(shí)型變量x,y,zstaticcharc1,c2;//說(shuō)明兩個(gè)靜態(tài)字符型變量c1,c2doubledx;
//說(shuō)明一個(gè)雙精度型變量dx18變量初始化賦初值:定義變量時(shí)即給變量一個(gè)值稱為變量初始化或給變量賦初值例: inta=3,b=4,c(5); floatx(3.0);charh=‘A’; 變量初始化可以防止引用到隨機(jī)變量19文字常量文字常量:指程序中直接給出的量常量的值在程序執(zhí)行過(guò)程中保持不變;并且存儲(chǔ)在程序區(qū),而非數(shù)據(jù)區(qū);根據(jù)取值和表示方法的不同,可分為整型常量:各進(jìn)制表示,末尾可加u,l,ul實(shí)型常量:一般形式或指數(shù)形式表示字符常量:一般字符和轉(zhuǎn)義字符表示字符串常量:雙引號(hào)表示,與字符常量有區(qū)別如:#define
PI
3.1420常變量用常量說(shuō)明符const給文字常量起的名字〔標(biāo)識(shí)符〕,因?yàn)槠湔f(shuō)明和引用形式很像變量,所以也稱常變量例:constfloatPI=3.14159;constintNumber_of_Student=100;21常變量必須也只能在說(shuō)明時(shí)進(jìn)行初始化;常變量初始化之后,不允許再被賦值;常變量必須先說(shuō)明后使用;常變量存儲(chǔ)在數(shù)據(jù)區(qū),并且可以按地址訪問(wèn),編譯時(shí)系統(tǒng)對(duì)常變量進(jìn)行類型檢查。C++建議使用常變量,而不要使用文字常量constfloatPI;PI=3.14; //error22引用變量已經(jīng)定義的變量的“別名”
叫做引用變量類型&引用變量名=變量名;例:inta;int&r=a;23變量的存儲(chǔ)類型auto自動(dòng)存儲(chǔ),其存儲(chǔ)空間可被假設(shè)干變量屢次覆蓋使用register存放在通用存放器中,一般由程序自動(dòng)選擇存儲(chǔ)extern在所有函數(shù)和程序段中都可引用static在內(nèi)存中是以固定地址存放的,在整個(gè)程序運(yùn)行期間都有效24
運(yùn)算符和表達(dá)式運(yùn)算符:在C++中對(duì)常量或變量進(jìn)行運(yùn)算或處理
的符號(hào)操作數(shù):參與運(yùn)算的對(duì)象優(yōu)先級(jí):指不同運(yùn)算符在運(yùn)算中的優(yōu)先關(guān)系,
可以用序號(hào)表示,序號(hào)越小,優(yōu)先級(jí)越高結(jié)合性:決定優(yōu)先級(jí)相等的運(yùn)算符組合在一起時(shí)
的運(yùn)算次序,同一優(yōu)先級(jí)的運(yùn)算符有相
同的結(jié)合性表達(dá)式:由運(yùn)算符、操作數(shù)及標(biāo)點(diǎn)符號(hào)組成的,
能取得一個(gè)值的式子25C++中的運(yùn)算符及其優(yōu)先級(jí)和結(jié)合性優(yōu)先級(jí)運(yùn)算符功能說(shuō)明結(jié)合性()
改變優(yōu)先級(jí)
::
作用域運(yùn)算符
[] 數(shù)組下標(biāo).->
成員選擇符
.*->*
成員指針選擇符*
間接訪問(wèn)&
取地址newdelete
動(dòng)態(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)算符 ,
逗號(hào)運(yùn)算符11&&
邏輯與從左到右從右到左優(yōu)先級(jí)運(yùn)算符功能說(shuō)明結(jié)合性27sizeof()
運(yùn)算符用于計(jì)算一個(gè)操作數(shù)類型或一個(gè)變量的字節(jié)數(shù)一般格式為:sizeof(數(shù)據(jù)類型)
或
sizeof(變量名)例如:sizeof(int)//值為4
sizeof(float)//值為4
doublex[10];
sizeof(x)/sizeof(double);//值為10
28一、算術(shù)表達(dá)式1、表達(dá)式中每個(gè)變量都有確定的值時(shí)才能進(jìn)行表達(dá)式求值;2、C++中算術(shù)運(yùn)算應(yīng)注意數(shù)據(jù)溢出問(wèn)題,即運(yùn)算結(jié)果超出對(duì)應(yīng)數(shù)據(jù)類型的表示范圍。編譯程序只會(huì)對(duì)除法運(yùn)算時(shí)除數(shù)為0這種情況提示出錯(cuò),因此,程序設(shè)計(jì)者必須在程序中解決檢查并處理整數(shù)溢出問(wèn)題由算術(shù)運(yùn)算符連接的表達(dá)式+(取正號(hào))
–(取負(fù)號(hào))*/%+-
表達(dá)式29二、賦值表達(dá)式=1、賦值其意義是將賦值號(hào)右邊的值送到左邊變量所對(duì)應(yīng)的單元中。賦值號(hào)不是等號(hào),它具有方向性常量只能取用,不能賦值
constintPI=3.14159;inta=9*2/3,b;b=a*(a+9)/PI;302、左值與右值C++將變量名代表的單元稱為“左值”,而將變量的值稱為“右值”。左值必須是內(nèi)存中一個(gè)可以訪問(wèn)且可以合法修改的對(duì)象,因此只能是變量名,而不能是常量或表達(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)算符完成兩個(gè)操作數(shù)大小的比較,結(jié)果為邏輯值true(真)或false〔假〕。每種可比較大小的數(shù)據(jù)類型,都重載了關(guān)系運(yùn)算符。不同類型,自動(dòng)轉(zhuǎn)換為同一類型后進(jìn)行比較在C++中真對(duì)應(yīng)1,假對(duì)應(yīng)0;反過(guò)來(lái),0對(duì)應(yīng)假,非0值對(duì)應(yīng)真33C++語(yǔ)言中的邏輯運(yùn)算符a!=3不等于?。絘==3等于==a<=3小于或等于<=a<3小于<a>=3大于或等于>=a>3大于>優(yōu)先級(jí)例子名稱邏輯運(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 //計(jì)算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á)式計(jì)算時(shí),邏輯非優(yōu)先級(jí)最高,關(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)先級(jí)與結(jié)合性,其求值順序等同于:(a<b)&&(x>y)||(a<(b-(!c)))t1=1t2=0t4=0-&&t3=0t5=b<t6=1||
得整個(gè)表達(dá)式的值為:①②③⑥④⑤⑦137
邏輯表達(dá)式求值的優(yōu)化:在求邏輯表達(dá)式值的過(guò)程中,一旦表達(dá)式的值能夠確定,就不再逐步進(jìn)行下面的運(yùn)算。稱為“求值優(yōu)化”:inta=10,b=20,c=30;求:a<b||c++ //結(jié)果以及a,b,c的值t1=1①整個(gè)表達(dá)式的值為1可見(jiàn):表達(dá)式c++已不需要計(jì)算所以: c不變?nèi)詾?038條件運(yùn)算符:由問(wèn)號(hào)“?”和冒號(hào)“:”組成它是C語(yǔ)言中唯一的一個(gè)三目運(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ǔ)言提供字位運(yùn)算,它對(duì)操作數(shù)的各個(gè)位進(jìn)行操作位運(yùn)算符含義結(jié)合性優(yōu)先級(jí)~按位取反(單目)右結(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ù),從右邊移出的低位舍棄,空出的高位的處理:對(duì)于正數(shù)或無(wú)符號(hào)數(shù)補(bǔ)0;對(duì)于負(fù)數(shù)補(bǔ)100000000000111110000000000000011x>>3=36、右移x>>343位復(fù)合賦值運(yùn)算符位復(fù)合賦值運(yùn)算符含義例&=按位與賦值x&=y等價(jià)于x=x&y^=按位異或賦值x^=y等價(jià)于x=x^y|=按位或賦值x|=y等價(jià)于x=x|y>>=右移位賦值x>>=y等價(jià)于x=x>>y<<=左移位賦值x<<=y等價(jià)于x=x<<y44五、逗號(hào)表達(dá)式用逗號(hào)連接起來(lái)的表達(dá)式稱為逗號(hào)表達(dá)式,〔C++中,逗號(hào)既是分隔符,又是運(yùn)算符〕格式為:表達(dá)式1,表達(dá)式2,…,表達(dá)式n逗號(hào)表達(dá)式中的每一個(gè)表達(dá)式都會(huì)被運(yùn)算,整個(gè)逗號(hào)表達(dá)式的值為最后一個(gè)表達(dá)式的值例如:a=(x=3,x+=6,5+6);//a=11x=9,45六、自增自減運(yùn)算前置和后置運(yùn)算:前置是先增減后引用,即先對(duì)變量自加或自減,用新的值參與其他運(yùn)算;后置那么是先引用后增減,即用變量原來(lái)的值參與其他運(yùn)算,然后再對(duì)變量進(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)算問(wèn)題1、整數(shù)的溢出2、浮點(diǎn)數(shù)的比較inta=100000,b=100000,intc=1000;cout<<a*b/c<<“\n”<<a*(b/c)<<endl;進(jìn)行程序設(shè)計(jì)是應(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)算過(guò)程中,當(dāng)某個(gè)二元運(yùn)算符兩邊的操作數(shù)類型不同但屬于類型相容時(shí),系統(tǒng)先將精度低的操作數(shù)變換到與另一操作數(shù)精度相同,而后再進(jìn)行運(yùn)算C++系統(tǒng)可以進(jìn)行自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換當(dāng)賦值號(hào)的左值和右值類型不一致但屬于類型相容時(shí),由系統(tǒng)自動(dò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ù)為字符或短整型時(shí),系統(tǒng)自動(dòng)變換成整型〔3〕操作數(shù)為實(shí)型時(shí),系統(tǒng)自動(dòng)變換成雙精度型〔4〕其余情況,當(dāng)兩操作數(shù)類型不同時(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í)型數(shù)賦給整型變量:取整;注意溢出2、整型數(shù)賦給實(shí)型變量:先轉(zhuǎn)換為實(shí)型數(shù)3、字符型數(shù)賦給整型變量:ASCII碼為依據(jù);分為兩種情況:符號(hào)位是0或1時(shí)不同:假設(shè)符號(hào)位為1,那么低位字節(jié)不變,高位字節(jié)全部置1再賦值4、絕對(duì)值較大的數(shù)賦給表達(dá)范圍較小的數(shù)據(jù)類型時(shí),注意溢出515、賦值運(yùn)算中,當(dāng)左值與右值類型不一致時(shí),系統(tǒng)將按照左值的類型,自動(dò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類型自動(dòng)完成強(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說(shuō)明:〔1〕強(qiáng)制類型轉(zhuǎn)換不改變表達(dá)式本身的值類型,而是產(chǎn)生一個(gè)臨時(shí)變量,用來(lái)暫存轉(zhuǎn)換后的值,該臨時(shí)變量引用后即自動(dòng)釋放〔2〕強(qiáng)制類型轉(zhuǎn)換符優(yōu)先級(jí)較高,只對(duì)緊隨其后的表達(dá)式起作用,而對(duì)其他局部不起作用例 (int)x*y+9.854語(yǔ)句1說(shuō)明語(yǔ)句:定義語(yǔ)句和聲明語(yǔ)句;2表達(dá)式語(yǔ)句:表達(dá)式;2空語(yǔ)句:;3復(fù)合語(yǔ)句:{//假設(shè)干語(yǔ)句}過(guò)程控制語(yǔ)句:過(guò)程控制語(yǔ)句用來(lái)控制或改變程序的執(zhí)行方向;5輸入輸出語(yǔ)句:I/O流
定義語(yǔ)句
聲明變量/常變量/對(duì)象/函數(shù)的名稱
給該名稱分配內(nèi)存空間例,intx(6),m=4;
說(shuō)明語(yǔ)句
聲明語(yǔ)句
只起聲明作用,不分配內(nèi)存空間例,externintx;過(guò)程控制語(yǔ)句算法描述的三種根本結(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流程圖符號(hào)起止框過(guò)程聯(lián)系庫(kù)存數(shù)據(jù)決策磁盤(pán)數(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【例】
輸入三個(gè)數(shù),輸出其中的最大數(shù)。x
7;y
12;z
10;x>y?z>max
?真假真假if if~else switch條件運(yùn)算符(?:)60if(表達(dá)式)
語(yǔ)句1;if(表達(dá)式)
語(yǔ)句1;
else
語(yǔ)句2;if(表達(dá)式1)語(yǔ)句1;
elseif(表達(dá)式2)語(yǔ)句2;
elseif
…
else語(yǔ)句n;61賦值表達(dá)式也可作為條件表達(dá)式
if(a=9){…}不等式連寫(xiě)的錯(cuò)誤
if(a<b<c){…}邏輯短路
if(b+2&&a/b>2)cout<<“ok\n”;邏輯推演設(shè)計(jì)條件表達(dá)式時(shí)須注意的問(wèn)題:62//方法2:采用if中嵌套形式int
main(){
inta,b,c,max; cout<<“輸入三個(gè)整數(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<<"輸入三個(gè)正數(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:[語(yǔ)句序列1;][break;]……
case
常量表達(dá)式n:[語(yǔ)句序列n;][break;][default:語(yǔ)句序列;]}65【例】
一個(gè)運(yùn)輸公司對(duì)用戶收取運(yùn)費(fèi)的規(guī)定如下所示,用s表示里程數(shù)km,d表示優(yōu)惠率。設(shè)每公里的根本運(yùn)費(fèi)為p元/公里,貨物重為w噸,那么總運(yùn)費(fèi)的計(jì)算公式為:f=p×w×s×(1-d)。編寫(xiě)計(jì)算運(yùn)費(fèi)的程序。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.實(shí)現(xiàn)分支結(jié)構(gòu)語(yǔ)句的構(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時(shí)*/ case1:d=2;break; /*c的值為1時(shí)*/ case2:case3:
d=5;break; /*c的值為2、3時(shí)*/ case4:case
5:case6: case7:d=8;break; /*c的值為4、5、6、7時(shí)*/ case8:
case
9:
case
10: case11:
d=10;break;/*c的值為8、9、10、11、12時(shí)*/ case12:d=15;break; }
f=p*w*s*(1-d/100.0);
cout<<“freight=%15.4f\n“<<f; }
68【例】
設(shè)計(jì)一個(gè)計(jì)算器程序,實(shí)現(xiàn)加、減、乘、除運(yùn)算。分析:讀入兩個(gè)操作數(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<<"是無(wú)效運(yùn)算符!";}return
0;}69(3)循環(huán)結(jié)構(gòu)流程圖條件塊真假for do~while while【例】求4個(gè)整數(shù)的和。
count
4sum
0sum
sum+xcount
count-1x
輸入一個(gè)整數(shù)輸出sumcount>0?真假70while
(表達(dá)式){
循環(huán)體語(yǔ)句;}do {
循環(huán)體語(yǔ)句;}while(表達(dá)式
);for(
表達(dá)式1;
表達(dá)式2;
表達(dá)式3)
{循環(huán)體語(yǔ)句;}嵌套循環(huán):當(dāng)循環(huán)語(yǔ)句中的循環(huán)體中又有循環(huán)語(yǔ)句時(shí),就構(gòu)成了嵌套循環(huán)71for語(yǔ)句、while語(yǔ)句、do/while語(yǔ)句比較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)向語(yǔ)句〔1〕break語(yǔ)句:只能用在switch語(yǔ)句和循環(huán)語(yǔ)句中,用來(lái)跳出switch語(yǔ)句或提前終止循環(huán),轉(zhuǎn)去執(zhí)行switch語(yǔ)句或循環(huán)語(yǔ)句之后的語(yǔ)句例: for(;;){ … if(<表達(dá)式>)break; … }75〔2〕continue語(yǔ)句:只能用在循環(huán)語(yǔ)句中,用來(lái)終止本次循環(huán)。當(dāng)程序執(zhí)行到continue語(yǔ)句時(shí),將跳過(guò)其后尚未執(zhí)行的循環(huán)體語(yǔ)句,開(kāi)始下一次循環(huán)continue語(yǔ)句與break語(yǔ)句的區(qū)別在于,continue語(yǔ)句結(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語(yǔ)句:和標(biāo)號(hào)語(yǔ)句一起使用,所謂標(biāo)號(hào)語(yǔ)句是用標(biāo)識(shí)符標(biāo)識(shí)的語(yǔ)句,它控制程序從goto語(yǔ)句所在的地方轉(zhuǎn)移到標(biāo)號(hào)語(yǔ)句處。goto語(yǔ)句會(huì)導(dǎo)致程序結(jié)構(gòu)混亂,可讀性降低,一般不提倡使用goto語(yǔ)句。但在多層循環(huán)嵌套中,要從深層地方跳出所有循環(huán),如果用break語(yǔ)句,不僅要使用屢次,而且可讀性較差,這時(shí)goto語(yǔ)句可以發(fā)揮作用77〔4〕return語(yǔ)句:用于結(jié)束函數(shù)的執(zhí)行,返回調(diào)用者,如果是主函數(shù),那么返回至操作系統(tǒng)利用一個(gè)return語(yǔ)句可以將一個(gè)數(shù)據(jù)返回給調(diào)用者。通常,當(dāng)函數(shù)的返回類型為void時(shí),return語(yǔ)句可以省略,如果使用也僅作為函數(shù)或程序結(jié)束的標(biāo)志78輸入流對(duì)象cin:cin用來(lái)在程序執(zhí)行期間給變量輸入數(shù)據(jù)cin>>變量名1[>>變量名2>>…>>變量名n];
輸出流對(duì)象cout:cout實(shí)現(xiàn)將數(shù)據(jù)輸出到顯示器的操作cout<<表達(dá)式1[<<表達(dá)式2<<…<<表達(dá)式n];
使用時(shí)必須在程序開(kāi)頭包含頭文件:#include
<iostream.h>或者寫(xiě)為
#include
<iostream>
usingnamespace
std;C++輸入輸出簡(jiǎn)介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自動(dòng)跳過(guò)輸入的空白字符〔包括空格,制表,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()把從鍵盤(pán)上輸入的所有字符,包括空白字符,都作為輸入字符賦給字符變量81
字符的輸出:使用cout假定字符c1、c2、c3的值分別為字符′a′、′b′和′c′,執(zhí)行以下語(yǔ)句:cout<<c1<<′\t′<<c2<<′\n′;cout<<c3<<endl;cout<<′O′<<′k′<<endl;屏幕上將輸出:a bcOk輸出時(shí)字符之間是無(wú)間隔的,如果想讓字符間有間隔,必須輸出間隔符822.字符串輸入輸出輸入:常用函數(shù)getline()cin.getline(char[],int)其中第一個(gè)參數(shù)是已經(jīng)定義的字符數(shù)組名,第二個(gè)參數(shù)是讀入字符的最多個(gè)數(shù)n〔包括字符串結(jié)束符‘\0’〕。getline()輸入以用戶按下回車鍵作為結(jié)束輸出:常用cout輸出字符串。雙引號(hào)中的字符串常量照原樣輸出,程序中通常通過(guò)輸出字符串常量來(lái)輸出一些提示信息。字符數(shù)組將輸出串結(jié)束符前所有字符83說(shuō)明:函數(shù)getline()保證在執(zhí)行時(shí)總會(huì)為字符串的結(jié)束符保存一個(gè)字節(jié)。當(dāng)鍵盤(pán)的輸入字符〔字節(jié)〕數(shù)多于(n-1)時(shí),后面的字符不會(huì)進(jìn)入字符數(shù)組,字符串結(jié)束符自動(dòng)加在字符數(shù)組的最后一個(gè)字節(jié)中。當(dāng)輸入字符數(shù)少于該值時(shí),字符串結(jié)束符自動(dòng)加在輸入到字符數(shù)組中的最后一個(gè)字符的后面例:charcity[11];cin.getline(city,11);//輸入最多5個(gè)中文字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í)行時(shí)輸出:Inputi(oct),j(hex),k(hex),l(dec):此時(shí)從鍵盤(pán)輸入:0320x3f0xa017<CR>那么輸出結(jié)果為:hex:i=1adec:j=63 k=160oct:l=21注意:在cin或cout中指明數(shù)制后,該數(shù)制將一直有效,直到重新指明用其他數(shù)制特別注意:輸入數(shù)據(jù)的格式、個(gè)數(shù)和類型必須與cin中的變量一一對(duì)應(yīng),否那么不僅使輸入數(shù)據(jù)錯(cuò)誤,而且影響后面其他數(shù)據(jù)的正確輸入88為了使數(shù)據(jù)間隔開(kāi),可以用C++提供的函數(shù)setw()
指定輸出數(shù)據(jù)項(xiàng)的寬度。例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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 主播廣告合同范本
- 公司安裝監(jiān)控合同范本
- 儲(chǔ)槽翻新合同范本
- 勞動(dòng)合同范本 快遞
- 專車接送乘客合同范本
- 出租簡(jiǎn)易吊籃合同范本
- 鑿井勘查合同范例
- 勞務(wù)損傷賠償合同范本
- 化工生產(chǎn)合同范本
- 2024年中國(guó)動(dòng)漫博物館(杭州)招聘考試真題
- 《小腸梗阻的診斷與治療中國(guó)專家共識(shí)(2023版)》解讀
- 2024屆廣東省廣州市高三一??荚囉⒄Z(yǔ)試題講評(píng)課件
- 切削加工中的刀具路徑規(guī)劃算法考核試卷
- 《推拿學(xué)》期末考試復(fù)習(xí)題庫(kù)(含答案)
- 2024年經(jīng)濟(jì)師考試工商管理(中級(jí))專業(yè)知識(shí)和實(shí)務(wù)試卷及解答參考
- 10kV配電室工程施工方案設(shè)計(jì)
- 心電圖危急值的識(shí)別和處理知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋浙江大學(xué)
- 拇外翻課件完整版本
- 2025年中國(guó)洗衣凝珠行業(yè)市場(chǎng)現(xiàn)狀及投資態(tài)勢(shì)分析報(bào)告(智研咨詢)
- 2025年四川省新高考八省適應(yīng)性聯(lián)考模擬演練二歷史試卷(含答案)
- DB41T 2466-2023 浸水電梯使用管理規(guī)范
評(píng)論
0/150
提交評(píng)論