譚浩強版《C++程序設計》知識點_第1頁
譚浩強版《C++程序設計》知識點_第2頁
譚浩強版《C++程序設計》知識點_第3頁
譚浩強版《C++程序設計》知識點_第4頁
譚浩強版《C++程序設計》知識點_第5頁
已閱讀5頁,還剩4頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

譚浩強版《C++程序設計》知識點譚浩強版《C++程序設計》知識點譚浩強版《C++程序設計》知識點資料僅供參考文件編號:2022年4月譚浩強版《C++程序設計》知識點版本號:A修改號:1頁次:1.0審核:批準:發布日期:第1章C++的初步知識*C和C++語言屬于計算機高級語言,支持面向過程的程序設計方法。*C++兼容C,是C的加強版,增加了面向對象(OOP)機制。*用高級語言編寫的程序稱作源程序,C++源程序的擴展名為CPP,C源程序的擴展名為C。*源程序被編譯或解釋為機器語言方可執行。C和C++均采用編譯方式,源程序經編譯、連接后形成機器語言的目標程序文件。*用戶最終執行的是目標程序文件,它是二進制可執行文件,擴展名為EXE。*執行目標程序與源程序無關,但是,要修改目標程序,必須先修改源程序,然后,重新編譯、連接,產生新的目標程序或覆蓋原目標程序。C和C++均支持模塊化程序設計,C以函數為基本模塊,C++增加了類模塊。*C和C++均支持結構化程序設計,有三種基本結構:順序、分支、循環。*每個C或C++源程序可由若干個文件組成,程序總是從主函數main開始執行,因此,每個源程序有且僅有一個主函數。*C和C++區分字母的大小寫。*C和C++語句以分號結尾,僅有分號的語句稱作空語句。*表達式后綴分號稱作表達式語句。*用花括號{}括起來的一組語句統稱復合語句。復合語句可省略其后分號,但復合語句內的語句不可省略分號(除非它也是復合語句)。*C的注釋以/*開頭,結束于*/,可跨行。C++增加了以/100.”是保留x的2位小數。*賦值運算的格式和功能如下:格式:變量=表達式功能:把賦值號“=”右側表達式的值賦給左側的變量,并以左側變量為整個賦值表達式的值。*如果賦值號兩側的類型不一致,右側表達式的值將被自動轉換為左側變量的類型。轉換規則與強制類型轉換相同。*在C和C++中,□=□☉

等價于□☉=

其中,□是同一個變量,

是表達式,☉=稱作復合(或組合)賦值運算符,☉是下述運算符之一:+、-、*、/、%、>>、<<、&、^、|*用逗號分隔(或者說連接起來)的一組表達式統稱逗號表達式。格式:表達式,…,表達式功能:從左至右依次計算逗號表達式中各表達式的值,并以最后一個表達式的值的作為整個逗號表達式的值。*將數學式改為C表達式時應注意:①乘號*不可省略;②正確改寫角碼、運算符、括號等;③正確書寫函數名;④把握好運算優先級,分數線改為/時,分子、分母相應加括號;⑤正確拆分不等式組;⑥通常,整數除法應改用實數除法。第3章程序設計初步*賦值表達式后綴分號稱作賦值語句。*頭文件、iostream、iomanip均提供了cin、cout等C++標準輸入輸出流對象,它們的格式和功能如下:格式cout<<表達式…<<表達式;功能從右至左依次計算各表達式,然后,從左至右依次輸出各表達式的值。格式cin>>變量…>>變量;功能把輸入數據從左至右依次賦給各變量。<<稱作輸出運算,如果其后的表達式中有比它優先級低的運算,應適當加括號。>>稱作輸入運算。輸入數據間用空格、回車鍵分隔,并用回車鍵確認所輸入數據。頭文件提供了許多用于實現特殊輸入和輸出格式的所謂控制符(參見表,它內嵌了頭文件iostream。*頭文件iostream和均提供了putchar、getchar、printf、scanf等輸入輸出函數。putchar和getchar的格式和功能如下:格式putchar(表達式)功能輸出以指定表達式的值為ASCII碼的字符,并自動追加一個回車符。格式getchar()功能輸入一個字符,并以該字符為函數值(字符型)。注意:getchar可提取空格及回車、Tab等控制字符,只提取輸入中相應位置上一個字符,因此,輸入字符間無須分隔,否則也被視為輸入字符。printf函數的格式和功能如下:格式printf(格式控制串,輸出表列)功能①從右至左依次計算輸出表列中各表達式;②從左至右依次輸出格式控制串中的字符,其中,%引導的格式控制符由輸出表列中相應表達式的值所取代。輸出表列是一組用逗號分隔的表達式(又稱輸出項,可以為0項)。格式控制串可以是表達式,其中,格式符用于控制輸出表列中相應表達式的輸出格式(參見第04講:程序設計初步)。scanf函數的格式和功能如下:格式scanf(格式控制串,地址表列)功能①從右至左依次計算地址表列中各表達式的值;②從標準輸入設備提取數據,并從左至右依次存儲到所指定的存儲單元。格式控制串可以是表達式。地址表列是一組用逗號分隔的地址,可用是表達式,常用形式為:&變量其中&是地址運算符,它表示取其后變量的起始存儲地址。scanf可提取空格以及回車、Tab等部分控制字符,但必須以字符提取(而非字符串)。scanf函數格式符與printf函數的格式符的功能相似(參見第04講:程序設計初步)。scanf的合法格式符不分大小寫、實型格式符均等效。*在C和C++中,邏輯值均為整數,真即1,假即0。高版本C++中新增了邏輯類型bool,它只有1和0這兩個1字節整數,可分別表為true和false。字符和數作為邏輯量時,非0即真。指針作為邏輯量時,非空即真。邏輯運算如下表所示:右元!右元左元右元左元&&右元左元||右元假(0)1假(0)假(0)00真(非0)0假(0)真(非0)01真(非0)假(0)01真(非0)真(非0)11*關系式的值為邏輯值。*對于形如□||□||…的邏輯式,從左至右計算□的邏輯值,遇真即止。*對于形如□&&□&&…的邏輯式,從左至右計算□的邏輯值,遇假即止。*if語句的格式和功能如下:格式if(條件)語句1else語句2功能如果條件成立,執行語句1,否則執行語句2。如果語句2為空語句,可同else一起省略。注意:else不可獨立使用,它與其前最近一個尚未配對的if配對,為避免岐義,通常只在else中嵌套if語句。*條件表達式的格式和功能如下:格式條件表達式1:表達式2功能如果條件成立,取表達式1的值,否則取表達式2的值。條件表達式可以嵌套,:與其前最近一個尚未配對的配對。*掌握目前所學運算的優先級(見附錄B)。switch語句的格式和功能如下:格式switch(表達式){ … case常量i:語句組i … default:語句組n+1}功能如果表達式的值等于常量i,則從語句組i開始執行,否則執行語句組n+1。switch()中表達式的值必須是整數(可以是字符或邏輯值),“default:語句組n+1”可缺省,每個語句組稱作一個分支。為使各分支獨立,通常以break、return、exit等語句結尾。*break語句的格式和功能如下:格式break;功能結束本層switch語句或本層循環語句。*while語句的格式和功能如下:格式while(表達式)循環體功能當表達式的值為真時,重復執行其后循環體。循環體是循環語句的內嵌語句,可以是空或復合語句(下同)。*do-while語句的格式和功能如下:格式do循環體while(表達式)功能重復執行循環體,直到表達式的值為假。*for語句的格式和功能如下:格式for(表達式1;表達式2;表達式3)循環體功能①計算表達式1;②當表達式2的值為真時,重復執行循環體和計算表達式3。表達式1、表達式2、表達式3均可缺省,但保留分號。缺省表達式2為永真。*continue語句的格式和功能如下:格式continue;功能跳過本層循環體中剩余語句。掌握以下算法:計算分段函數、打印字符圖形、遞推(迭代)、累加、階乘、輾轉相除法、窮舉(枚舉)、判斷素數、分解整數因子、分解數字。*分段函數的一般形式為:if(條件1)f=算式1;elseif(條件2)f=算式2;……elseif(條件n-1)f=算式n-1;elsef=算式n;或:f=條件1式1:條件2式2:…:條件n-1式n-1:式n分支結構的一般格式:if(條件1)操作1;elseif(條件2)操作2;……elseif(條件n-1)操作n-1;elsef=操作n;*輸出實心字符圖形的一般格式為:for(i=1;i<=行數;i++){ for(j=1;j<=第i行前置空格數;j++)cout<<''; for(j=1;j<=第i行字符數;j++)輸出所用字符 cout<<endl;//結束第i行}如果某問題已表述為“當

時重復執行□”,即可用下述語句實現:while(

)□如果某問題已表述為“對于i=a~b重復執行□”,即可用下述語句實現:for(i=a;i<=b;i++)□或for(i=b;i>=a;i--)□如果某問題已表述為“i從a開始,當

時重復執行□”,即可用下述語句實現:for(i=a;

;i++)□對于已知項數和通項的累加,通用格式為:和的類型S=0;for(i=1;i<=項數;i++)S+=第i項;對于已知通項和結束條件的累加,通用格式為:和的類型S=0;for(i=1;!結束條件;i++)S+=第i項;對于已知項數和各項遞推式的累加,通用格式為:和的類型S=0,T=初始項;for(i=1;i<=項數;i++) S+=T, 推下項T;對于已知結束條件和各項遞推式的累加,通用格式為:和的類型S=0,T=初始項;for(i=1;!結束條件;i++) S+=T, 推下項T;*輾轉相除法的要點:當b=0時,a和b的最大公約數是a,否則轉換為求b和a%b的最大公約數。窮舉法又稱枚舉法,它是在有限或可列集中搜索滿足條件的解。窮舉法的要點:①確定解的搜索范圍,并按某種規律排序(盡可能不重復);②確定所滿足的條件,并在上述搜索范圍內求解。注意:應適當利用條件縮小搜索范圍,或縮小搜索范圍以減少條件。*對于2以上的整數n,n是素數2~中沒有n的因子。對于正整數n,分解整數因子的過程為:i從2開始,當i是n的因子時,去除n中1重i因子(n/=i),否則i++,直到n=1為止。*對于非負整數n,n的個位數=n%10,n的十位數=n/10%10,n的百位數=n/100%10,一般地,n的10k位數=n/10k%10。第4章函數*從用戶使用角度看,函數分為系統函數和用戶自定義函數。*自定義函數的格式為:格式函數值的數據類型函數名(形參表){函數體}其中,函數值的默認數據類型為int,形參要逐個定義數據類型。*如果函數沒有返回值,函數值的數據類型應定義為void。*return語句的格式和功能為:格式一return表達式;或return(表達式);格式二return;功能結束函數,返回調用者。格式一帶返回值,其數據類型與函數值的類型必須相同或兼容,兼容時,返回值被自動轉換為函數值的類型。格式二沒有返回值,函數值類型應定義為void。*函數一般調用格式為:格式函數名(實參表)其中,實參按從右至左的次序計算,并傳遞給相應形參。*函數參數的傳遞方式分為傳值和引用。對于前綴&的形參,它與對應實參共用內存,稱作引用(C++方有此功能)。對于未前綴&的形參,它與對應實參不共用內存,僅傳值。*對于無參函數,實參表和形參表的括號仍不可缺省。*如果函數調用在其定義之前,調用前應作相應聲明,聲明格式為:格式函數值類型名函數名(形參表);其中,形參可省略,但形參的類型不可省略。*函數不可嵌套定義(函數定義中嵌套定義其它函數),但允許嵌套調用(函數定義中調用其它函數或自身)。*在函數的定義中直接或間接調用自身,稱作函數的遞歸調用,簡稱遞歸。遞歸有三大要點:①遞歸條件(或回歸條件);②非遞歸操作(回歸操作);③遞歸操作。*遞歸函數的核心結構為:結構一if(回歸條件)回歸操作else遞歸操作結構二if(遞歸條件)遞歸操作else回歸操作C語言要求,函數中定義變量、數據結構的語句必須在其它語句之前。C++沒有此限制。*變量的屬性分為:①數據類型;②作用域;③存儲類別;④存在期。*函數形參及函數或復合語句內定義的變量稱作局部變量,它從定義處生效,只在該函數或復合語句內有效。因此,不同函數或復合語句中的局部變量可以同名,但同名不同義。*在所有函數之外定義的變量稱作全局變量,從定義處生效。對于函數,之前定義的全局變量均稱作外部變量。對于復合語句,之前定義的全局變量和同一函數中之前定義的局部變量均稱作外部變量。*如果局部變量與外部變量同名,則同名外部變量被屏蔽。*局部變量的存儲類別分為:動態(auto,又稱自動)、靜態(static)、寄存器(register)。*局部變量存儲類別的定義格式為:格式存儲類別數據類型局部變量表;其中,存儲類別和數據類型的位置可交換,默認存儲類別為auto,默認數據類型為int,但不能同時缺省。*auto型局部變量占用動態數據區,當函數調用結束時釋放所占內存。register占用CPU中的寄存器,但寄存器不夠用時,占用動態數據區。*全局變量和static型局部變量占用靜態數據區,默認初值為相應數據類型的0。*static型局部變量的定義和初值化只執行一次,即使離開其作用域也不釋放所占內存。定義全局變量時,如果加前綴static,稱作內部全局變量,不能被其它文件調用,否則,稱作外部全局變量,允許其它文件調用。使用其它文件中定義的外部全局變量,需作extern聲明。定義函數時,如果加前綴static,稱作內部函數,不能被其它文件調用,否則,稱作外部函數,允許其它文件調用。使用其它文件中定義的外部函數,需作extern聲明。*預處理命令在程序編譯前執行,其主要功能是“文本置換”。每個宏定義必須獨占一行。預處理不是語句,不可隨意跟分號。*不帶參數宏定義的格式和功能如下:格式#define宏名文本功能在預處理時,將程序中之后出現的這個宏名均用指定的文本置換。帶參數的宏定義的格式和功能如下:定義格式#define宏名(形參表)文本使用格式宏名(實參表)功能在預處理時,將程序中之后出現的這個帶參數的宏均用指定文本置換,其中,形參被相應的實參直接置換(實際上是兩次置換)。形參沒有類型的概念,沒有函數值的概念,對實參不作運算。終止宏定義的格式為:#undef宏名允許重新定義宏所代表的文本,新定義只作用于其后的宏名。“文件包含”處理(加載文件命令)格式一#include<文件名>格式二#include"文件名"功能把指定文件加載到此處。如果沒有指定文件路徑,前種格式直接到存放C頭文件的目錄中查找,后種格式先在程序文件所在目錄中查找,如果未找著,方到存放C頭文件的目錄中查找。條件編譯命令的格式和功能如下:

格式一#ifdef宏名程序段1#else程序段2#endif格式二#ifndef宏名程序段1#else程序段2#endif格式三#if常量表達式程序段1#else程序段2#endif功能如果指定的宏名已定義(格式一)、宏名未定義(格式二)、條件為真(格式三),保留程序段1,否則保留程序段2。最終,整個程序段僅剩程序段1或程序段2。當程序段2為空時,#else可省略。格式三中的條件必須是常量式。第5章數組*定義數組語句的一般格式和功能為:格式數據類型數組名[第1維長度]…[第n維長度]功能為數組分配相應大小的連續內存,用于依次存儲數組元素,并將起始地址賦給數組名。*數組的各維長度必須是常量(表達式),其整數位有效(不作四舍五入)。數組的起始地址又稱基址。把基址賦給數組名是在分配內存時由系統完成的,之后不允許修改。*數組元素又稱下標變量,下標變量的使用格式為:格式數組名[第1維下標]…[第n維下標]*各維下標均從0開始,可用表達式表示,其值的整數位有效(不作四舍五入)。下標變量按低維優先順序存儲,對于二維數組又稱行優先。*下標變量的使用與普通變量基本相同。數組也有全局和局部之分,局部數組也有存儲類別。C和C++編譯系統不檢測下標越界,越界則順延至數組所申請的存儲空間之外(危險)。*定義數組的同時可對其元素賦初值。格式數據類型數組名[第1維長度]…[第n維長度]={數據表}功能定義數組的同時將數據表中數據依次賦給數組元素,未賦值元素的初值為相應數據類型的0。*數據表中允許嵌套數據表,最大嵌套層數不得超過數組維數。數據表和內嵌數據表必須非空,不能“超長”——不允許賦給越界下標變量。*對數組賦初值時,可省略第1維長度,如果省略,其值為恰好存下數據表所需長度。*以字符為數據元素的數組稱作字符數組。字符數組可用字符串初始化。*對字符串和字符數組可以作輸出輸入等整體操作,這些操作要求有結束標志'\0'。*字符串和字符數組的整體輸入語句有:格式cin>>字符地址變量表達式或scanf("%s",字符地址變量表達式)功能把讀入字符依次存儲到從指定地址開始的內存中,并自動追加結束標志。讀入時,遇到空格、回車、Tab鍵等數據分隔符結束。*字符串和字符數組的整體輸出語句有:格式cout<<字符地址表達式或printf("%s",字符地址表達式)功能從指定地址開始依次輸出字符,直至結束標志。原則上,字符數組不要求有結束標志,因此,要相應附加結束標志,方可作整體操作,否則,操作將順延至字符數組之外。*掌握常見的字符串函數。格式功能頭文件strcat(串1,串2)將串2復制、連接到串1的第一個'\0'處。strcpy(串1,串2)將串2復制到串1。strcmp(串1,串2)比較串1和串2的大小。strlen(串)求字符串的長度。了解字符串類string。*掌握冒泡排序、選擇排序,了解插入排序、折半查找等。第6章指針*內存的基本單位是字節,每個字節都有相應的編號,稱作地址。*對任意變量x,&x稱作變量x的指針,變量x的數據類型稱作&x的基類型,此&稱作取地址運算。*變量的指針簡稱變量指針,它以該變量的基址(變量所占內存的起始地址)為值(而非該變量的值),又稱指向變量的指針。變量指針不是單純的地址,它蘊涵著基類型(所指向變量的類型)。*作為單目運算,&是取地址運算,只能作用于變量(包括常變量)。*變量指針不是變量,它所指向變量可表為:*指針其中,*稱作指向運算。*指針也是一種數據類型,其類型名為:基類型名**在中,每個指針占4字節內存。在C和低版本C++中,每個指針占2字節內存。*用于存儲指針的變量稱作指針變量。指針變量的定義格式為:存儲方式基類型*指針變量其中,基類型是指針變量擬指向變量的數據類型,*表示其后的變量是一個指針變量,它不是變量名的組成部

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論