C++程序設(shè)計(jì)基礎(chǔ)_第1頁
C++程序設(shè)計(jì)基礎(chǔ)_第2頁
C++程序設(shè)計(jì)基礎(chǔ)_第3頁
C++程序設(shè)計(jì)基礎(chǔ)_第4頁
C++程序設(shè)計(jì)基礎(chǔ)_第5頁
已閱讀5頁,還剩92頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1第2講C++程序設(shè)計(jì)根底——C++語言概述——數(shù)據(jù)類型和表達(dá)式——C++語句——C++輸入輸出——typedef語句、枚舉類型2

C++語言概述

C++語言的兼容性:C++完全兼容C,很多用C編寫的庫函數(shù)和應(yīng)用程序都可以為C++所用C++不是純粹的面向?qū)ο蟮恼Z言,它既支持面向?qū)ο蟪绦蛟O(shè)計(jì),也支持面向過程設(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;

//說明變量

cin>>i>>j;

//從鍵盤上輸入變量值

cout<<″max:″<<max(i,j)<<′\n′;

//輸出提示和結(jié)果}【例】

一個(gè)簡(jiǎn)單的C++程序。注釋編譯預(yù)處理指令函數(shù)主函數(shù)426個(gè)小寫字母

abcdefghijklmnopqrstuvwxyz26個(gè)大寫字母

ABCDEFGHIJKLMNOPQRSTUVWXYZ10個(gè)阿拉伯?dāng)?shù)字

0123456789其他符號(hào)

+-*/=,._:;?\"'~|!#%&()[]{}^<>空格C++語言根本字符:C++的字符集5關(guān)鍵字又稱保存字。是由系統(tǒng)定義的具有特定含義的英文單詞。關(guān)鍵字不能另作他用C++區(qū)分大小寫,關(guān)鍵字全部由小寫字母組成。標(biāo)準(zhǔn)C++〔ISO14882〕定義了74個(gè)關(guān)鍵字,具體的C++編譯器會(huì)有所不同6數(shù)據(jù)類型說明符與修飾符boolcharwchar_tclassconstdouble

enumfloatintlongshortsignedstructunionunsignedvoid

volatile存儲(chǔ)類型說明符autoexterninlineregisterstatic訪問說明符friendprivateprotectedpublic其它說明符asmexplicitnamespaceoperatortemplatethistypedeftypenameusingvirtualclass語句與標(biāo)號(hào)breakcasecatchcontinuedefaultdoelseforgotoifreturnswitchthrowtry

while運(yùn)算符及邏輯值deletefalsenewsizeoftrueC++常用關(guān)鍵字及分類

7標(biāo)識(shí)符是程序員定義的“單詞”,用來給變量、常量、數(shù)據(jù)類型、函數(shù)等命名合法標(biāo)識(shí)符由字母或下劃線開始,由字母、數(shù)字、下劃線組成,其有效長度為1-31個(gè)字符,長度超過31個(gè)字符者只識(shí)別前31個(gè)字符,VC++標(biāo)識(shí)符長度為1-247個(gè)字符。8標(biāo)點(diǎn)符號(hào)標(biāo)點(diǎn)符號(hào):#(){},:;

“”

’?等標(biāo)點(diǎn)符號(hào)的作用:有一定的語法意義。如字符和字符串常量分別用‘

’和“

”引起來對(duì)語法符號(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無值型void實(shí)型單字符型char寬字符型wchar_t10類型名稱占用字節(jié)數(shù)取值范圍bool布爾型

1true,false(signed)char有符號(hào)字符型1-128

127unsigedchar無符號(hào)字符型10

255(signed)short(int)有符號(hào)短整型2-32768

32767unsignedshort(int)無符號(hào)短整型20

65535(signed)int

有符號(hào)整型4-231

(231-1)unsigned(int)無符號(hào)整型40

(232-1)(signed)long(int)有符號(hào)長整型4-231

(231-1)unsignedlong(int)無符號(hào)長整型40

(232-1)float實(shí)型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ù)〔有符號(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ù)字開頭的整數(shù)八進(jìn)制整數(shù):以0開頭,其余位為〔0~7〕十六進(jìn)制整數(shù):以0X或0x開頭,其余位為 〔0~9、A~F或a~f〕整型算術(shù)運(yùn)算:+-*/%13

字符型

可見字符:用單引號(hào)引起來。如:

chara=‘5’;

不可見字符:又稱控制字符,用轉(zhuǎn)義字符表示

如:charch=’\A’; charch1=‘\101’+1 charch2=‘\x41’

字符型:用來保存字符,存儲(chǔ)的是該字符的ASCII碼,對(duì)于單字節(jié)字符來說,占用一個(gè)字節(jié)。字符型數(shù)據(jù)從本質(zhì)上說也是整數(shù)14

實(shí)型:用來存放實(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;長雙精度實(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無值型:主要用來說明函數(shù)的返回值類型根本數(shù)據(jù)類型還可以加上一些修飾詞,包括:signed〔有符號(hào)〕、unsigned〔無符號(hào)〕、long〔長〕、short〔短〕其他根本類型16常量和變量

在程序中,常量和變量是用來表示數(shù)據(jù)的常量又分為文字常量、枚舉常量、常變量

變量在程序中是指可以改變值的量變量必須用標(biāo)識(shí)符進(jìn)行標(biāo)識(shí),稱為變量名變量有類型之分,如整型變量、字符變量等任何變量都必須先說明后使用;一是便于編譯程序?yàn)樽兞糠峙淇臻g,二是便于編譯時(shí)進(jìn)行語法檢查17變量說明[存儲(chǔ)類型]

數(shù)據(jù)類型

變量1[,變量2,

,變量n];

例:inti,j,k; //說明三個(gè)整型變量i,j,kfloatx,y,z; //說明三個(gè)單精度實(shí)型變量x,y,zstaticcharc1,c2;//說明兩個(gè)靜態(tài)字符型變量c1,c2doubledx;

//說明一個(gè)雙精度型變量dx18變量初始化賦初值:定義變量時(shí)即給變量一個(gè)值稱為變量初始化或給變量賦初值例: inta=3,b=4,c(5); floatx(3.0);charh=‘A’; 變量初始化可以防止引用到隨機(jī)變量19文字常量文字常量:指程序中直接給出的量常量的值在程序執(zhí)行過程中保持不變;并且存儲(chǔ)在程序區(qū),而非數(shù)據(jù)區(qū);根據(jù)取值和表示方法的不同,可分為整型常量:各進(jìn)制表示,末尾可加u,l,ul實(shí)型常量:一般形式或指數(shù)形式表示字符常量:一般字符和轉(zhuǎn)義字符表示字符串常量:雙引號(hào)表示,與字符常量有區(qū)別如:#define

PI

3.1420常變量用常量說明符const給文字常量起的名字〔標(biāo)識(shí)符〕,因?yàn)槠湔f明和引用形式很像變量,所以也稱常變量例:constfloatPI=3.14159;constintNumber_of_Student=100;21常變量必須也只能在說明時(shí)進(jìn)行初始化;常變量初始化之后,不允許再被賦值;常變量必須先說明后使用;常變量存儲(chǔ)在數(shù)據(jù)區(qū),并且可以按地址訪問,編譯時(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)算符功能說明結(jié)合性()

改變優(yōu)先級(jí)

::

作用域運(yùn)算符

[] 數(shù)組下標(biāo).->

成員選擇符

.*->*

成員指針選擇符*

間接訪問&

取地址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)算符功能說明結(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ù)溢出問題,即運(yùn)算結(jié)果超出對(duì)應(yīng)數(shù)據(jù)類型的表示范圍。編譯程序只會(huì)對(duì)除法運(yùn)算時(shí)除數(shù)為0這種情況提示出錯(cuò),因此,程序設(shè)計(jì)者必須在程序中解決檢查并處理整數(shù)溢出問題由算術(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è)可以訪問且可以合法修改的對(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;反過來,0對(duì)應(yīng)假,非0值對(duì)應(yīng)真33C++語言中的邏輯運(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á)式值的過程中,一旦表達(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可見:表達(dá)式c++已不需要計(jì)算所以: c不變?nèi)詾?038條件運(yùn)算符:由問號(hào)“?”和冒號(hào)“:”組成它是C語言中唯一的一個(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ù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ù)或無符號(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)連接起來的表達(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)算;后置那么是先引用后增減,即用變量原來的值參與其他運(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)算問題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)算過程中,當(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說明:〔1〕強(qiáng)制類型轉(zhuǎn)換不改變表達(dá)式本身的值類型,而是產(chǎn)生一個(gè)臨時(shí)變量,用來暫存轉(zhuǎn)換后的值,該臨時(shí)變量引用后即自動(dòng)釋放〔2〕強(qiáng)制類型轉(zhuǎn)換符優(yōu)先級(jí)較高,只對(duì)緊隨其后的表達(dá)式起作用,而對(duì)其他局部不起作用例 (int)x*y+9.854語句1說明語句:定義語句和聲明語句;2表達(dá)式語句:表達(dá)式;2空語句:;3復(fù)合語句:{//假設(shè)干語句}過程控制語句:過程控制語句用來控制或改變程序的執(zhí)行方向;5輸入輸出語句:I/O流

定義語句

聲明變量/常變量/對(duì)象/函數(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流程圖符號(hào)起止框過程聯(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【例】

輸入三個(gè)數(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){…}不等式連寫的錯(cuò)誤

if(a<b<c){…}邏輯短路

if(b+2&&a/b>2)cout<<“ok\n”;邏輯推演設(shè)計(jì)條件表達(dá)式時(shí)須注意的問題: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:[語句序列1;][break;]……

case

常量表達(dá)式n:[語句序列n;][break;][default:語句序列;]}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)。編寫計(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)語句的構(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<<"是無效運(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)體語句;}do {

循環(huán)體語句;}while(表達(dá)式

);for(

表達(dá)式1;

表達(dá)式2;

表達(dá)式3)

{循環(huán)體語句;}嵌套循環(huán):當(dāng)循環(huán)語句中的循環(huán)體中又有循環(huán)語句時(shí),就構(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語句時(shí),將跳過其后尚未執(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)號(hào)語句一起使用,所謂標(biāo)號(hào)語句是用標(biāo)識(shí)符標(biāo)識(shí)的語句,它控制程序從goto語句所在的地方轉(zhuǎn)移到標(biāo)號(hào)語句處。goto語句會(huì)導(dǎo)致程序結(jié)構(gòu)混亂,可讀性降低,一般不提倡使用goto語句。但在多層循環(huán)嵌套中,要從深層地方跳出所有循環(huán),如果用break語句,不僅要使用屢次,而且可讀性較差,這時(shí)goto語句可以發(fā)揮作用77〔4〕return語句:用于結(jié)束函數(shù)的執(zhí)行,返回調(diào)用者,如果是主函數(shù),那么返回至操作系統(tǒng)利用一個(gè)return語句可以將一個(gè)數(shù)據(jù)返回給調(diào)用者。通常,當(dāng)函數(shù)的返回類型為void時(shí),return語句可以省略,如果使用也僅作為函數(shù)或程序結(jié)束的標(biāo)志78輸入流對(duì)象cin:cin用來在程序執(zhí)行期間給變量輸入數(shù)據(jù)cin>>變量名1[>>變量名2>>…>>變量名n];

輸出流對(duì)象cout:cout實(shí)現(xiàn)將數(shù)據(jù)輸出到顯示器的操作cout<<表達(dá)式1[<<表達(dá)式2<<…<<表達(dá)式n];

使用時(shí)必須在程序開頭包含頭文件:#include

<iostream.h>或者寫為

#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)跳過輸入的空白字符〔包括空格,制表,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輸出時(shí)字符之間是無間隔的,如果想讓字符間有間隔,必須輸出間隔符822.字符串輸入輸出輸入:常用函數(shù)getline()cin.getline(char[],int)其中第一個(gè)參數(shù)是已經(jīng)定義的字符數(shù)組名,第二個(gè)參數(shù)是讀入字符的最多個(gè)數(shù)n〔包括字符串結(jié)束符‘\0’〕。getline()輸入以用戶按下回車鍵作為結(jié)束輸出:常用cout輸出字符串。雙引號(hào)中的字符串常量照原樣輸出,程序中通常通過輸出字符串常量來輸出一些提示信息。字符數(shù)組將輸出串結(jié)束符前所有字符83說明:函數(shù)getline()保證在執(zhí)行時(shí)總會(huì)為字符串的結(jié)束符保存一個(gè)字節(jié)。當(dāng)鍵盤的輸入字符〔字節(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í)從鍵盤輸入: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ù)間隔開,可以用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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論