2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩435頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C++程序設(shè)計,第 1 章 C++入門第 2 章 數(shù)據(jù)類型和表達(dá)式第 3 章 語句和函數(shù) 第 4 章 面向?qū)ο蟮幕靖拍钆c類第 5 章 對象第 6 章 指針和引用第 7 章 繼承第 8 章 靜態(tài)成員和友元第 9 章 多態(tài)和虛函數(shù)第 10 章 輸入輸出流第 11 章 模板和異常處理第 12 章 綜合應(yīng)用實例,第一章 C++ 入門,1.1 什么是 C++1.2 一個 C++ 程序1.3 C

2、++ 程序的結(jié)構(gòu)1.4 例題分析和小結(jié),,1.1 什么是 C++,1.1.1 什么是 C++ 程序設(shè)計語言1.1.2 C++程序開發(fā)過程,,1.1.1 C++ 程序設(shè)計語言,C++是當(dāng)今最流行的一種面向?qū)ο蟮某绦蛟O(shè)計語言,20世紀(jì)80年代初由貝爾實驗室開發(fā)。C++由C語言擴(kuò)展而來,繼承了C語言的優(yōu)點,又極大地擴(kuò)充了C語言的功能。尤其適用于開發(fā)中等和大型的計算機(jī)應(yīng)用項目,從開發(fā)時間、費用到形成的軟件的可重用性、可擴(kuò)充性、可

3、維護(hù)性等方面都具優(yōu)越性。,,1.1.2 C++程序開發(fā)過程-1,世界上有多種C++語言,比較流行的有Visual C++(簡稱VC++)和Borland C++,我們選用VC++作為編寫C++語言程序的環(huán)境。VC++是開發(fā)C++程序的集成開發(fā)環(huán)境,包括編輯、編譯、連接、運(yùn)行幾個環(huán)節(jié)。如要研制一個命名為Hello的程序,其操作流程如圖所示。,編輯,編譯,連接,執(zhí)行,,源程序,,Hello.cpp,,Hello.obj,,Hello.e

4、xe,,執(zhí)行結(jié)果,圖1-1 研制Visual C++程序的過程,,,,有錯誤,無錯誤,1.1.2 C++程序開發(fā)過程-2,1. 編輯:將寫好的C++源程序輸入到計算機(jī)中,生成磁盤文件的過程。VC++的編輯器主要功能有:定義塊、移動塊、復(fù)制塊、刪除塊、插入、保存。將編輯的C++程序存盤時,會自動加上擴(kuò)展名cpp,這是C++源程序的默認(rèn)擴(kuò)展名2. 編譯:編譯器將編輯好的程序轉(zhuǎn)換成二進(jìn)制機(jī)器代碼的形式,即目標(biāo)代碼。C++的編譯分兩大部進(jìn)

5、行:預(yù)處理過程、編譯源程序。3. 連接:把目標(biāo)代碼連接成執(zhí)行文件(擴(kuò)展名為exe)。4. 運(yùn)行:C++經(jīng)過編譯和連接生成的可執(zhí)行文件可以在操作系統(tǒng)下單獨運(yùn)行,也可以在VC++集成環(huán)境下運(yùn)行。,,1.2 一個 C++ 程序,編寫名為Hello的程序#include "stdafx.h"#include //函數(shù)原型void SayHello( );void SayGoodbye( );int main

6、 ( int argc, char* argv[ ] ){SayHello( ); //調(diào)用 SayHello 函數(shù) //輸出“Hello,World!”和“你真聰明,你已 //經(jīng)會用C++編寫程序了!”SayGoodbye( ); //調(diào)用 SayHello 函數(shù),輸出“Bye,朋友!”return 0;},//

7、函數(shù) SayHello 定義void SayHello( )//輸出“Hello,World!”和“你真聰明,你已經(jīng)會用C++編寫程序了!”{cout<<"Hello,"<<"World!"<<endl;cout<<"你真聰明,你已經(jīng)會用C++編寫程序了!"<<endl;}//函數(shù) SayGoodby

8、e 定義void SayGoodbye( ) //輸出“Bye,朋友!”{cout<<"Bye,"<<"朋友!"<<endl;},,1.3 C++ 程序的結(jié)構(gòu),1.3.1 主程序1.3.2 函數(shù)1.3.3 輸入/輸出1.3.4 頭文件1.3.5 注釋,,1.3.1 主程序,每個C++程序都有一個特殊的函數(shù) main ,稱為主程序

9、函數(shù),簡稱主程序(或主函數(shù))。每個C++程序都從主程序 main 開始執(zhí)行。Hello 程序執(zhí)行的事件序列,,1.3.2 函數(shù),C++程序是由若干個函數(shù)組成的,函數(shù)與函數(shù)之間是相對獨立的并且是并行的,函數(shù)之間可以調(diào)用。調(diào)用其它函數(shù)的函數(shù)稱為主函數(shù),被其它函數(shù)調(diào)用的函數(shù)稱為子函數(shù)。一個函數(shù)可以既是主函數(shù)又是子函數(shù)。在組成一個程序的若干個函數(shù)中,有且僅有一個主函數(shù) main 。執(zhí)行程序執(zhí)行程序時,系統(tǒng)先找到主函數(shù)main,并從主函數(shù)m

10、ain開始執(zhí)行,其它函數(shù)只能通過main函數(shù)或被main函數(shù)調(diào)用的函數(shù)進(jìn)行調(diào)用。函數(shù)的調(diào)用是可以嵌套的。函數(shù)要先說明后調(diào)用,函數(shù)是用函數(shù)原型進(jìn)行說明的。如Hello 程序中的:void SayHello( ); void SayGoodbye( );,1.3.2 函數(shù),C++程序中的函數(shù)可分為兩大類:用戶自己定義的函數(shù)、系統(tǒng)提供的函數(shù)。使用系統(tǒng)函數(shù)時可直接調(diào)用,但需將

11、包含該函數(shù)的文件說明為頭文件,并包含到該程序中。在C++程序中,以分號結(jié)尾的句子稱為語句,分號代表這個語句的結(jié)束。一個C++函數(shù)中的任何語句都被括在一對花括號“{”和“}”中,花括號括起來的部分稱作函數(shù)體,函數(shù)名和它后面的一對圓括號()稱為函數(shù)頭。函數(shù)體由一系列C++語句組成。函數(shù)名前面的 void、int 等是函數(shù)的類型標(biāo)識符,規(guī)定函數(shù)的返回值類型。void 表示函數(shù)體不需要返回值。函數(shù)原型說明只需要函數(shù)頭和分號;函數(shù)定義部分

12、的函數(shù)頭和函數(shù)體之間不能有分號。,,1.3.3 輸入/輸出,程序是由語句組成的,輸入輸出語句是C++最基本的語句。cout 是C++語言中的標(biāo)準(zhǔn)輸出流對象,就是計算機(jī)的顯示器,“>”是cin中的運(yùn)算符,表示從鍵盤讀入數(shù)據(jù)存放到它后面的參數(shù)中。 cin>>x>>y; 表示從鍵盤輸入數(shù)據(jù),第一個數(shù)據(jù)存入 x 中,第二個數(shù)據(jù)存入 y 中。,,1.3.4 頭文件,C++中,以 #inclu

13、de 開頭的指令是C++使用的預(yù)處理指令,稱作預(yù)處理器,#include包含的文件稱作頭文件。C++語言包含頭文件的格式有兩種 第一種: #include 編譯器在C++系統(tǒng)目錄中查找頭文件,常用于標(biāo)準(zhǔn)頭文件。 第二種: #include “文件名.擴(kuò)展名” 編譯器首先用戶編寫程序的當(dāng)前目錄中查找,然后在C++系統(tǒng)目錄中查找。在 Hello 中,iostream.h 是VC++系統(tǒng)中的文件,

14、所以用 “” 括起來,Hello中使用的輸出流 cout 是在iostream.h 頭文件中說明的。 Stdafx.h 是VC++系統(tǒng)自動生成的文件,在用戶當(dāng)前目錄中,定義系統(tǒng)設(shè)置。,,1.3.5 注釋,程序中的注釋只是為了閱讀程序方便,注釋并不增加執(zhí)行代碼長度,在編譯時被當(dāng)作空白行跳過。C++語言中有兩種書寫程序注釋的方法: 第一種:以字符 “/*” 開始,并以字符 “*/” 結(jié)束。對于程序中連續(xù)多行注釋或處理不想編譯的代

15、碼,這種方法非常有效。 第二種:雙字符 “//” 表示注釋的開始,直到它所在行結(jié)束處終止,它是單行注釋符。多用于較短的程序注釋。,,1.4 例題分析和小結(jié),1.4.1 例題1.4.2 例題分析1.4.3 小結(jié),,1.4.1 例題,//例 1.1#include "stdafx.h"#include//函數(shù)原型說明void SayLove();void SayCPP();void SayBy

16、e();//主程序void main(int argc, char* argv[]){SayLove(); //調(diào)用SayLove函數(shù)SayCPP(); //調(diào)用SayCPP函數(shù)SayBye(); //調(diào)用SayBye函數(shù)},//函數(shù)定義void SayLove() //定義 SayLove 函數(shù){cout<<"我愛計算機(jī)

17、科學(xué)!"<<endl;}void SayCPP() //定義 SayCPP 函數(shù){cout<<"C++是優(yōu)秀的面向?qū)ο笳Z言!"<<endl;cout<<"我喜歡學(xué)習(xí)C++。"<<endl;}void SayBye() //定義 SayBye 函數(shù){

18、cout<<"再見!"<<endl;},//例 1.2#include//求周長函數(shù)原型說明,該函數(shù)帶有3個整型參數(shù)int peri(int,int,int);//主程序void main(){cout<<“三角形的三邊邊長分別為:6厘米、7米、 8厘米"<<endl;,cout

19、<<“三角形的周長為:”<<peri(6,7,8)<<“厘米” <<endl;}//peri函數(shù)的定義int peri(int x,int y,int z){return (x+y+z); //返回計算的三角形周長值},,1.4.2 例題分析,1. 解題步驟2. 模塊化:將大的問題分成相對獨立的小模塊3.

20、 頭文件4. 注釋,分析題意,模塊化,編程調(diào)試,分析結(jié)果,,開始,,,,,結(jié)束,,,,有錯誤,無錯誤,,第 2 章 數(shù)據(jù)類型和表達(dá)式,2.1 詞法符號2.2 基本數(shù)據(jù)類型2.3 結(jié)構(gòu)數(shù)據(jù)類型2.4 表達(dá)式2.5 例題分析和小結(jié),,2.1 詞法符號,C++語言的字符集包括: 英文字母: A~Z,a~z 數(shù)字字符: 0~9 特殊字符: 空格 !# % ^ & * _ + =

21、-- ~ / \ ˊ 〞. , ( ) [ ] { }根據(jù)使用目的的不同,詞法符號可分為標(biāo)識符、關(guān)鍵字、符號常量等,分別分三小節(jié)介紹。,,2.1.1 標(biāo)識符,標(biāo)識符:程序中的一些實體(如變量、函數(shù))的名字。由C++的字符集中的字符按照以下規(guī)則構(gòu)成: ①標(biāo)識符可以由各種英文字母和數(shù)字字符及下劃線組成,但第一個字符必須是英文字母或下劃線“_”,不可以以數(shù)字字符打頭,字母的大小寫是有區(qū)別的

22、。 Abc、X1、x1、_x1、x2、x3、desk、books 等都是合法的標(biāo)識符,并且各不相同。 5you 不是合法的標(biāo)識符,但 you5、You5、_you5 都是合法的標(biāo)識符。 ②標(biāo)識符不可以是下一節(jié)將講到的關(guān)鍵字。,,2.1.2 關(guān)鍵字,關(guān)鍵字是一種有特殊用途的標(biāo)識符。它是C++語言預(yù)先定義的詞法符號,不能再由程序員聲明做其他的用途。C++的常用關(guān)鍵字有: auto、b

23、reak、cause、char、class、const、continue、default、delete、do、double、else、enum、explicit、extern、false、float、for、friend、goto、if、inline、int、long、mutable、namespace、new、operator、private、protected、public、register、return、short、signed、

24、sizeof、static、struct、switch、template、this、throw、true、try、typedef、union、unsigned、virtual、void、while。上述這些關(guān)鍵字都是C++的保留字,用戶不能再重新定義,它們的意義以后將逐漸介紹。,,2.1.3 常 量,程序運(yùn)行過程中,其值保持不變的量。常量直接用符號表示它的值,這樣便于修改且意義明確。常量定義的方法是在程序的開始用如下語句:

25、 # define pi 3.1415926;或在程序中用如下語句: Const int pi=3.1415926;常量有 5 種數(shù)據(jù)類型:整型、實型、字符型、字符串型 、布爾型。,,2.1.3 常 量,1. 整型常量:以詞法符號形式出現(xiàn)的整數(shù),可用以下形式表示: ①十進(jìn)制整數(shù) 如 –23、0、23、1327 等。 ②八進(jìn)制整數(shù) 以 0 開頭,后跟若干個 0~7 的數(shù)字。如 0

26、123。八進(jìn)制數(shù)的一般形式是 + 或 - 后跟 0 再后跟若干個 0~7 的數(shù)。如:+026、-035。 ③十六進(jìn)制整數(shù) 以 0x 開頭,后跟若干個 0~9及a~f。如0xa51c6、0x8a 等。八進(jìn)制數(shù)的一般形式是 + 或 - 后跟 0x 再跟若干個 0~9及a~f 。如:+0a6、-03e。,2.1.3 常 量,2. 實型常量:實數(shù)又稱為浮點數(shù),一般可有兩種表示形式: ① 一般形式 就是平時

27、寫實數(shù)的形式,不同之處是在C++中,小數(shù)點前的 0 可以省略,但小數(shù)點不可以省略。 如:3.1416, 2.172828, 1356.88, 365.25, 0.366, 0.258, .258, 12345.6789 ② 指數(shù)形式 E 數(shù)字部分是實數(shù),指數(shù)部分是整數(shù),中間的 E 也可以為小寫。 如:2002×103 ,在C++中記為 2002E3

28、 或 2002e3。 注意,字母 e(或 E)前一定要有數(shù)字,其后一定要是整數(shù)。E3、2002e、2002e0.3是錯誤的。以下是合法的指數(shù)形式的C++實數(shù):23E4, 123E5, 8e9, -1E3, -1.23e-12。,2.1.3 常 量,3. 字符常量:用單引號括起來的一個字符。字符常量有兩種:一種是可顯示字符,如‘a(chǎn)’, ‘B’, ‘#’, ‘5’, ‘+’ 等;另一種稱作轉(zhuǎn)義字符序列,以 ‘\’ 打頭,其后的字

29、符有特殊的意義。如 ‘/n’ 中的 n 不是代表字符 n 而是代表換行的意思,輸出語句 cout<<“a\nb”,在當(dāng)前行輸出 a ,然后換行再輸出 b 常見的轉(zhuǎn)義字符如表 2-1 。見課本第 16 頁。4. 字符串常量:用雙引號括起來的字符序列(由若干個字符構(gòu)成)。如:“computer”, “A” 是字符串常量,而 ‘A’ 是字符常量。 在計算機(jī)里,以 ‘\0’ 表示一個字符串的結(jié)束,這個字符是

30、計算機(jī)自動加的。 5. 布爾型常量:false 表示假,true 表示真。,2.2 基本數(shù)據(jù)類型,數(shù)據(jù)類型,基本類型,結(jié)構(gòu)類型,整型字符型實型布爾型枚舉型指針型,數(shù)組結(jié)構(gòu)體共用體,,,,,2.2.1 簡單數(shù)據(jù)類型,1.字符型:字符型數(shù)據(jù)在計算機(jī)中以 ASCII 碼的形式表示,其本質(zhì)是整數(shù)類型的一部份,是整數(shù)的一個子集,根據(jù)其在計算機(jī)上的存儲長度,計算機(jī)對它有不同的解釋,它可以被當(dāng)作整數(shù)進(jìn)行運(yùn)算。,2.2.1 簡單數(shù)

31、據(jù)類型,2. 整型:short 和 long 修飾整型(int)時,表示它們在計算機(jī)中的存儲長度不同,以這兩者修飾 int 時,int 可以被省略,long 也可以用來修飾 double;signed 和 unsigned 分別表示這個數(shù)是否是帶符號的,前者常被省略。int 型和 bool 型數(shù)據(jù)的長度是可變的,在不同系統(tǒng)中的情況是不同的,這里列出的是在 VC++ 6.0 中的情況。,2.2.1 簡單數(shù)據(jù)類型,3. 浮點型:float

32、, double 分別是單精度和雙精度的實型。,4. 布爾型:bool 型數(shù)據(jù)的長度是可變的,在不同系統(tǒng)中的情況是不同的,這里列出的是在 VC++ 6.0 中的情況。,數(shù)據(jù)類型既可以是系統(tǒng)定義的,也可以是用戶自定義的,以上是系統(tǒng)定義的 4 種簡單數(shù)據(jù)類型,自定義的有集合類型、結(jié)構(gòu)類型等。,2.2.2 變量,在程序的執(zhí)行過程中其值可以改變的量,叫變量。變量有數(shù)據(jù)類型和初值。變量在使用之前需要首先聲明其類型和名稱。變量的名字也是一種標(biāo)識

33、符。變量的聲明: ;或 , , …, ; 如:char C; int i, j; float x, y, z, MyData;在程序運(yùn)行期間,系統(tǒng)給每一個定義過的變量分配內(nèi)存空間,用于存放對應(yīng)類型的數(shù)據(jù),因而變量名也就代表所分配的內(nèi)存單元。,2.2.2 變量,給變量賦初值的方法: 1. 將賦值語句放在

34、變量的聲明語句里 int x=2002; float f=3.1416; 2. int i(2002);,內(nèi)存用戶數(shù)據(jù)區(qū),變量x(*pointer),計算機(jī)存儲區(qū)的每一個字節(jié)都有一個編號,即存儲單元地址。如果定義了一個變量,系統(tǒng)就會根據(jù)此變量的長度,分配相應(yīng)長度的存儲空間,變量也相應(yīng)地得到一個地址。變量的存儲結(jié)構(gòu)參見右圖。x,y,z 都是實型變量;pointer

35、是指針變量,其內(nèi)容就是一個地址,不管什么數(shù)據(jù)類型的地址都可以用指針指向它。,變量y,變量z,變量pointer,,,,1008,1004,1000,2.2.2 變量,指針變量:是一種特殊的變量,專門用來存放地址。對指針的一種運(yùn)算是取地址運(yùn)算“&”,另一個運(yùn)算是取地址所指存儲單元的內(nèi)容的運(yùn)算“*”,“*”稱指針運(yùn)算符。指針變量的定義格式為: * ;//注意:“*”并非變量名的一部份 int * p1;

36、 //定義整型指針變量 p1 float * p2; //定義單精度實型指針變量 p2 int *t1, *t2; //定義 2 個整型指針變量 t1 和 t2 float *pointer, data; //指針變量和普通變

37、量一起定義 同普通變量一樣,指針變量也有類型的區(qū)別,一個指針變量只能指向類型相同的變量,如上述定義的單精度實型的指針pointer只能指向單精度實型的變量,也就是說,只有該類型的變量的地址才能放到pointer中。注意:只能將同類型的變量的地址賦給指針變量,不能將常數(shù)賦給一個指針變量,那樣做也沒有意義。,2.2.2 變量,對變量的訪問都是通過地址進(jìn)行的,有直接訪問和間接訪問兩種方式。 直接訪問方式: cout>

38、x; //取得鍵盤輸入的值,然后送到以 //1000開頭的4個字節(jié)中。 間接訪問方式(借助指針變量): cout<<*pointer //輸出pointer所指向的變量, //即x的值。 cout<<pointer //輸出指針變量pointer的值,

39、 //即x的地址。,2.3 結(jié)構(gòu)數(shù)據(jù)類型,C++中的結(jié)構(gòu)數(shù)據(jù)類型可分為數(shù)組類型、結(jié)構(gòu)體類型和共用體類型。2.3.1 數(shù)組2.3.2 結(jié)構(gòu)體類型2.3.3 共用體類型,,2.3.1 數(shù)組,1. 一維數(shù)組定義一維數(shù)組的一般格式為: [n]; 其中 n 是一個常量(不能是變量),表示元素的個數(shù)。int a[8]; 定義了一個數(shù)組,int 表示數(shù)組元素

40、的類型是整型,a是數(shù)組名,8 表示數(shù)組中有 8 個元素。用a[0]、 a[1]、 a[2]、 a[3]、 a[4]、 a[5]、 a[6]、 a[7]分別表示這 8 個整型元素,相當(dāng)于 8 個整型變量,方括號中的數(shù)字是 8 個下標(biāo)。如果有 n 個元素,則下標(biāo)從 0 到 n-1。注意,語句:int a(2); 的意思是定義一個整型變量 a,并賦予初值 2,并非定義一個數(shù)組。,,一維數(shù)組,下面是正確的數(shù)組類型說明: int

41、a[15]; int x[37]; float Data[1024]; int a[18], b[26], c[12]; //一次定義多個同類型的數(shù)組同基本類型的變量一樣,可以在定義數(shù)組的同時對其進(jìn)行初始化,如:int [2]={ 3, 5 }; 不僅定義了數(shù)組 a,同時將它的兩個元素分別初始化為 3 和 5,即 a[0]=3, a[1]=5。在定義時給數(shù)組初始化,既可以給全

42、部的元素賦初值,也可以只給其中一部份元素賦初值。若給數(shù)組的全部元素賦初值,數(shù)組定義中的常量表達(dá)式就可以省略了,計算機(jī)會自動地計算數(shù)組元素的個數(shù),以確定數(shù)組的大小。反之,如果只給一部份數(shù)組元素賦初值,常量表達(dá)式就不能省略了。,一維數(shù)組,給部分?jǐn)?shù)組元素賦初值舉例: int a[10]={ 21, 42, 31, 64, 53 }; //定義含有 10 個元素的整型數(shù)組a, 并給前 5 個數(shù)組

43、 //元素分別賦值。 int a[ ]= { 21, 42, 31, 64, 53 }; //省略了數(shù)組定義中的常量表達(dá)式,由花括號中的元 //素個數(shù)確定它是一個含 5 個元素的數(shù)組,并且 // a[0]=21、 a[1]=42、a[2]=31、 a[3]=64、 a[4]=53。,2. 二維數(shù)組,定義二維數(shù)組的一般格式為:

44、 [m][n]; 可以把一個二維數(shù)組看作是一個其元素為一維數(shù)組的一維數(shù)組。如:float a[2][2]; 定義了一個如圖 2-3 所示的二維數(shù)組。在 C++中,是按行的順序存儲數(shù)組元素的, 如:int a[2][3] 的存儲順序如圖 2-4 所示。,a[0]---- a00 a01,a[1]---- a10 a11,,,,a,a00 a01 a02,a00 a01 a02,

45、,,,,,,圖 2-3 二維數(shù)組 a,圖 2-4 二維數(shù)組的存儲順序,二維數(shù)組,對于二維數(shù)組,要有兩個相應(yīng)的下標(biāo)才能表示一個數(shù)組元素,二維數(shù)組的元素的表示形式為: [][]; 兩個下標(biāo)的取值范圍都是從 0 開始,數(shù)組中的元素和普通變量的性質(zhì)是一樣的。 int a[2][3] 的 6 個元素分別為:a[0][0], a[0][1], a[0][2], a[1][0], a[1][1], a[1][2]

46、。和一維數(shù)組一樣,二維數(shù)組也可以在定義時進(jìn)行初始化。如: int a[2][2]={ { 1, 2 }, { 3, 4 } }; int a[2][2]={ 1, 2, 3, 4 }; 以上兩句的功能是一致的,如果要對一部份元素賦值,則必須用第一種方法。 如: int a[2][2]={ {1}, { 2, 3 } };,二維數(shù)組,如果對全部元素賦初

47、值,二維數(shù)組能根據(jù)賦的初值的個數(shù)自動計算以確定數(shù)組的大小,所以定義時可省略第一維的大小,但第二維的大小是不可以省略的。 如: int a[ ][2]={ 21, 32, 53, 48, 17, 26 } //定義了一個 3 行 2 列 的數(shù)組。,3. 字符數(shù)組,字符數(shù)組就是一個字符類型的數(shù)組,其中每個元素存放一個字符。字符數(shù)組也稱字符串。Char c[8];

48、 // 定義一個 8 個字符的數(shù)組 a 。Char a[ ]=“Hey,I am C++”; /* 定義了字符數(shù)組 a ,并賦予初值, “Hey,I am C++” 共 12 個字符,字符串常量的最后由系統(tǒng)加上一個 ‘\0’ 表示字符串的結(jié)束,所以該數(shù)組的長度是 13, 不是 12。*/字符數(shù)組的最后一個元素一定是‘\0’,這是 C++ 的

49、規(guī)定。如一個 25 個元素的字符數(shù)組,只能存放 24 個字符。,字符數(shù)組,使用字符數(shù)組的元素有兩種方法: 1. 每次引用字符數(shù)組的一個元素,得到一個字符。 2. 可以把字符數(shù)組作為整體進(jìn)行輸入和輸出,在系 統(tǒng)定義的字符串的處理函數(shù)中,是把字符數(shù)組當(dāng) 作一個整體來處理的。 如:char a[ ]=“boy”;

50、cout>a; // 輸入 girl 后,數(shù)組的狀態(tài)如下所示,圖 2-5 字符數(shù)組的示意圖,字符數(shù)組,一些常用的 C++ 的字符串處理函數(shù)(1)strcat(字符數(shù)組1,字符數(shù)組2) 實現(xiàn)將兩個字符串連接起來,把字符串2按到字符串1 的后面,并將結(jié)果存放到字符串1中。 例2_3 strcat 示例及圖示。

51、 #include #include void main( ) { char a[16]="boy"; char b[ ]=" and "; char c[ ]="girl";

52、 strcat(a,b); strcat(a,c); cout<<a; },字符數(shù)組,上例中兩次調(diào)用 strcat 的過程如圖 2-6 所示(由于每次改變的都只是字符數(shù)組 a,故只圖示字符數(shù)組 a 的改變):,字符數(shù)組a,字符數(shù)組b,字符數(shù)組c,第一次strcat后的字符數(shù)組a,第二次strcat后的字符數(shù)組a,圖 2-6 調(diào)用

53、 strcat 過程的示意圖,可以看出,兩個字符數(shù)組連接后,前一個數(shù)組最后的字符\0消失了。注意,存放數(shù)組的空間要足夠大,如字符數(shù)組a定義為16個字符元素。,字符數(shù)組,(2)strcpy(字符數(shù)組1,字符數(shù)組2) 將字符數(shù)組2中的字符復(fù)制到字符數(shù)組1中去。要求字 符數(shù)組1中必須有存放字符數(shù)組2中所有字符的空間。 char a[10], b[ ]= “Hello” ; strcpy(a,

54、 b); /* 或 strcpy(a, ”Hello” ),就是說,字符串2可以是字符數(shù)組名, 也可以是一個字符字符串常量,但字符數(shù)組1必須是數(shù)組 的名字。復(fù)制的時候是邊同后面的‘\0’一起復(fù)制的,否則 無法判斷 a 數(shù)組的字符串到何時結(jié)束。 */ cout<<a;

55、 //屏幕將輸出 Hello,字符數(shù)組,(3)strlen(字符數(shù)組) 函數(shù)的值為字符數(shù)組中不計‘\0’的字符的個數(shù)。 char a[]=“boy”; cout<<strlen(a); //屏幕上顯示:3,2.3.2 結(jié)構(gòu)體類型,把描述一個物體的各個屬性結(jié)合到一起,形成“結(jié)構(gòu)體”數(shù)據(jù)類型。這樣能更好地描述一個物體。如對衣服(dress),可以定義如下: str

56、uct dress { char color[10]; int size; float price; } struct是定義結(jié)構(gòu)體類型的關(guān)鍵字,dress是結(jié)構(gòu)體類型的名稱。dress 和 int, float 一樣,同樣是一個類型的名字,它包含成員變量 color、size 和 price。,,2.3.2 結(jié)構(gòu)體類型,定義一個結(jié)構(gòu)類型

57、的一般形式是: struct { } 成員列表包括若干個: ; 注意,對各個成員都要進(jìn)行類型的說明。例 2-4 定義一個表示時鐘的結(jié)構(gòu)體。 struct Clock { //結(jié)構(gòu)體名稱為 Clock int S, F, M; //三個整數(shù)分

58、別表示時、分、秒 };,2.3.2 結(jié)構(gòu)體類型,例 2-5 定義 dress 類型的變量第一種方法:先定義類型,后定義變量。新定義的結(jié)構(gòu)體類型可以和系統(tǒng)定義的類型一樣使用。 dress dress1, dress2; //定義 dress 類型的變量dress1和dress2第二種方法是在定義類型的同時定義變量。 struct { char

59、color[10]; int size; float price; } dress1, dress2;,dress1,dress2,color size price,圖 2-7 dress 類型的變量的示意圖,2.3.2 結(jié)構(gòu)體類型,引用一個結(jié)構(gòu)體變量的成員的方法是: . “.”稱為成員(或分量)運(yùn)算符。由于

60、成員變量名前有結(jié)構(gòu)體變量名的修飾,因此成員變量名可以和程序中別的變量名重名。結(jié)構(gòu)體類型的變量也可以在聲明的時候初始化。 clock c1={ 8, 48, 35 }; //聲名了時鐘變量 c1,并且 c1.S=8、c1.F=48、c1.M=35。數(shù)組中的元素可以是結(jié)構(gòu)體變量。 dress dressarray[30]; //定義了一個元素類型為dress,有 30 個元素的數(shù)組dre

61、ssarray。,2.3.3 共用體類型,“共用體”即幾個變量共用一個內(nèi)存地址,同一時刻只能存放一個變量。各種類型變量長度不同,但可從同一地址開始存放,為共用體類型的變量分配的字節(jié)數(shù)必須和那幾個變量中最長的變量所占的字節(jié)數(shù)一樣。新放入的變量總是把以前的變量覆蓋,因此只有最后一個放入的變量是有效的。共用體變量的定義與結(jié)構(gòu)體變量的定義完全一致,形式如下: union { };,,2.3.3

62、 共用體類型,例 2-6 定義一個共用體及其變量。 union example { int i; char ch; double d; }; example x; 也可以將類型的定義和變量的定義放在一起: union example {

63、int i; char ch; double d; } x;,2.3.3 共用體類型,引用共用體成員的方式是在變量名的后面加點再加上成員變量的名字。 x.i 為引用共用體變量 x 中的整型成員變量 i x.ch 為引用共用體變量 x 中的字符型成員變量 ch x.d 為引用共用體變量 x 中的字符型成員變量 d

64、共用體類型變量有效的值只是最后一個放入的值,故如下的初始化是不正確的: union example x={ 3, ‘d’, 2.4 };變量 x 在計算機(jī)中的存儲情況如圖 2-8 所示。,地址2002,圖 2-8 union example 型變量的示意圖,2.4 表 達(dá) 式,表達(dá)式:由運(yùn)算符(例如“+”、“*”等)、操作數(shù)(可以是常量,也可以是變量)和括號組成的用于計算的式子。(3+5)*5、3+5、3+5*6

65、等都是表達(dá)式。表達(dá)式中的運(yùn)算符有的需要兩個操作數(shù),稱雙目運(yùn)算符;有的只需一個操作數(shù),稱單目運(yùn)算符。運(yùn)算符有優(yōu)先級以決定不同運(yùn)算的先后執(zhí)行順序,當(dāng)一個操作數(shù)的左右兩邊運(yùn)算符的優(yōu)先級相等時,由此運(yùn)算符的結(jié)合性決定運(yùn)算次序。運(yùn)算符“+”的結(jié)合性是先左后右,但并非所有的運(yùn)算符都是如此,也有先右后左的。,,2.4.1 算術(shù)表達(dá)式,C++中的算術(shù)運(yùn)算符: ①“+”表示“加”或“正”兩種運(yùn)算,“加”為雙目運(yùn)算符,“正”

66、 為單目運(yùn)算符,一般可以省略。 ②“-”表示“減”或“負(fù)”兩種運(yùn)算,“減”為雙目運(yùn)算符,“負(fù)” 為單目運(yùn)算符。 ③“*”代表兩個數(shù)相乘。 ④“/”代表兩個數(shù)相除。 ⑤“%”表示取余數(shù)運(yùn)算,又稱取模運(yùn)算。它要求兩個運(yùn)算 數(shù)都為整型數(shù)據(jù)。如:11%4=3, 35%3=2。 ⑥“++”是自增運(yùn)算符,表示加 1。 ⑦“--”是自減運(yùn)算符,表示

67、減 1。,,2.4.1 算術(shù)表達(dá)式,用算術(shù)運(yùn)算符連接起來的式子,稱為算術(shù)表達(dá)式。運(yùn)算符的優(yōu)先級:“+”(正值運(yùn)算符)、“-”(負(fù)值運(yùn)算符)、“++”、“--”優(yōu)先級最高;“*”、“/”和“%”優(yōu)先級次高;“+”(加法)、和“-”(減法)優(yōu)先級最低。可以用括號來改變運(yùn)算次序。 如:15+3*2=21,而 (15+3)*2=36。例 2-7 表達(dá)式及運(yùn)算符的優(yōu)先級,,void main( )

68、 //程序{ int i=4,j=6,k=8; int x;x=i+j-k; //結(jié)果為 2cout<<"x="<<x<<endl; //輸入 2x=i+j*k;

69、 //結(jié)果為 52cout<<"x="<<x<<endl; //輸出 52x=(i+j)*k/2; //結(jié)果為 40cout<<"x="<<x<<endl; //輸出 40

70、x=25*4/2%j; //就是 50%j=50%6,結(jié)果為 2 cout<<"x="<<x<<endl; //輸出2cout<<"x="<<(++x)<<endl; //輸出 3cout<<"x="<&

71、lt;(++x)<<endl; //輸出 4x=j*k; //結(jié)果為 48--x; //結(jié)果為 47cout<<"x="<<x<<endl; //輸出 47}

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論