全套課件·《C++程序設(shè)計簡明教程》1_第1頁
全套課件·《C++程序設(shè)計簡明教程》1_第2頁
全套課件·《C++程序設(shè)計簡明教程》1_第3頁
全套課件·《C++程序設(shè)計簡明教程》1_第4頁
全套課件·《C++程序設(shè)計簡明教程》1_第5頁
已閱讀5頁,還剩360頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C+程序設(shè)計簡明教程第1章 概述 1.1 結(jié)構(gòu)化程序設(shè)計 1.2 面向?qū)ο蟪绦蛟O(shè)計1.3 C+語言介紹 1.4 C+程序的開發(fā)環(huán)境第1節(jié) 結(jié)構(gòu)化程序設(shè)計計算機的工作用程序進行控制。程序是指令的集合。指令是計算機可以識別的命令。計算機程序語言的發(fā)展歷史1.機器語言 計算機能夠識別并直接運行2.匯編語言 用匯編指令編寫程序,經(jīng)過編譯之后才能執(zhí)行。 這兩類語言被稱為面向機器的語言。3.高級語言 面向過程的結(jié)構(gòu)化程序設(shè)計語言,重點是描述問題求解的過程、算法和方法。問題求解的常用手段是功能分解,并把分解的結(jié)果用高級語言結(jié)構(gòu)化地實現(xiàn)。 典型的高級語言有C語言、PASCAL語言和BASIC語言等。 結(jié)構(gòu)化程

2、序設(shè)計設(shè)計思路采用模塊分解與功能抽象,分而治之。自頂向下,逐步求精。程序結(jié)構(gòu)按功能劃分為若干個基本模塊,形成樹狀結(jié)構(gòu)。模塊間的關(guān)系盡可能簡單,功能上相對獨立;每一模塊內(nèi)部均是由順序、選擇和循環(huán)三種基本結(jié)構(gòu)組成。模塊化實現(xiàn)的具體方法是編寫子程序(函數(shù))。第2節(jié) 面向?qū)ο蟪绦蛟O(shè)計 結(jié)構(gòu)化程序設(shè)計的缺點 把數(shù)據(jù)和處理數(shù)據(jù)的過程人為地分離。當(dāng)數(shù)據(jù)結(jié)構(gòu)改變時,所有相關(guān)的處理過程都要進行相應(yīng)的修改。每一種相對于老問題的新方法都要帶來額外的開銷。圖形用戶界面的應(yīng)用程序,很難用過程來描述和實現(xiàn),開發(fā)和維護也都很困難。面向?qū)ο蟪绦蛟O(shè)計思想 將數(shù)據(jù)及對數(shù)據(jù)的操作方法進行封裝,作為一個有機體對象。對同類的對象抽象出

3、其共性,形成類。對象通過簡單的外部接口,與外界發(fā)生聯(lián)系。對象與對象之間通過消息進行通信。面向?qū)ο蟪绦蛟O(shè)計的優(yōu)點程序模塊之間的關(guān)系更為簡單,程序模塊的獨立性、數(shù)據(jù)的安全性有良好的保障。通過繼承與多態(tài)性,可以大大提高程序的可重用性,使得軟件的開發(fā)和維護都更為方便。對象構(gòu)成系統(tǒng)的基本單位,用來描述客觀事物的實體。對象由一組屬性和一組行為構(gòu)成。屬性:描述對象靜態(tài)特征的數(shù)據(jù)項。行為:描述對象動態(tài)特征的操作序列。類具有相同屬性和方法的一組對象的集合。為屬于該類的全部對象提供了抽象的描述,包括屬性和方法。類與對象的關(guān)系猶如模具與零件之間的關(guān)系,一個屬于某類的對象稱為該類的一個實例。封裝把對象的屬性和方法結(jié)合

4、成一個獨立的系統(tǒng)單元。盡可能隱蔽對象的內(nèi)部細節(jié)。只保留外部接口,通過它與外部發(fā)生聯(lián)系。繼承繼承對于軟件重用有著重要意義,是面向?qū)ο蟪绦蛟O(shè)計方法能夠提高軟件開發(fā)效率的重要原因之一。派生類的對象擁有基類的全部屬性與方法,稱為繼承。例如:交通工具為基類,汽車、輪船和客機便是派生類。多態(tài)性多態(tài)性是指在基類中定義的方法,被派生類繼承之后,可以表現(xiàn)出不同的行為。例如:三角形、圓形和矩形都是幾何圖形,但是它們求面積的方法顯然各不相同。第3節(jié) C+語言介紹C+是從C語言發(fā)展演變而來的,引入了類和繼承等機制,支持面向?qū)ο蟪绦蛟O(shè)計方法。1983年正式取名為C+語言。逐步完善,并于1998年被國際標準化組織(ISO

5、)批準為國際標準,正式定型。C+語言的特點全面兼容C保持了C的簡潔、高效和中級語言等特點。對C語言的語法進行了改進和擴充。是混合型編程語言。完全支持面向?qū)ο蟪绦蛟O(shè)計方法簡單的 C+程序 #include int main()/主函數(shù) coutHello!endl; coutWelcome to C+!endl; return(0);主函數(shù)輸出流對象注釋語法1函數(shù)由首部和函數(shù)體組成。2在首部定義函數(shù),函數(shù)名后面有圓括號,括號內(nèi)是函數(shù)參數(shù)。3函數(shù)體寫在花括號內(nèi),函數(shù)體一般包括數(shù)據(jù)聲明部分和執(zhí)行語句部分。4每條語句后面必須有一個分號。5. /是注釋部分??偨Y(jié)1函數(shù)是構(gòu)成C+程序的重要模塊。2一個C+

6、程序有且僅有一個main函數(shù),程序總是從main函數(shù)開始執(zhí)行。3在C+程序中一般通過向?qū)ο蟀l(fā)送消息,完成特定的任務(wù)。第4節(jié) C+程序的開發(fā)環(huán)境 Visual C+6.0是Microsoft公司推出的、使用極為廣泛的可視化程序開發(fā)工具,它提供了基于Windows平臺的C+語言集成開發(fā)環(huán)境。 Visual C+6.0環(huán)境新建工程新建文件編輯程序運行程序第2章 C+基礎(chǔ) 2.1 基本數(shù)據(jù)類型 2.2 表達式與語句 2.3 輸入與輸出2.4 選擇結(jié)構(gòu)2.5 循環(huán)結(jié)構(gòu) 2.6 復(fù)合數(shù)據(jù)類型 2.1 基本數(shù)據(jù)類型 C+預(yù)先設(shè)置了基本數(shù)據(jù)類型,分別是整型、實型、字符型和布爾型,程序員可以在程序中直接使用。在

7、基本數(shù)據(jù)類型的基礎(chǔ)上,還可以根據(jù)需要定義復(fù)合數(shù)據(jù)類型,例如數(shù)組、結(jié)構(gòu)體、共用體和枚舉類型,以表達更為復(fù)雜的數(shù)據(jù)。 數(shù)據(jù)類型指針類型空類型基本類型整型字符型實型(浮點型)布爾型單精度型雙精度型構(gòu)造類型數(shù)組類型結(jié)構(gòu)體類型共用體類型標識符標識符就是名字,它由一串字符序列構(gòu)成。其語法規(guī)則是:1.由字母、數(shù)字或者下劃線(_)組成。2.首字符必須是字母或者下劃線。例如num、b2和_a都是合法的C+標識符,3c、ye#和int都是非法的標識符。 常量 在程序運行過程中其值不能改變的量叫做常量。常量分為整型常量、實型常量和字符型常量等。整型常量有23 、-7 、036(八進制) 、0 x2d(十六進制) 、

8、5L(長整型常量) 、6U (無符號常量)等。實型常量有5.87 、3.14f(單精度) 、2e3(指數(shù)形式)等。字符型常量有a、n(轉(zhuǎn)義字符) 、”china”(字符串常量)等。布爾型常量,true和false。符號常量可以使用標識符代表一個常量,例如:#define PI 3.14 PI就稱為符號常量。還可以用關(guān)鍵字const定義符號常量。例如: const float PI=3.14; const變量必須在定義的時候立刻初始化,而且在程序執(zhí)行期間,其值不能夠被修改。 變量 在程序運行過程中其值可以改變的量叫做變量。變量對應(yīng)了內(nèi)存的一段存貯單元。變量要先定義,再使用。 變量定義語句的一般形

9、式為: 類型 變量名1,變量名2, ;整型變量 int a=17;/定義整型變量a,并賦初值long b(13467L);/定義長整型變量b,并賦初值unsigned int c,d;/定義無符號整型變量c和d 變量可以在定義時初始化。除了“=”的傳統(tǒng)方式之外,C+語言還允許用括號()為變量賦初值。整型變量的取值范圍關(guān)鍵字 取值范圍short 3276832767unsigned short065535int21474836482147483647unsigned int 04294967295 long21474836482147483647unsigned long 04294967295

10、實型變量 float a;/定義浮點型變量adouble b;/定義雙精度型變量blong double c;/定義長雙精度型變量c 實型變量的取值范圍 關(guān)鍵字 取值范圍 精度(位)float3.410 383.410 38 7double1.710 308 1.710 308 15字符型變量 char c=a;/定義字符型變量c,并初始化字符型數(shù)據(jù)按ASCII碼存儲,占一個字節(jié)。給字符變量賦值時可以賦予字符的ASCII碼。例如:char a=65的結(jié)果是a變量中存放字母A 。案例 #include main ( ) char a=a,b=b,c=c,d=65; a=a+1;b=b+2;c=c

11、+3;d=d+4; coutabcdendl; 運行結(jié)果:bdfE 常見的轉(zhuǎn)義字符 字符形式 功 能 n 換行 t 橫向跳格(即跳到下一個輸出區(qū)) v 縱向跳格 b 退格 r 光標移到當(dāng)前行開頭 f 走紙換頁 反斜杠字符“” 單引號字符 “ 雙引號字符 ddd 1到3位八進制字符。如 123表示八進制數(shù)123,即十進制數(shù)83 xhh 1到2位十六進制字符。如x21,表示十六進制數(shù)21,即十進制數(shù)33 布爾型變量 bool a=9;/a的值為trueint b=false;/b的值為0 如果將布爾型數(shù)據(jù)轉(zhuǎn)換為整型數(shù)據(jù),則true轉(zhuǎn)換為1,false轉(zhuǎn)換為0。反之,如果將整型數(shù)據(jù)轉(zhuǎn)換為布爾型數(shù)據(jù),

12、則遵循“非0為真”的原則,將非0數(shù)轉(zhuǎn)換為true,0轉(zhuǎn)換為false。 引用 類型 &引用名=變量;例如: int a=5;/定義一個整型變量a,初值為5 int &r=a;/定義一個整型引用r,是變量a的別名 引用是一個變量或者對象的別名。引用在定義的同時,必須立即初始化,即作為一個已經(jīng)定義的同類型變量的別名,而且以后不能更改。 2.2 表達式與語句表達式描述了對哪些數(shù)據(jù),以什么順序施以什么樣的操作,程序中對數(shù)據(jù)的運算是通過表達式完成的。 語句是程序構(gòu)成的最小單位,用來向計算機發(fā)出操作指令。算術(shù)運算符 C+語言的算術(shù)運算符共有5種: +(加)(減)*(乘)/(除)%(求余)。 %運算的操作數(shù)

13、必須為整數(shù)。兩個整數(shù)相除,結(jié)果仍然是整數(shù)。例如5/3=1,-9/4=-2。整型除法與實型除法是不同的。例如1/2的結(jié)果是0,而1.0/2.0的結(jié)果是0.5。 賦值運算符 變量=表達式 例如:a=8; /將8賦給變量ay=3*8+9/2;/將右邊表達式的值賦給變量y左值必須是變量復(fù)合賦值運算符在賦值運算符之前加上其它運算符,可以構(gòu)成復(fù)合賦值運算符。 -= *= /= %= (與算術(shù)運算符組合)= &= = = (與位運算符組合) 案例x+=8等價于x=x+8x*=y+5等價于x=x*(y+5)表達式a+=a-=a*a,若a的初值為5,則該表達式的求解步驟是:先進行a-=a*a的運算,相當(dāng)于a=a

14、-a*a,結(jié)果是-20,a的值也是-20;然后計算a+=-20,相當(dāng)于a=a+(-20),結(jié)果是-40。因此整個表達式的值是-40,a的值也是-40。 自增自減運算符 自增運算符使變量的值增加1,而自減運算符則使變量的值減少1。其操作數(shù)只能是變量。+i和-i是前綴運算符,i+和i-是后綴運算符。以自增運算符為例,做前綴運算時,先將變量的值增1,然后再使用它的值;做后綴運算時,先使用該變量的值,再將它的值增1。 案例 int n=3,m;執(zhí)行語句m=n+;之后,m的值是3,n的值是4;而執(zhí)行語句m=+n;之后,m的值是4,n的值也是4。 后綴運算存在計算上的延遲,即先取值,經(jīng)過延遲之后再修改變量

15、的值。 強制類型轉(zhuǎn)換運算符 (類型)(表達式)使用強制類型轉(zhuǎn)換運算符,可以把表達式的結(jié)果強行轉(zhuǎn)換為一個指定的類型。 sizeof運算符用于計算某種類型的實體在內(nèi)存中所占的字節(jié)數(shù)。例如sizeof(int)的值為4,sizeof(double)的值為8。如果a是int型變量,則sizeof(a)的值也是4。 關(guān)系運算符C+語言提供了6個關(guān)系運算符,分別是: = =b+c;/先計算a*2,值為14;然后計算b+c,值為11;最后比較,表達式的值為true abc;/先計算ab,值為true;然后計算truec,即1c,表達式的值為false 2=2=2;/先計算2=2,值為true;然后計算tru

16、e=2,即1=2,表達式的值為false邏輯運算符 C+語言提供了3個邏輯運算符:!、&和|,分別表示邏輯非、邏輯與和邏輯或運算,運算結(jié)果為邏輯值:true(真)或者false(假)。 aba & ba | b! a00001010111001011110案例 int a=2,b=1;!a; /a的值2先轉(zhuǎn)換為true,運算結(jié)果為falsea&b-1; /a的值2先轉(zhuǎn)換為true,b-1的值為0,轉(zhuǎn)換為false,運算結(jié)果為falsea|b; /a的值2先轉(zhuǎn)換為true,b的值1也轉(zhuǎn)換為true,運算結(jié)果為true構(gòu)造條件 靈活運用關(guān)系表達式和邏輯表達式,可以構(gòu)建復(fù)雜的條件,解決工程實際問題。

17、例如:1.描述321數(shù)學(xué)常識的對應(yīng)C+表達式為32&21。2.描述字符變量c的值是字母的C+表達式為c=a&c=A&c=Z。3.描述m能夠被n整除的C+表達式為m%n=0。位運算符 & 按位與 按位取反| 按位或 按位右移按位與 運算規(guī)則:0&0=0,0&1=0,1&0=0,1&1=1。 int a=211,b=150,c; c=a&b;按位或 運算規(guī)則:0|0=0,0|1=1,1|0=1,1|1=1。int a=59,b=166,c; c=a|b;按位異或 運算規(guī)則:00=0,01=1,10=1,11=0。 int a=42,b=103,c; c=ab; 按位取反 運算規(guī)則:0=1,1=0。

18、 int a=42,c; c=a;按位左移 ab,其作用是將a的補碼位全部右移b位,右移移出的二進制位全部丟棄,左邊補b個0或1。 右移n位實際上相當(dāng)于被2的n次方整除。 條件運算符 表達式1?表達式2:表達式3 運算規(guī)則是,如果表達式1的值為真,則以表達式2 的值作為條件表達式的值,否則以表達式3的值作為條件表達式的值。 例如:max=(ab)?a:b 整個表達式的值即max的值,它為a和b的最大值。 逗號運算符 表達式1 ,表達式2 , ,表達式n 逗號表達式的求解過程是:從左向右,依次計算。即先求表達式1的值,再求表達式2的值,最后求表達式n的值,整個表達式的值是表達式n的值。例如a=(

19、y=9,y+1),首先將9的值賦給y,然后計算y+1,將結(jié)果10賦給a。 數(shù)據(jù)類型轉(zhuǎn)換 數(shù)據(jù)類型的轉(zhuǎn)換可以歸納成3種轉(zhuǎn)換形式:自動轉(zhuǎn)換、強制轉(zhuǎn)換和賦值轉(zhuǎn)換。 自動轉(zhuǎn)換是在混合運算時,自動把低類型數(shù)據(jù)轉(zhuǎn)換為高類型。 強制轉(zhuǎn)換是用強制轉(zhuǎn)換運算符,把數(shù)據(jù)強行轉(zhuǎn)換為所需類型。 賦值轉(zhuǎn)換是在賦值過程中,把賦值運算符(=)右邊數(shù)據(jù)的類型自動轉(zhuǎn)換為左值的類型。 類型轉(zhuǎn)換規(guī)則 將整型轉(zhuǎn)換為浮點型時,數(shù)值不變,但以浮點數(shù)形式存儲到變量中。將實型轉(zhuǎn)換為整型時,舍棄實型數(shù)據(jù)的小數(shù)部分。短整型(short)轉(zhuǎn)換為長整型(long)時,高16位全補上符號位。長整型數(shù)據(jù)轉(zhuǎn)換為短整型,只保留低16位數(shù)據(jù),高16位數(shù)據(jù)則被丟

20、棄。無符號數(shù)據(jù)轉(zhuǎn)換為有符號類型,最高位由數(shù)值位變?yōu)榉栁?;有符號?shù)據(jù)轉(zhuǎn)換為無符號類型,則最高位由符號位變?yōu)閿?shù)值位。C+語句 C+語句可以分為簡單語句、復(fù)合語句和流程控制語句,語句以分號“;”結(jié)束。簡單語句包括表達式語句、函數(shù)調(diào)用語句和空語句。表達式語句的一般形式為:表達式;函數(shù)調(diào)用語句一般形式為:函數(shù)名(參數(shù)表); 復(fù)合語句 用一對花括號將多條邏輯上相關(guān)的語句組合在一起,在語法上相當(dāng)于一條語句。例如: t=x; x=y; y=t; 2.3 輸入與輸出C+語言采用輸入輸出流的方法解決程序的輸入輸出。C+的流(stream)是對輸入輸出的一種抽象,指的是計算機中的一系列字符(字節(jié))從一個對象流動到

21、另一個對象。C+語言用cout對象完成標準輸出,cin對象完成標準輸入。cout和cin是C+語言預(yù)定義的輸入輸出流類的對象,在使用之前,需要在程序頭部添加以下一條語句 #include coutC+標準輸出的格式是:cout表達式1表達式2表達式n;是插入運算符,與cout對象相配合,而且可以連續(xù)使用。其作用是將某個數(shù)據(jù)插入到輸出流中,最后顯示在屏幕上。例如: cout”a=”a”,b=”b變量1變量2變量n;是提取運算符,與cin對象相配合,而且可以連續(xù)使用。其作用是將某個數(shù)據(jù)從輸入流中提取出來,賦給相應(yīng)的變量。例如: cinab;常用的I/O流操縱符dec 十進制表示(默認方式)hex

22、十六進制表示oct 八進制表示setfill(char) 設(shè)置填充字符setprecision(int) 設(shè)置浮點數(shù)的精度setw(int) 設(shè)置輸出域?qū)抏ndl 換行案例例如輸出浮點數(shù)2.71828,要求輸出占6位,其中有4位有效數(shù)字,則輸出語句為: coutsetw(6)setprecision(4)2.71828endl;2.4 選擇結(jié)構(gòu)選擇結(jié)構(gòu)使得程序具有了初步的智能,可以根據(jù)條件成立與否,決定從不同的分支中選擇執(zhí)行某一分支的操作。 本節(jié)介紹if語句和switch語句。if語句if-else結(jié)構(gòu)是if語句的基本型,一般形式為: if(表達式) 語句1 else 語句2執(zhí)行流程:先計算表

23、達式的值,如果表達式的值為true,則執(zhí)行語句1;表達式的值為false,則執(zhí)行語句2。登陸界面 #include int main() const int p=123; int m; cout請輸入密碼:m; if(m=p) cout恭喜您,登陸成功!endl; else cout對不起,登陸失??!endl; return(0); 排序 #include #include int main() int a,b,t; cout請輸入兩個整數(shù):ab; if(ab) t=a; a=b; b=t; coutsetw(3)asetw(3)bendl; return(0); if語句的嵌套 if(表達式

24、1) if(表達式1_1) 語句1_1 else 語句1_2 else if(表達式2_1) 語句2_1 else 語句2_2計算分段函數(shù)的值1 #include int main() float x,y; cout請輸入x的值:x;/輸入x的值 if(x8) /判斷x是否小于8 if(x2) /判斷x是否小于2 y=2*x+1; else /x在2和8之間 y=x-3; else /x8 y=3*x-1; couty=yendl; return(0); else-if結(jié)構(gòu) if(表達式1) 語句1 else if(表達式2) 語句2 . else if(表達式n) 語句n else 語句n+

25、1計算分段函數(shù)的值2 #include int main() float x,y; cout請輸入x的值:x;/輸入x的值 if(x2) /判斷x是否小于2 y=2*x+1; else if(x8) /判斷x是否在2和8之間 y=x-3; else /前面兩個條件都不滿足 y=3*x-1; couty=yendl; return(0); else與if配對C+語言規(guī)定,從最內(nèi)層開始,else總是與其之前最近的if配對。如果想限制某個if的配對,可以采用復(fù)合語句的方式。 if(表達式1) if(表達式2) 語句1 else 語句2 switch語句switch語句可以根據(jù)表達式的值處理多個分支。

26、一般形式: switch(表達式) case 常量1:語句組1 case 常量2:語句組2 case 常量n:語句組n default: 語句組n+1 switch執(zhí)行流程先計算表達式的值,然后逐一與n個case右邊的常量比較。如果和其中某個常量相等,則從該case的冒號后面開始執(zhí)行;如果與所有case右邊的常量均不相同,則執(zhí)行default后面的語句。 考核等級 switch(g) case A: case a: cout90分100分endl; break; case B: case b: cout80分90分endl; break; case C: case c: cout70分80分e

27、ndl; break; case D: case d: cout60分70分endl; break; case E: case e: cout60分以下endl; break; default: cout輸入的等級有誤!endl; 2.5 循環(huán)結(jié)構(gòu)C+語言提供了三種循環(huán)語句,分別為while語句、do-while語句和for語句。學(xué)習(xí)循環(huán)結(jié)構(gòu)時,一定要注意循環(huán)的一些要素,例如循環(huán)體、循環(huán)初值、循環(huán)條件和循環(huán)次數(shù)等。while語句 while(表達式) 循環(huán)體求和1 #include int main() int sum=0,i=1; while(i=100)/i=100時,重復(fù)執(zhí)行如下語句 s

28、um=sum+i; /累加 i+; coutsum is sumendl; return(0); do-while語句 do 循環(huán)體 while(表達式);求和2 #include int main() int sum=0,i=1; do sum=sum+i; /累加 i+; while(i=100); coutsum is sumendl; return(0); for語句 for(表達式1;表達式2;表達式3) 循環(huán)體for語句的括號中3個表達式都可以省略,但是兩個分號不能省略。表達式1稱為初值表達式,只計算一次,用于設(shè)置初值。表達式2是循環(huán)條件,表達式3稱為修正表達式,用于修正循環(huán)條件,

29、使得最終能夠退出循環(huán)。 求和3 #include int main() int sum,i; for(i=1,sum=0;i=100;i+) sum=sum+i; /累加 coutsum is sumendl; return(0); 循環(huán)嵌套 循環(huán)嵌套是指在循環(huán)體中又包含另一個完整的循環(huán)結(jié)構(gòu)。通常把嵌套在循環(huán)體內(nèi)的循環(huán)結(jié)構(gòu)稱為內(nèi)循環(huán),把外層的循環(huán)結(jié)構(gòu)稱為外循環(huán)。例如: while() for(;) 打印九九乘法口訣表 #include #include int main() int i,j; for(i=1;i=9;i+) /控制輸出的行數(shù) for(j=1;j=i;j+)/輸出每一行的內(nèi)容 c

30、outsetw(2)j*setw(2)i=setw(2)i*j; coutendl;/每行結(jié)束后,換行 return(0); break語句break語句的作用是跳出本層結(jié)構(gòu),轉(zhuǎn)去執(zhí)行下面的語句。 for(i=1,sum=0;i3000) break; sum=sum+i; /累加 continue語句continue語句的作用是提前結(jié)束本次循環(huán),即跳過循環(huán)體中剩余的語句,執(zhí)行下一次循環(huán)。 for(i=1,sum=0;i=100;i+) if(i=50|i=80) continue; sum=sum+i; /累加 2.6 復(fù)合數(shù)據(jù)類型 結(jié)構(gòu)體類型是自定義的一種復(fù)合數(shù)據(jù)類型,主要說明數(shù)據(jù)實體的各

31、個成員及其類型。使用結(jié)構(gòu)體類型之前必須先定義,一般形式為: struct 結(jié)構(gòu)體名 成員表列 ;說明花括號內(nèi)是對該結(jié)構(gòu)體各個成員的類型聲明,其形式為:類型 成員名; 成員聲明的形式與變量定義的形式類似。結(jié)構(gòu)體類型可以用來定義變量。結(jié)尾處的分號不能省略。定義結(jié)構(gòu)體變量 1.先定義結(jié)構(gòu)體類型,再定義變量。例如: struct student s1,s2;2.在定義類型的同時定義變量。 3.省略結(jié)構(gòu)體類型名,即成為無名結(jié)構(gòu)體類型。 結(jié)構(gòu)體成員 結(jié)構(gòu)體變量.成員名 例如: s2.score=sl.score; sum=sl.score+s2.score; s2.age+; 結(jié)構(gòu)體數(shù)據(jù)的輸入和輸出 #i

32、nclude struct student long sno; char name20; char sex; float score; ; int main() student a; a.snoa.sexa.score; coutNo:a.snoendlName:endl Sex:a.sexendlScore:a.scoreendl; return(0); 共用體 union 共用體名 成員表列 ; 某時刻存在于共用體中的只有一個成員,即只有最近賦值的成員的值是有效的。 #include struct S int c1; int c2; ; union U int

33、 a; intb; S d; ; int main() U g; g.b=10; g.b=g.a+20; g.d.c1=g.a+g.b; coutg.a,g.b,g.d.c1endl; return(0); 枚舉類型 enum 枚舉類型名標識符1,標識符2,標識符n; 用枚舉方法列舉一組標識符作為枚舉類型的值,枚舉類型變量只能取該類型列舉的值。 enum colorred,yellow,blue,white,black; color c; c=red; typedef 用typedef定義新的類型,代替已有的類型。 typedef int INT; typedef并沒有創(chuàng)建新的數(shù)據(jù)類型,只是命

34、名了一個新的類型名字。其目的是降低定義復(fù)雜數(shù)據(jù)類型的難度,增加程序的可讀性和可移植性。 第3章 C+函數(shù)3.1 函數(shù)基礎(chǔ) 3.2 函數(shù)調(diào)用的方式3.3 內(nèi)聯(lián)函數(shù) 3.4 帶默認形參值的函數(shù)3.5 函數(shù)重載3.6 函數(shù)模板 3.1 函數(shù)基礎(chǔ)如果函數(shù)A調(diào)用了函數(shù)B,則約定把A稱為主調(diào)函數(shù),B稱為被調(diào)函數(shù)。 函數(shù)定義 類型 函數(shù)名(形參列表) 變量聲明語句 執(zhí)行語句 如果要向主調(diào)函數(shù)返回值,則用return語句。 return(表達式);函數(shù)原型 類型 函數(shù)名(形參列表);1.如果被調(diào)函數(shù)在主調(diào)函數(shù)之前定義,可以不必聲明。2.如果被調(diào)函數(shù)將要被多個函數(shù)調(diào)用,則可以把函數(shù)聲明語句寫在程序的開始處。3.

35、函數(shù)聲明時可以省略形參的名字,但是形參的類型不能省略。函數(shù)調(diào)用 函數(shù)名(實參列表);1.括號內(nèi)為實參。實參即實際參數(shù),表示傳遞給被調(diào)函數(shù)的一些必要數(shù)據(jù),實參之間用逗號隔開。2.如果被調(diào)函數(shù)有返回值,則函數(shù)調(diào)用表達式的值就是返回值。 計算n! #include int main() long fac(int n);/函數(shù)聲明 int n; long s; cinn; s=fac(n);/函數(shù)調(diào)用 couts=sendl; return(0); long fac(int n)/函數(shù)定義 long s; int i; for(i=1,s=1;i=n;i+) s*=i; return(s);/函數(shù)返回

36、值 參數(shù)傳遞 實參與形參個數(shù)相等,類型盡量保持一致。實參向形參傳遞數(shù)據(jù)時,從左向右,一一對應(yīng)。 函數(shù)嵌套調(diào)用 遞歸調(diào)用 在函數(shù)的函數(shù)體內(nèi)又出現(xiàn)直接或間接調(diào)用自身的語句,即函數(shù)在執(zhí)行過程中調(diào)用自己的現(xiàn)象,稱為遞歸調(diào)用。 遞歸調(diào)用計算n! #include int main() long fac(int n);/函數(shù)聲明 int n; long s; cinn; s=fac(n);/函數(shù)調(diào)用 coutn!=sendl; return(0); long fac(int n)/函數(shù)定義 long s; if(n=1) s=1; else s=n*fac(n-1);/遞歸調(diào)用 return(s);/函數(shù)

37、返回值 遞歸調(diào)用的執(zhí)行過程 3.2 函數(shù)調(diào)用的方式傳值調(diào)用 調(diào)用時把實參的值從左至右,一一傳遞給各個形參。這種傳遞是單向的,形參的值發(fā)生變化,對實參毫無影響。失敗的交換 #include int main() void swap(int a,int b);/函數(shù)聲明 int a,b; cout請輸入兩個整數(shù):ab; swap(a,b);/函數(shù)調(diào)用 couta=a,b=bendl; return(0); void swap(int a,int b)/函數(shù)定義 int t;/定義中間變量 t=a; a=b; b=t; 引用調(diào)用 #include #include void fun(int x,in

38、t &y);/y是引用 int main() int x=1,y=2; cout 函數(shù)調(diào)用之前:endl; coutx=setw(3)x,y=setw(3)yendl; fun(x,y); cout 函數(shù)調(diào)用之后:endl; coutx=setw(3)x,y=setw(3)yendl; return(0); void fun(int x,int &y) x+; y+;/修改了實參的值 cout 函數(shù)調(diào)用中:endl; coutx=setw(3)x,y=setw(3)yendl; 引用參數(shù)傳遞 成功的交換 #include int main() void swap(int &a,int &b);

39、/函數(shù)聲明 int a,b; cout請輸入兩個整數(shù):ab; swap(a,b);/函數(shù)調(diào)用 couta=a,b=bendl; return(0); void swap(int &a,int &b)/函數(shù)定義 int t;/定義中間變量 t=a; a=b; b=t; 3.3 內(nèi)聯(lián)函數(shù)內(nèi)聯(lián)函數(shù)在調(diào)用時并不發(fā)生通常的程序執(zhí)行轉(zhuǎn)移,而是把函數(shù)體插入到函數(shù)調(diào)用處。 inline 類型 函數(shù)名(形參列表) 變量聲明語句 執(zhí)行語句 案例 #include #include float get_area(float x) return x*x; int main() inline float get_are

40、a(float len);/內(nèi)聯(lián)函數(shù),計算正方形的面積 float x,area; cout請輸入正方形的邊長:x; area=get_area(x);/調(diào)用內(nèi)聯(lián)函數(shù),編譯時此處被替換為函數(shù)體的語句 cout正方形的面積是setw(4)setprecision(3)areaendl; return(0); 3.4 帶默認形參值的函數(shù)允許事先為函數(shù)的形參設(shè)置默認值,如果在調(diào)用函數(shù)時不給出實參,就會自動使用相應(yīng)的默認值來代替實參。例如: int fun(int x,int y=1); c=fun(3);/形參x的值是3,形參y的值是事先設(shè)置的默認值1 說明1.應(yīng)該從函數(shù)形參列表的最右邊開始,設(shè)置默

41、認形參值。2.如果已有函數(shù)原型,則默認形參值只能在函數(shù)聲明語句中設(shè)置。案例 #include #include float get_volume(float x=1, float y=2, float z=3); int main() cout第一次函數(shù)調(diào)用: ; cout長方體的體積是get_volume(3,4,5)endl; cout第二次函數(shù)調(diào)用: ; cout長方體的體積是get_volume(3,4)endl;/默認形參值 cout第三次函數(shù)調(diào)用: ; cout長方體的體積是get_volume(3)endl;/默認形參值 cout第四次函數(shù)調(diào)用: ; cout長方體的體積是get

42、_volume()endl;/默認形參值 return(0); float get_volume(float x, float y, float z) float v; v=x*y*z; coutx=setw(2)x y=setw(2)y z=setw(2)zendl; return(v); 3.5 函數(shù)重載允許功能相近的函數(shù)共同使用一個名字,這就是函數(shù)重載(function overload)。 int add(int x,int y); float add(float x,float y); float add(float x,float y,float z); C+編譯器根據(jù)函數(shù)之間形參

43、的類型、個數(shù)或者順序的不同,有效地區(qū)分這些函數(shù)。 說明如果只是函數(shù)返回值的類型不同,這樣的函數(shù)是無法重載的。只依靠普通形參和引用形參的差別,也是無法進行函數(shù)重載的。 如果既有默認形參值,又有函數(shù)重載,應(yīng)避免出現(xiàn)函數(shù)調(diào)用二義性的情況。例如: int add(int x,int y); int add(int x,int y,int z=1); 3.6 函數(shù)模板程序員可以為功能相近、處理過程相同的一組函數(shù),定義一個函數(shù)模板。發(fā)生實際的函數(shù)調(diào)用時,再生成具體的模板函數(shù)。 template 類型 函數(shù)名(形參列表) 變量聲明語句 執(zhí)行語句 函數(shù)模板計算兩個數(shù)之和 #include template /

44、函數(shù)模板 T add(T x,T y)/求兩數(shù)之和,T是類型參數(shù) T z; z=x+y; return(z); int main() int x1=1,y1(2); float x2=1.1,y2=2.2; cout兩個整數(shù)之和:add(x1,y1)endl; cout兩個浮點數(shù)之和:add(x2,y2)endl; cout兩個長整數(shù)之和:add(x2,y2)endl; return(0); 第4章 類與對象4.1 概述 4.2 類與對象的實現(xiàn) 4.3 對象的初始化和析構(gòu) 4.4 類的包含 4.5 類模板4.1 概述結(jié)構(gòu)化程序設(shè)計方法的基本思想是:自頂向下,逐步求精;按功能劃分為若干個模塊,模

45、塊本身還可以再做適當(dāng)分解,形成樹狀結(jié)構(gòu);模塊是單入口和單出口的,內(nèi)部都是由順序、選擇和循環(huán)三種基本控制結(jié)構(gòu)組成。 面向過程的程序的缺點可重用性和可擴充性較差,維護代價高,數(shù)據(jù)的安全性也往往得不到有效的控制。程序開發(fā)的效率難以提高,程序的規(guī)模受到限制,嚴重影響了軟件產(chǎn)業(yè)的發(fā)展。銀行業(yè)務(wù)處理系統(tǒng) 1 typedef struct ACC long acc_id; /*帳號*/ char name30; /*客戶姓名*/ float bal_mon; /*帳戶余額*/ float int_year; /*年利息*/ int acc_type; /*帳戶類型(現(xiàn)金、支票或貸款)*/ account;

46、問題結(jié)構(gòu)化程序設(shè)計方法是圍繞實現(xiàn)處理功能的過程來構(gòu)造系統(tǒng)的,然而用戶需求的變化基本上是針對功能的。用戶需求的變化往往造成系統(tǒng)結(jié)構(gòu)的較大變化,從而需要花費很大代價,才能適應(yīng)并實現(xiàn)這種變化。 假設(shè)根據(jù)業(yè)務(wù)發(fā)展的情況,需要增加公積金帳戶,重新編寫代碼,修改對操作的處理過程,顯然這會大大增加軟件維護的代價。如果銀行開通網(wǎng)上銀行業(yè)務(wù),在編寫操作過程的同時,由于要增加網(wǎng)絡(luò)數(shù)據(jù)的處理,客戶的銀行帳戶等相應(yīng)的數(shù)據(jù)結(jié)構(gòu)也必須隨之調(diào)整,這又可能會對整個系統(tǒng)的操作帶來新的影響。由于對bal_mon數(shù)據(jù)項未做訪問上的特別限制,使得帳戶余額容易從外部被修改。面向?qū)ο蟪绦蛟O(shè)計 面向?qū)ο蟪绦蛟O(shè)計的出發(fā)點和基本原則,是使開發(fā)

47、軟件的方法與過程盡可能接近人們認識世界解決問題的模式,也就是使描述問題的問題空間與解決問題的解空間,在結(jié)構(gòu)上盡可能保持一致。 面向?qū)ο蟪绦蛟O(shè)計方法是一種以對象為核心,以數(shù)據(jù)為主線,把數(shù)據(jù)和處理相結(jié)合的方法。對象是由數(shù)據(jù)和允許施加在數(shù)據(jù)上的操作所構(gòu)成的統(tǒng)一體,自身就是進行處理的主體。 面向?qū)ο蟪绦蛟O(shè)計方法對一些對象的共性加以抽象,形成類,每一個對象都屬于一個特定的類。類定義了一組數(shù)據(jù)和一組方法,數(shù)據(jù)表達對象的狀態(tài)信息,用于表示對象的靜態(tài)屬性;類中定義的方法,是允許施加于該類對象的操作,為該類對象所共享。 可以用一些簡單類的對象構(gòu)造出復(fù)雜的類,或者在原有類的基礎(chǔ)上,派生出一個新的類。派生的類除了具

48、有原有類的屬性和行為之外,還可以添加新的屬性和行為;對原有類的某些行為,也可以重新進行描述,有自己獨特的表現(xiàn)形式,即多態(tài)性。 銀行業(yè)務(wù)處理系統(tǒng) 2 class account public: void acc_dep(float m); /存款 float acc_wit(float m); /取款 bool acc_tra(account &p, float m); /轉(zhuǎn)帳 private: long acc_id; /帳號 char name30; /客戶姓名 float bal_mon; /帳戶余額 float int_year; /年利息 ; 面向?qū)ο?對象+類+消息+繼承+多態(tài)性1.

49、對象 對象是構(gòu)成系統(tǒng)的基本單位。對象由屬性和行為組成,屬性表示對象的性質(zhì),用來描述對象靜態(tài)特征的數(shù)據(jù)項,屬性值則規(guī)定了對象所有可能的狀態(tài),對象的行為是用來描述對象動態(tài)特征的操作序列。 2.類 類是具有相同的屬性和行為的一組對象的集合,是建立對象時使用的模板,對象就是類的實例。 3.消息 對象之間的這種聯(lián)系和作用是通過消息來完成的。消息就是要求某個對象執(zhí)行某種操作的規(guī)格說明,通常由以下3個部分組成:接收消息的對象名、消息名和消息參數(shù)。4.繼承 類之間的繼承關(guān)系是對現(xiàn)實世界中遺傳關(guān)系的模擬,表示類之間的內(nèi)在聯(lián)系以及對屬性和行為的共享,即派生類可以自動沿用基類的某些特征。 5.多態(tài)性 多態(tài)性是指在基

50、類中定義的行為,被派生類繼承之后,可以具有不同的表現(xiàn)形式。在面向?qū)ο蟪绦蛟O(shè)計方法中,類的多態(tài)性主要表現(xiàn)在,不同類的對象接收到同樣的消息后,產(chǎn)生不同的行為方式。 4.2 類與對象的實現(xiàn) class 類名 public: 公有成員列表; protected: 保護成員列表; private: 私有成員列表; ;class和類名構(gòu)成類的頭部。class是關(guān)鍵字,用來定義類,類名一般不能省略。包含類的主體,在其中定義類的成員。這些成員既可以是數(shù)據(jù)成員,描述類的屬性(attribute);也可以是成員函數(shù),描述類的方法(method)。public、protected和private是關(guān)鍵字,后跟冒號(

51、:),用于說明其下成員列表的訪問控制屬性。后的分號(;)表示類的定義結(jié)束,不可省略。時鐘類 class clock public: void ShowTime(void);/顯示時間 void SetTime(int h,int m,int s);/設(shè)置時間 private: int hour;/小時 int minute;/分鐘 int second;/秒 ; 類型 數(shù)據(jù)成員名; C+語言不允許在類的主體中定義數(shù)據(jù)成員時,同時進行初始化。例如以下類的定義是非法的: class clock private: int hour=0; /錯誤 ;數(shù)據(jù)成員 成員函數(shù) 1.直接將函數(shù)定義在類的主體中。

52、 class clock public: void ShowTime(void)/顯示時間 couthour”:”minute”:”secondendl; ;2.在類的主體中給出函數(shù)原型(function prototype),然后在類的外部定義成員函數(shù)。 類型 類名:成員函數(shù)名(參數(shù)表) 作用域運算符(:)指出該成員函數(shù)所屬的類。 class clock public: void ShowTime(void);/顯示時間 ; void clock:ShowTime(void) couthour”:”minute”:”second=0&h=0&m=0&s60?s:0; clock s(10,3

53、0,30);/創(chuàng)建對象并初始化說明1.構(gòu)造函數(shù)名與類名相同。2.構(gòu)造函數(shù)無返回值,不能把void寫在構(gòu)造函數(shù)名的前面,函數(shù)體中也不能出現(xiàn)return語句。3.構(gòu)造函數(shù)的訪問控制屬性必須是public??截悩?gòu)造函數(shù)拷貝構(gòu)造函數(shù)(copy constructor)是構(gòu)造函數(shù)的特例,它的作用是自動用一個已經(jīng)存在的同類對象,去初始化另一個新的對象。 語法形式為: 類名(類名 &對象名);案例 clock:clock(clock &p) hour=p.hour; minute=p.minute; second=p.second; clock s(10,30,30);/創(chuàng)建對象s,構(gòu)造函數(shù)被調(diào)用 cloc

54、k t(s);/創(chuàng)建對象t,拷貝構(gòu)造函數(shù)被調(diào)用 拷貝構(gòu)造函數(shù)調(diào)用的時機(1)創(chuàng)建對象時,用一個已存在的對象初始化該類另一個新對象。(2)函數(shù)的形參是對象,函數(shù)調(diào)用時,發(fā)生形實結(jié)合,用實參對象復(fù)制形參對象。(3)函數(shù)返回值的類型是類,函數(shù)調(diào)用結(jié)束,返回一個對象。析構(gòu)函數(shù)(destructor),這是類的一個特殊的成員函數(shù),在對象消亡前自動被調(diào)用,完成清理性工作。 其語法形式為: 類名(); clock:clock() cout”對象即將消亡”endl; 1.析構(gòu)函數(shù)名是在類名前加(按位取反符),表示它與構(gòu)造函數(shù)的作用正好相反。2.析構(gòu)函數(shù)沒有返回值,沒有參數(shù),也不允許重載,即一個類僅有一個析構(gòu)函

55、數(shù)。4.4 類的包含類包含了其它類的對象作為自己的數(shù)據(jù)成員,包含了對象成員的類稱為組合類。 class circle private: point p;/對象成員 ; 組合類的初始化 類名:類名(參數(shù)總表):對象成員1(參數(shù)表),對象成員2(參數(shù)表) 說明初始化時,先按照對象成員在組合類中定義的順序,依次調(diào)用對象成員的構(gòu)造函數(shù),最后調(diào)用組合類的構(gòu)造函數(shù)。析構(gòu)函數(shù)的調(diào)用順序與構(gòu)造函數(shù)正好相反。4.5 類模板類模板允許為類定義一種模式,使得類中的某些數(shù)據(jù)成員、某些成員函數(shù)的參數(shù)或者返回值,能取任意數(shù)據(jù)類型。任意數(shù)據(jù)類型包括基本數(shù)據(jù)類型,以及用戶自定義的構(gòu)造類型等。 語法形式 template cl

56、ass 類名 ;說明1.類模板中數(shù)據(jù)成員的類型、成員函數(shù)參數(shù)的類型以及返回值的類型,可以是模板參數(shù)表中的類型參數(shù)。2.定義類模板的成員函數(shù)時,也必須加上模板參數(shù)表,與函數(shù)模板的形式類似。例如: template T A : fun1(T x) 類模板代表著一個類的集合。在使用時給出模板實參表,由類模板生成一個實際的模板類,再創(chuàng)建對象。其語法形式為: 類名 對象1,對象2例如: A b1,b2 C+將模板實參表中的參數(shù),與類模板定義時模板參數(shù)表中的參數(shù)一一對應(yīng),生成一個模板類,然后創(chuàng)建該類的對象。第5章 數(shù)組與指針5.1 數(shù)組5.2 指針5.3 字符串5.4 動態(tài)內(nèi)存分配 5.5 C+程序的結(jié)構(gòu)

57、 5.1 數(shù)組數(shù)組是具有相同類型的相關(guān)數(shù)據(jù)的集合。 一維數(shù)組是數(shù)組的基礎(chǔ),定義方式是: 類型 數(shù)組名常量表達式; 例如: int a5;定義了一個長度為5的整型數(shù)組a,它有5個元素,一個元素相當(dāng)于一個普通的變量,每個元素可以存放一個整型數(shù)據(jù)。 數(shù)組的初始化 對數(shù)組的全體元素賦初值,例如: int a5=1,2,3,4,5;初始化列表中的數(shù)據(jù)與數(shù)組的元素一一對應(yīng)。對數(shù)組的部分元素賦初值,例如: int a5=1,2,3; 數(shù)組a的前三個元素依次賦以初值1、2和3。剩余沒有賦初值的元素都自動賦以0。 元素 數(shù)組元素的引用形式是: 數(shù)組名下標 例如: int a5=1,2,3,4,5; a4=a0*

58、a2-3*a1; 下標從0開始,實際上是數(shù)組元素的序號,表示元素在數(shù)組中的相對位置。數(shù)組的元素在內(nèi)存中按順序存放。 輸入10個整數(shù),再反向輸出。 #include #include int main() int a10,i; for(i=0;iai;/輸入數(shù)據(jù)存入數(shù)組 for(i=9;i=0;i-) coutsetw(3)ai;/從數(shù)組輸出數(shù)據(jù) coutendl; return(0); 數(shù)組作形參函數(shù)形參為數(shù)組,其長度可以省略,但是數(shù)組的類型必須與實參數(shù)組的類型嚴格一致。函數(shù)調(diào)用時,數(shù)組名作為函數(shù)的實參。發(fā)生函數(shù)調(diào)用時,把數(shù)組名作為實參傳遞給形參數(shù)組,這兩個數(shù)組各自的元素在內(nèi)存共占同一段空間。

59、因此對形參數(shù)組元素值的修改,也同步影響著實參數(shù)組相對應(yīng)的元素。二維數(shù)組二維數(shù)組的定義方式是: 類型 數(shù)組名常量表達式常量表達式;例如: int a22; 表示定義了一個2行2列的二維整型數(shù)組a。通常形象地把二維數(shù)組的第一個下標稱為行下標,第二個下標稱為列下標,它們均從0開始。 二維數(shù)組的元素在內(nèi)存中按行順序存放。 二維數(shù)組的初始化 對數(shù)組的全體元素賦初值,例如: int a22=1,2,3,4; int a22=1,2,3,4;對數(shù)組的部分元素賦初值,例如: int a2=1,2; 數(shù)組a的a00和a10兩個元素分別被賦以初值1和2。計算兩個33矩陣的和 #include #include c

60、onst int n=3; int main() int ann,bnn,cnn,i,j; cout請輸入第一個矩陣:endl; for(i=0;in;i+) for(j=0;jaij;/輸入第一個矩陣 cout請輸入第二個矩陣:endl; for(i=0;in;i+) for(j=0;jbij;/輸入第二個矩陣 for(i=0;in;i+) for(j=0;jn;j+) cij=aij+bij;/矩陣求和 for(i=0;in;i+) for(j=0;jn;j+) coutsetw(4)cij; coutendl;/輸出一行數(shù)據(jù) return(0); 對象數(shù)組 對象數(shù)組的定義方式是: 類名

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論