《C++語言基礎(chǔ)》PPT課件
《《C++語言基礎(chǔ)》PPT課件》由會員分享,可在線閱讀,更多相關(guān)《《C++語言基礎(chǔ)》PPT課件(496頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、C++語言基礎(chǔ),鹽城工學院 惠為君,C++概述,C++的特點 發(fā)展歷史和未來 (CC++(AT const int Number_of_Student=100; 常變量必須也只能在說明時進行初始化; 常變量初始化之后,不允許再被賦值; 常變量必須先說明后使用; 常變量存儲在數(shù)據(jù)區(qū),并且可以按地址訪問,編譯時系統(tǒng)對常變量進行類型檢查。 C++建議使用常變量,而盡量不使用字面常量。,,2.3.3 結(jié)束,,,2.1.7 變 量,,,1 變量說明,2 變量賦初值,變量,在程序中是指可以改變值的量; 變量必須用標識符進行標識,稱為變量名; 變量有類型之分,如整形變量、字符變量等; 任何變量都必須先說明后
2、使用;一是便于編譯程序為變量分配空間,二是便于編譯時進行語法檢查; 變量使用的第一步,是給變量賦初始值;,,ok,,,變量說明,在C++中,變量說明的一般格式為: 存儲類型數(shù)據(jù)類型 變量名1,變量名2, ,變量名n;,下面是變量說明的幾個例子: int i, j, k; //說明三個整型變量i, j, k float x, y, z; //說明三個實型變量x, y, z char c1, c2; //說明兩個字符型變量c1, c2 double dx; //說明一個雙精度型變量dx,,變量說明 結(jié)束,,,變量賦初值,(1)變量說明時直接賦初值。 例如:int a=3, b=4, c
3、=5; float x=3.0; (2)用賦值語句賦初值。嚴格的說,只有前者可稱賦初值 例如:float x, e; x=3.5; e=2.71828;,,結(jié)束,,,給變量賦初值稱為初始化,有兩種方法:,2.2 基本運算符,,,對常量和變量進行運算是通過運算符來實現(xiàn)的. 常量和變量通過運算符組成C++表達式,由表達式再組成C++語句. 運算符是完成對常量和變量進行運算的符號. 把參與運算的對象稱為操作數(shù).,按照要求的操作數(shù)的個數(shù),運算符分為單目(一元)運算符、雙目(二元)運算符和三目(三元)運算符。單目運算符只對一個操作數(shù)運算,如負號運算符“”等;雙目運算符要求有兩個操作數(shù),如乘
4、號運算符“*”等;三目運算符要求有三個操作數(shù),三元運算符只有一個“?:”。,1.算術(shù)運算符,ok,,,,運算符重載: 當兩個操作數(shù)均為整數(shù)時,*和/重載為整乘和整除,結(jié)果為整數(shù),除法運算后舍去小數(shù)取整。如: 5/4//結(jié)果為1,整數(shù),,,當兩個操作數(shù)均為整數(shù),%定義為求余運算,也稱求模運算,結(jié)果為兩個整數(shù)相除后的余數(shù)。如果兩個整數(shù)中有負數(shù),則先用兩數(shù)絕對值求余,最后結(jié)果的符號與被除數(shù)相同。例如 6%3//結(jié)果為0 6%7//結(jié)果為6 7%6//結(jié)果為1,C++中算術(shù)運算應(yīng)注意數(shù)據(jù)溢出問題,即運算結(jié)果超出對應(yīng)數(shù)據(jù)類型的表示范圍。編譯程序只會對除法運算時除數(shù)為0這種情況提示出錯,而特別容易溢出的整
5、數(shù)的加、減和乘法運算產(chǎn)生溢出的情況,系統(tǒng)不作為錯誤處理,程序?qū)⒗^續(xù)執(zhí)行并產(chǎn)生錯誤的計算結(jié)果。因此,程序設(shè)計者必須在程序中解決檢查并處理整數(shù)溢出問題。,只要有一個操作數(shù)是實數(shù),兩個操作數(shù)均轉(zhuǎn)換為double型,*和/重載為普通的乘和除,結(jié)果是實數(shù): 5/4.0//結(jié)果為1.25,實數(shù),,,2.關(guān)系運算符和邏輯運算符,,ok,關(guān)系運算符都是二元運算符,包括:(大于)、(不小于)、(小于)、(不小于)、= =(等于)和!=(不等于)。關(guān)系運算符完成兩個操作數(shù)大小的比較,結(jié)果為邏輯值true(真)或false(假)。每種可比較大小的數(shù)據(jù)類型,都重載了關(guān)系運算符。不同類型,自動轉(zhuǎn)換為同一類型后,采用對應(yīng)
6、關(guān)系運算符進行比較。,,,,在C++中這兩個邏輯值與整數(shù)之間有一個對應(yīng)關(guān)系,真對應(yīng)1,假對應(yīng)0;反過來,0對應(yīng)假,非0整數(shù)對應(yīng)真。所以關(guān)系運算結(jié)果可以作為整數(shù)參與算術(shù)運算、關(guān)系運算、邏輯運算及其他運算。,2.關(guān)系運算符和邏輯運算符,設(shè)有定義 float a=3.2;int b=5;則: 3ab//結(jié)果是?,根據(jù)右結(jié)合 原則其運算 過程如下:,a,5,b,3.2,3,,,F, 即0,,,,F即0,,,,,,,邏輯運算符,邏輯運算符用來進行邏輯運算。其操作數(shù)和運算結(jié)果均為邏輯量。運算結(jié)果同樣可以作為一個整數(shù)參與其他運算。,由于邏輯值和整數(shù)之間的對應(yīng)關(guān)系,也允許整型和字符型操作數(shù)進行邏輯運算: 2
7、1//左值不能是常數(shù) x+y=z;//左值不能是表達式 const int N=30; N=40;//左值不能是常變量,5.自增自減運算,運算分前置和后置兩種,前置是先增減后引用,即先對變量自加或自減,用新的值參與其他運算;后置則是先引用后增減,即用變量原來的值參與其他運算,然后再對變量進行自加或自減,例如: int i=5, j=5, m, n; m=i++; //后置;相當于m=i; i=i+1; //結(jié)果:i的值為6,m的值為5; n=++j; //前置;相當于j=j+1;n=j; //結(jié)果:j的值為6,n的值為6;,意義:使變量當前值加1或減1,再賦給該變量。 要求:操作數(shù)只能
8、是變量,不能是常量或表達式;,ok,,,,sizeof( ) 運算符,用于計算一個操作數(shù)類型或一個變量的字節(jié)數(shù)。一般格式為:sizeof (數(shù)據(jù)類型) 或 sizeof(變量名) 例如:sizeof(int) 值為4 sizeof( float) 值為4 double x; sizeof( x) 值為8,,結(jié)束,,,2.2.2 表達式,,,,,,1 算術(shù)表達式,2 關(guān)系表達式,3 邏輯表達式和邏輯表達式求值的優(yōu)化,4 賦值表達式與復(fù)合賦值表達式,5 逗號表達式,ok,,,,,1.算術(shù)表達式,使用時注意: 1、表達式中每個變量都有確定的值時才能進行表達式求值; 2、考慮到算術(shù)運算溢出和精度
9、問題,應(yīng)避免: (1)兩個很接近的數(shù)直接相減; (2)除數(shù)是一個很小的數(shù); (3)整數(shù)的連續(xù)乘運算。,ok,,,,由算術(shù)運算符連接的表達式稱為算術(shù)表達式,例如:a+b*3 ;,2.關(guān)系表達式,例如: abc /*等同于(ab)c,先求ab 的值, 再將結(jié)果0或1與c比較大小*/ a+bc+d /*等同于(a+b)(c+d), 結(jié)果為0或1*/ y=ab /*計算ab的值0或1 賦給y,y的值為0或1*/,由關(guān)系運算符連接的表達式。值為true或false。,ok,,,,3.邏輯表達式和邏輯表達式求值的優(yōu)化,由邏輯運算符連接的表達式稱為邏輯表達式。邏輯表達式的值為true或fals
10、e。這個值可對應(yīng)整數(shù)1或0參與其他運算。,ok,,已知: int a=10, b=20, c=30;float x=1.8, y=2.4;,ay||ay)||(a<(b-(!c))),,,,,,,,,t1=1,t2=0,t4=0,-, 求: a
11、= 表達式 例如:x=5+6;a=b=c=d+1; 在C++中,所有的雙目算術(shù)運算符和位運算符均可與賦值運算符組合成一個單一運算符,稱為復(fù)合運賦值算符。包括以下10個: + = = * = / = % = = int i1, i2; float x1, x2; 則表達式 x2=c1*i1+c1*x1+c1*c2 的求值過程為:將c1轉(zhuǎn)換成整型,完成c1*i1,結(jié)果表示為t1;將c1和x1均轉(zhuǎn)換成雙精度型,完成c1*x1,結(jié)果表示為t2;將c1和c2均轉(zhuǎn)換成整型,完成c1*c2,結(jié)果表示為t3;然后t1轉(zhuǎn)換成雙精度型,完成t1+t2,結(jié)果表示為t4;將t3轉(zhuǎn)換成雙精度型,完成t4+t3,最后
12、結(jié)果轉(zhuǎn)為單精度型賦給x2。,,,2.賦值類型轉(zhuǎn)換,,2.5.3結(jié)束,系統(tǒng)自動進行類型轉(zhuǎn)換規(guī)則: 1、實型數(shù)賦給整形變量:取整;注意溢出; 2、整型數(shù)賦給實型變量:先轉(zhuǎn)換為實型數(shù); 3、字符型數(shù)賦給整形變量:ASCII碼為依據(jù);分為兩種情況:符號位是0或1時不同; 若符號位為1,則低位字節(jié)不變,高位字節(jié)全部置1再賦值。 4、絕對值較大的數(shù)賦給表達范圍較小的數(shù)據(jù)類型時,注意溢出;,,,2.5.4 強制類型轉(zhuǎn)換運算符,ok,,,其格式為: () //形式一 或 ()//形式二,作用:將表達式強制轉(zhuǎn)換為類型, 但表達式的值及其類型不變。,,任意數(shù)據(jù)類型,,,,賦值運算中,當左值與右值類型不一致時,
13、系統(tǒng)將按照左值的類型,自動進行強制轉(zhuǎn)換。,例如: 設(shè)有以下定義 double x=2.3,y; int i=2,j;,(1) j,2.3,x,,2.3, ,2,2,(1) j=x;(2) y=i;,由系統(tǒng)按 左值j 、y 類型自動 完成強制 轉(zhuǎn)換功能,(2) y,2,i,,2, ,2.0,2.0,,,2.5.4 強制類型轉(zhuǎn)換運算符,,,第三章: 簡單輸入/輸出,3.1 cin cin用來在程序執(zhí)行期間給變量輸入數(shù)據(jù), 一般格式為: cin變量名1變量名2變量名n; cout實現(xiàn)將數(shù)據(jù)輸出到顯示器的操作, 一般格式為: cout,3.1.1十進制數(shù)據(jù)的輸入輸出,請看下例: int i, j; f
14、loat x, y; coutij;//D cinxy; cout 則程序輸出: i=10j=20 x+y=13.1 輸出時各數(shù)據(jù)間是無間隔的,因此應(yīng)當有意輸出一些間隔符,ok,,,3.1.2 輸入字符數(shù)據(jù) cin 與cin.get( )的區(qū)別 (1) cin 例如:char c1, c2, c3; cinc1;//A cinc2c3; 程序執(zhí)行到A行時,等待用戶輸入數(shù)據(jù)。 若輸入:A b c 則cin分別將字符A、b、c賦給變量c1、c2、c3。 cin自動跳過輸入的空白字符(包括空格,制表,backspace和回車等)。,(2)cin.get() 例如:char c1, c2, c3, c
15、4; cin.get (c1);//B cin.get (c2); cin.get (c3); 程序執(zhí)行到B行時,若輸入:A b 則執(zhí)行結(jié)果是:字符A、空格、字符b分別賦給變量c1、c2、c3;輸入行中仍保留回車符。cin.get()把從鍵盤上輸入的所有字符,包括空白字符,都作為輸入字符賦給字符變量,關(guān)于字符的輸出,請看下例,假定字符c1、c2、c3的值分別為字符a、b和c,執(zhí)行以下語句序列: cout< 16、,補充.字符串輸入輸出,向一個字符數(shù)組中輸入字符串時,用函數(shù)getline() 。getline() 以用戶按下回車鍵作為結(jié)束,在此之前的所有輸入都放入字符數(shù)組中: cin.getline (char ,int) 其中第一個參數(shù)是已經(jīng)定義的字符數(shù)組名,第二個參數(shù)是讀入字符的最多個數(shù)n(包括字符串結(jié)束符/0)。,ok,,,常用cout輸出字符串。雙引號中的字符串常量照原樣輸出,程序中通常通過輸出字符串常量來輸出一些提示信息。字符數(shù)組將輸出串結(jié)束符前所有字符。,補充:字符串輸入輸出,函數(shù)保證在執(zhí)行時總會為字符串的結(jié)束符保留一個字節(jié)。當鍵盤的輸入字符(字節(jié))數(shù)多于(n1)時,后面的字符不會進入字符數(shù) 17、組,字符串結(jié)束符自動加在字符數(shù)組的最后一個字節(jié)中。當輸入字符數(shù)少于該值時,字符串結(jié)束符自動加在輸入到字符數(shù)組中的最后一個字符的后面。請看下例: char city11; cin.getline(city, 10); // 輸入城市名最多5個中文字 cout << “城市名:“ << city << endl;,ok,,,如果要求按八進制或十六進制輸入輸出,在cin或cout中必須指明相應(yīng)的數(shù)據(jù)形式,oct為八進制,hex為十六進制,dec為十進制。例如: int i, j, k, l; cout oct i;//輸入為八進制數(shù) cin hex j;//輸入為十六進制數(shù) cin k;//輸入仍為 18、十六進制數(shù) cin dec l;//輸入為十進制數(shù) cout<<” hex:”<<” i=”<< hex<< i<< endl; cout<<” dec:”<<” j=”<< dec<< j< 19、ex:i=1a dec:j=63k=160 oct:l=21 由于已經(jīng)在cin中指明數(shù)制,因此從鍵盤輸入時,八進制和十六進制數(shù)可以省略其開頭的0和0 x標志。 在cin或cout中指明數(shù)制后,該數(shù)制將一直有效,直到重新指明用其他數(shù)制。 特別注意:輸入數(shù)據(jù)的格式、個數(shù)和類型必須與cin中的變量一一對應(yīng),否則不僅使輸入數(shù)據(jù)錯誤,而且影響后面其他數(shù)據(jù)的正確輸入。,,,輸入輸出的格式控制,為了使數(shù)據(jù)間隔開,還可以用C++提供的函數(shù)setw() 指定輸出數(shù)據(jù)項的寬度。例如: int i=2, j=3; float x=2.6, y=1.8; cout,ok,(2)設(shè)置數(shù)據(jù)間隔,,,,第4章 流程控制語句 20、,,4.1 選擇結(jié)構(gòu)程序設(shè)計,,對程序的運行流程進行控制,主要通過執(zhí)行專門用來控制流程的語句來實現(xiàn)。流程控制語句也稱為過程化語句。分支語句是三種基本流程控制語句之一。C++提供以下三種分支語句:,if 語句 條件運算符 “ ? : ” swith 語句,4.2.1 if 語句,if語句有兩種基本格式為: 1、if () ; 2、if () else;,,,if 語句,【例41】 輸入一個年份,判斷是否閏年。 算法分析:假定年份為year, 閏年的條件是 : year%4==0 ,,ok,分析:讀入三個數(shù),先求出兩個數(shù)中較大者,再將該大數(shù)與第三個數(shù)比較,求出最大數(shù)。 #include 21、void main() int a, b, c, max; coutabc; coutb) max=a; else max=b; if(cmax) cout<< “最大數(shù)為:”< 22、 if else ; 第二種是嵌套在if分支中為: if () if () ; else;,if 語句,//方法1:采用if中嵌套形式 #include void main() int a, b, c, max; coutabc; coutb) if(ac) max=a; //ab且ac else max=c; //ab且ac) max=b; //ac else max=c; //a<=b且b 23、main() int a,b,c,max; coutabc; coutb ,if 語句,,ok,要特別注意else和if的配對關(guān)系。C++規(guī)定了if和else的“就近配對”原則,即相距最近且還沒有配對的一對if和else首先配對。按上述規(guī)定,第二種嵌套形式中的else應(yīng)與第二個if配對。如果根據(jù)程序的邏輯需要改變配對關(guān)系,則要將屬于同一層的語句放在一對“”中。如第二種嵌套形式中,要讓else和第一個if配對,語句必須寫成: if (表達式1) if (表達式2) 語句1 ; else 語句2 ; 第二種嵌套形式較容易產(chǎn)生邏輯錯誤,而第一種形式配對關(guān)系則非常明確,因此從程序可讀性角度出發(fā),建議
- 溫馨提示:
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)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。