《C++程序設(shè)計(jì)》完整教案_第1頁
《C++程序設(shè)計(jì)》完整教案_第2頁
《C++程序設(shè)計(jì)》完整教案_第3頁
《C++程序設(shè)計(jì)》完整教案_第4頁
《C++程序設(shè)計(jì)》完整教案_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C+程序設(shè)計(jì)教案蔡勇智講師授課時(shí)間:2010年3月2010年7月課程性質(zhì):專業(yè)必修課課程類別:講授課+實(shí)訓(xùn)課授課對(duì)象:08級(jí)電子商務(wù)專業(yè)課時(shí)數(shù):周4教學(xué)目的:通過本課程的學(xué)習(xí),使學(xué)生理解面向?qū)ο蟪绦蛟O(shè)計(jì)思想,掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念和技術(shù)。使學(xué)生深刻理解面向?qū)ο蠹夹g(shù)所帶來的觀念改革,掌握一種面向?qū)ο蟪绦蛟O(shè)計(jì)語言和面向?qū)ο笤O(shè)計(jì)的思維方式、規(guī)則與基本方法,了解面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)的發(fā)展趨勢(shì)。通過面向?qū)ο笏季S的訓(xùn)練,使學(xué)生逐漸掌握現(xiàn)代編程能力,為今后的軟件開發(fā)和各種信息處理打下良好的基礎(chǔ)。教學(xué)方法:本課程以以下兩種教學(xué)方法為主:1理論課堂教學(xué)使用多媒體輔助教學(xué)手段,并采用可視化的編程工具用于課

2、程學(xué)習(xí)和編程。2實(shí)驗(yàn)教學(xué)結(jié)合理論教學(xué)實(shí)際情況,布置合適比例的概念理解題和綜合設(shè)計(jì)題,使學(xué)生在掌握面向?qū)ο蟾拍?、鞏固知識(shí)的同時(shí),提高綜合設(shè)計(jì)和處理實(shí)際問題的能力。教學(xué)內(nèi)容:第一章面向?qū)ο蟪绦蛟O(shè)計(jì)概述第二章C+程序設(shè)計(jì)基礎(chǔ)第三章函數(shù)第四章數(shù)組AA*7TZ第五章結(jié)構(gòu)體與共用體AtA-、.*第六章指針與引用教學(xué)重難點(diǎn):重難點(diǎn)在于采用面向?qū)ο蟮挠^點(diǎn)分析問題、解決問題,以及培養(yǎng)學(xué)生結(jié)合實(shí)際應(yīng)用,采用面向?qū)ο蟮乃枷朐O(shè)計(jì)有效的算法和可視化編程實(shí)現(xiàn)能力??己朔绞剑浩綍r(shí)考勤、作業(yè)占30%,期末考試占70%。使用教材:C+程序設(shè)計(jì)鄧振杰主編第1章C+概述本章課時(shí):4課時(shí)本章重點(diǎn):C+的基本結(jié)構(gòu)C+的上機(jī)實(shí)現(xiàn)本章難點(diǎn)

3、:C+的上機(jī)實(shí)現(xiàn)教學(xué)內(nèi)容及教學(xué)目標(biāo):了解:1傳統(tǒng)程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì)的區(qū)別2.C+的發(fā)展3面向?qū)ο蟪绦蛟O(shè)計(jì)語言理解:面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn)熟悉VC+6.0集成開發(fā)環(huán)境掌握:C+的特點(diǎn)C+程序結(jié)構(gòu)和書寫規(guī)則第一節(jié)面向?qū)ο蟪绦蛟O(shè)計(jì)基本概念:對(duì)象在面向?qū)ο蟪绦蛟O(shè)計(jì)中,對(duì)象是由對(duì)象名、一組屬性數(shù)據(jù)和一組操作封裝在一起構(gòu)成的實(shí)體。其中屬性數(shù)據(jù)是對(duì)象固有特征的描述,操作是對(duì)這些屬性數(shù)據(jù)施加的動(dòng)態(tài)行為,是一系列的實(shí)現(xiàn)步驟,通常稱之為方法。2.類在面向?qū)ο蟪绦蛟O(shè)計(jì)中,類是具有相同屬性數(shù)據(jù)和操作的對(duì)象的集合,它是對(duì)一類對(duì)象的抽象描述。類是創(chuàng)建對(duì)象的模板,它包含著所創(chuàng)建對(duì)象的狀態(tài)描述和方法的定義,一般是先聲

4、明類,再由類創(chuàng)建其對(duì)象。按照這個(gè)模板創(chuàng)建的一個(gè)個(gè)具體的實(shí)例,就是對(duì)象。屬性對(duì)象中的數(shù)據(jù)稱為對(duì)象的屬性,而類中的特性稱為類的屬性,不同的類和對(duì)象具有不同的屬性。消息在面向?qū)ο蟪绦蛟O(shè)計(jì)中,當(dāng)要求一個(gè)對(duì)象做某一操作時(shí),就向該對(duì)象發(fā)出請(qǐng)求,通常稱為“消息”。當(dāng)對(duì)象接收到消息時(shí),就調(diào)用有關(guān)方法,執(zhí)行相應(yīng)操作。這種對(duì)象與對(duì)象之間通過消息進(jìn)行相互聯(lián)系的機(jī)制,就叫做消息傳遞機(jī)制,通過消息傳遞可實(shí)現(xiàn)對(duì)象的交互。方法方法就是對(duì)象所能執(zhí)行的操作。方法包括接口和方法體兩部分。方法的接口就是消息的模式,它告訴用戶如何調(diào)用該方法;方法體則是實(shí)現(xiàn)操作的一系列步驟,也就是一段程序代碼。傳統(tǒng)程序設(shè)計(jì)及其局限性:傳統(tǒng)程序設(shè)計(jì)開發(fā)

5、軟件的生產(chǎn)效率低下傳統(tǒng)程序設(shè)計(jì)難以應(yīng)付龐大的信息量和多樣的信息類型傳統(tǒng)程序設(shè)計(jì)難以適應(yīng)各種新環(huán)境面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn):1.封裝性封裝是一種數(shù)據(jù)隱藏技術(shù),在面向?qū)ο蟪绦蛟O(shè)計(jì)中可以把數(shù)據(jù)和與數(shù)據(jù)有關(guān)的操作集中在一起形成類,將類的一部分屬性和操作隱藏起來,不讓用戶訪問,另一部分作為類的外部接口,用戶可以訪問。繼承性在面向?qū)ο蟪绦蛟O(shè)計(jì)中,繼承是指新建的類從已有的類那里獲得已有的屬性和操作。已有的類稱為基類或父類,繼承基類而產(chǎn)生的新建類稱為基類的子類或派生類。多態(tài)性多態(tài)性是指相同的函數(shù)名可以有多個(gè)不同的函數(shù)體,即一個(gè)函數(shù)名可以對(duì)應(yīng)多個(gè)不同的實(shí)現(xiàn)部分。在調(diào)用同一函數(shù)時(shí),由于環(huán)境的不同,可能引發(fā)不同的行為

6、,導(dǎo)致不同的動(dòng)作,這種功能稱為多態(tài)。它使得類中具有相似功能的不同函數(shù)可以使用同一個(gè)函數(shù)名。第二節(jié)C+的發(fā)展1980年,美國AT&T公司貝爾實(shí)驗(yàn)室的BjarneStioustrup博士為了仿真課題研究,編寫了稱為“帶類的C”語言版本。1983年7月用C+將該語言名字定下來,并對(duì)外公開發(fā)表。Microsoft公司于20世紀(jì)80年代中期在MicrosoftC6.0的基礎(chǔ)上開發(fā)了MicrosoftC/C+7.0,同時(shí)引進(jìn)了MicrosoftFoundationClass(MFC)1.0版本,完善了源代碼。后來Microsoft公司推出了MicrosoftC/C+8.0,即VisualC+1.0版本,之

7、后又推出了VisualC+2.0和VisualC+4.0版本。伴隨Windows98操作系統(tǒng)的發(fā)布,Microsoft公司又隆重推出了VisualC+6.0C+的特點(diǎn):C+全面兼容C語言,許多C語言代碼不經(jīng)修改就可以在C+中使用。用C+編寫的程序可讀性更好,代碼結(jié)構(gòu)更為合理。生成代碼質(zhì)量高,運(yùn)行效率僅比匯編語言慢10%20%。從開發(fā)時(shí)間、費(fèi)用到形成軟件的可重用性、可擴(kuò)充性、可維護(hù)性和可靠性等方面有很大提高,使得大中型軟件開發(fā)變得容易很多。支持面向?qū)ο蟪绦蛟O(shè)計(jì),可方便地構(gòu)造出模擬現(xiàn)實(shí)問題的實(shí)體和操作。第三節(jié)C+程序的基本結(jié)構(gòu)【例1.1】一個(gè)簡(jiǎn)單的C+程序。#includevoidsayhello

8、();voidmain()sayhello();/在顯示器上輸出顯示一行字符串coutThisismyfirstC+program!endl;/函數(shù)定義voidsayhello()coutHello!#include文件名.擴(kuò)展名函數(shù)C+的程序是由若干個(gè)文件組成,每個(gè)文件又由若干個(gè)函數(shù)組成。函數(shù)之間是相互獨(dú)立的,相互之間可以調(diào)用。但函數(shù)在調(diào)用之前,必須先定義。C+的程序中的函數(shù)可分為兩大類,一類是用戶自己定義的函數(shù),另一類是系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù)。使用系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù)時(shí),可以直接調(diào)用,但需要將該函數(shù)的頭文件包含在該程序中。主函數(shù)在組成C+程序的若干個(gè)函數(shù)中,必須有一個(gè)且只能有一個(gè)主函數(shù)main(

9、)。執(zhí)行程序時(shí),系統(tǒng)先從主函數(shù)開始運(yùn)行,其他函數(shù)只能被主函數(shù)調(diào)用或通過主函數(shù)調(diào)用的函數(shù)所調(diào)用,函數(shù)可以嵌套調(diào)用。注釋第一種注釋方法是以“/*”開始,以“*/”結(jié)束,二者之間的所有字符都會(huì)被作為注釋處理,此時(shí)的注釋可以是一行,也可以是多行,適合于大塊的注釋。第二種注釋方法是以“/”表示注釋開始,本行中“/”后面的字符都會(huì)被作為注釋處理,這種注釋方式多用于較短的程序注釋。輸入/輸出輸入/輸出語句是C+最基本的語句。綜上所述,一個(gè)C+程序的基本結(jié)構(gòu)應(yīng)該包括以“#”開頭的若干個(gè)預(yù)處理命令,將程序所需要的頭文件包含進(jìn)來;然后定義主函數(shù)和其他函數(shù),當(dāng)然函數(shù)也可以在程序的起始部分先利用函數(shù)要包括各種語句和注

10、釋,這部分是程序的主體部分,所占比重也最大。C+程序的書寫格式:C+程序的書寫格式與C程序書寫格式基本相同。原則如下:一般情況下一行只寫一條語句。短語句可以一行寫多條,長(zhǎng)語句也可以分成多行來寫。分行原則是不能將一個(gè)單詞分開,用雙引號(hào)括起來的字符串最好也不要分開。C+程序書寫時(shí)要盡量提高可讀性。為此,采用適當(dāng)?shù)乜s進(jìn)格式書寫程序是非常必要的,表示同一類內(nèi)容或同一層次的語句要對(duì)齊。C+程序中大括號(hào)使用較多,其書寫方法也較多,建議用戶要養(yǎng)成使用大括號(hào)的固定風(fēng)格。例如,每個(gè)大括號(hào)占一行,并與使用大括號(hào)的語句對(duì)齊,大括號(hào)內(nèi)的語句采用縮進(jìn)兩個(gè)字符的格式書寫。第四節(jié)VisualC+6.0集成開發(fā)環(huán)境Visua

11、lC+6.0是微軟公司開發(fā)的可視化的C+集成開發(fā)環(huán)境。它集程序代碼的編輯、編譯、連接、調(diào)試等功能為一體,界面友好,用戶操作方便。-廿1天中女TC二遼岡菜單欄標(biāo)準(zhǔn)工具欄工作區(qū)窗口文片BHSTBAIHftTflBQHbinitwsuhi;“比詢?nèi)腙H個(gè)整鼬clnxj)i;n=jdri(w-f);c#uiUIK.efl41tn0;:口旺州巳!;冃油1砂ttiwlidie-UniaddfintaPintb);intEuiinilirat3rgc:pchijr*|AInnhlm-mrnrrJ|trirl-CenflQiirationiEsum-Vln3?Debuq-亠J1Linking-.suai.ii-

12、HP-0KKjr(ET咀yarningfs)Ifh編譯萱找交件1重找交件111廠Ln5.C4)I1RJEAOil函霖Nd定義imtaddfintjfpint也編譯工源程序輸出窗口1菜單欄標(biāo)準(zhǔn)工具欄工作區(qū)窗口源程序編輯窗口編譯工具欄6輸出窗口編輯、編譯和運(yùn)行程序:源程序編輯編譯Hello.cpp有錯(cuò)誤目標(biāo)程序可執(zhí)行程序結(jié)果連接運(yùn)行Hello.objHello.exe無錯(cuò)誤編輯編輯是將寫好的C+源程序輸入到計(jì)算機(jī)中,生成磁盤文件的過程。默認(rèn)文件擴(kuò)展名為*.cpp。編譯編輯好的源程序必須經(jīng)過編譯,計(jì)算機(jī)才能執(zhí)行,這些二進(jìn)制代碼稱為目標(biāo)代碼。將這些目標(biāo)代碼以.obj為擴(kuò)展名保存成目標(biāo)程序文件。連接編譯

13、后生成的目標(biāo)代碼還不能直接在計(jì)算機(jī)上運(yùn)行,其主要原因是編譯器對(duì)每個(gè)源程序文件分別進(jìn)行編譯,如果一個(gè)程序有多個(gè)源程序文件,編譯后這些源程序文件還分布在不同的地方。因此,需要把它們連接在一起,生成可以在計(jì)算機(jī)上運(yùn)行的可執(zhí)行文件。運(yùn)行可執(zhí)行文件可以在Windows環(huán)境下直接雙擊運(yùn)行,也可以在VisualC+6.0的集成開發(fā)環(huán)境下運(yùn)行。在生成可執(zhí)行文件之前,一定要改正編譯和連接時(shí)出現(xiàn)的致命錯(cuò)誤和警告錯(cuò)誤,這樣才能保證運(yùn)行結(jié)果是正確的。參照教材練習(xí)C+程序的上機(jī)實(shí)現(xiàn)過程。利用Debug調(diào)試功能調(diào)試程序:VisualC+6.0集成開發(fā)環(huán)境為我們提供了輔助調(diào)試工具,可以實(shí)現(xiàn)單步運(yùn)行、設(shè)置斷點(diǎn)、觀察變量和表達(dá)

14、式的值等功能,使我們可以跟蹤程序的執(zhí)行過程,觀察不同時(shí)刻變量值的變化情況。所謂斷點(diǎn)就是程序運(yùn)行時(shí)的暫停點(diǎn),程序運(yùn)行到斷點(diǎn)處便暫停,這樣就可以通過觀察斷點(diǎn)處變量的值來了解程序的執(zhí)行過程。參照教材練習(xí)利用Debug調(diào)試程序的過程。作業(yè)教材P18-19所有習(xí)題。第2章C+程序設(shè)計(jì)基礎(chǔ)本章課時(shí):16課時(shí)本章重點(diǎn):運(yùn)算符與表達(dá)式控制語句本章難點(diǎn):控制語句教學(xué)內(nèi)容及目標(biāo):了解:1為什么會(huì)有三種基本的程序控制結(jié)構(gòu)C+的基本數(shù)據(jù)類型理解:程序控制結(jié)構(gòu)的控制方式:順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)C+的運(yùn)算符、關(guān)鍵字、標(biāo)識(shí)符和分隔符、常量和變量語法規(guī)則轉(zhuǎn)向語句的使用表達(dá)式中數(shù)據(jù)類型的轉(zhuǎn)換規(guī)則掌握:選擇控制的使用:if

15、語句,switch語句循環(huán)控制結(jié)構(gòu)的使用:while語句,do_while語句,for語句,循環(huán)的嵌套判斷表達(dá)式的使用第一節(jié)詞法符號(hào)標(biāo)識(shí)符:標(biāo)識(shí)符是程序員為命名程序中的一些實(shí)體而定義的專用單詞。常見的有函數(shù)名,類名、變量名、常量名、對(duì)象名等。C+語言中標(biāo)識(shí)符的命名規(guī)則如下:標(biāo)識(shí)符是由英文字母(包括大寫和小寫)、數(shù)字和下劃線組成,并且以字母和下劃線開始,例如:Abe、X1、_x1、desk都是合法的標(biāo)識(shí)符,而2A是非法的。標(biāo)識(shí)符中大寫和小寫字母是有區(qū)別的。標(biāo)識(shí)符的長(zhǎng)度是任意的,但有的編譯系統(tǒng)僅識(shí)別前32個(gè)字符。標(biāo)識(shí)符不能和C+語言的關(guān)鍵字同名。關(guān)鍵字:關(guān)鍵字是一種有特殊用途的詞法符號(hào),是C+系統(tǒng)

16、預(yù)定義的保留字,不能再用作其他用途。卜面列舉一些C+語言中常用的關(guān)鍵字:autobreakboolcasecharcatchclassConstcontinuedefaultdeletedodoubleelseEnumexplicitexportexternfalsefloatforfriendgotoifinlineintlongnewMutablenamespaceoperatorprivateprotectedpublicregisterreturnshortsignedsizeofStaticatructswitchthistypedeftrueunionunsignedtypenam

17、evoidusingvirtualvolatilewhilestatic_cast運(yùn)算符:運(yùn)算符是C+語言實(shí)現(xiàn)各種運(yùn)算的符號(hào),如+、一、*、/等。運(yùn)算符根據(jù)操作對(duì)象個(gè)數(shù)的不同,可以分為單目運(yùn)算符、雙目運(yùn)算符和三目運(yùn)算符。單目運(yùn)算符又稱一元運(yùn)算符,它只對(duì)一個(gè)操作數(shù)進(jìn)行操作。例如,求負(fù)運(yùn)算符、邏輯求反運(yùn)算符!等。雙目運(yùn)算符又稱二元運(yùn)算符,它可以對(duì)兩個(gè)操作數(shù)進(jìn)行操作。例如,加法運(yùn)算符+、乘法運(yùn)算符*等。三目運(yùn)算符又稱三元運(yùn)算符,它可以對(duì)三個(gè)操作數(shù)進(jìn)行操作。C+語言中只有一個(gè)三目運(yùn)算符,就是條件運(yùn)算符?:。分隔符:分隔符又稱標(biāo)點(diǎn)符號(hào),是用來分隔單詞或程序正文的,它可以表示某個(gè)程序?qū)嶓w的結(jié)束和另一個(gè)程序

18、實(shí)體的開始。在C+語言中,常用的分隔符有以下幾個(gè):(1)空格符:常用來作為單詞與單詞之間的分隔符。逗號(hào):用來作為多個(gè)變量之間的分隔符,或用來作為函數(shù)多個(gè)參數(shù)之間的分隔符。分號(hào):用來作為for循環(huán)語句中for關(guān)鍵字后面括號(hào)中三個(gè)表達(dá)式的分隔符,或用作語句結(jié)束的標(biāo)志。冒號(hào):用來作為語句標(biāo)號(hào)與語句之間的分隔符,或switch語句中關(guān)鍵字casev整型常量與語句序列之間的分隔符。第二節(jié)基本數(shù)據(jù)類型C+語言的數(shù)據(jù)類型是十分豐富的,大致可分為基本數(shù)據(jù)類型和非基本數(shù)據(jù)類型?;緮?shù)據(jù)類型包括整型、字符型、浮點(diǎn)型和布爾型。非基本數(shù)據(jù)類型主要包括數(shù)組類型、結(jié)構(gòu)體類型、共用體類型、指針類型和空類型等,如圖2-1所示

19、。數(shù)據(jù)類型決定了數(shù)據(jù)在內(nèi)存中所占的空間大小,也確定了其表示范圍。各種基本數(shù)據(jù)類型的長(zhǎng)度和取值范圍見表2-1?;菊停╥nt)整型短整型(short)I長(zhǎng)整型(long)字符型F基本數(shù)據(jù)類型(f單精度型(float)浮點(diǎn)型I雙精度型(double)數(shù)據(jù)類型布爾型(bool)-數(shù)組類型構(gòu)造數(shù)據(jù)類型:結(jié)構(gòu)體類型-共用體類型第三節(jié)常量與變量常量:1整型常量整型常量即整型常數(shù),可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制3種形式來表示。十進(jìn)制整型常量不能以0開始。例如,234、-67為合法的十進(jìn)制整型常量。八進(jìn)制整型常量以0為前綴。例如,0134、-076為合法的八進(jìn)制整型常量。十六進(jìn)制整型常量以0X或0 x為前綴

20、。例如,0 x2F、0 xA3B4為合法的十六進(jìn)制整型常量。注意:整型常量中的長(zhǎng)整型用L或1作后綴表示。例如,324L、076L等;整型常量中的無符號(hào)型用U或u作后綴表示。例如,431U、0 x34DU等。2浮點(diǎn)型常量浮點(diǎn)型常量又稱實(shí)型常量,是由整數(shù)部分和小數(shù)部分組成的,只能用十進(jìn)制表示。浮點(diǎn)型常量有兩種表示方法:小數(shù)表示法和科學(xué)計(jì)數(shù)法。小數(shù)表示法:是由符號(hào)、數(shù)字和小數(shù)點(diǎn)組成。例如,9.55、.25等??茖W(xué)計(jì)數(shù)法:是用指數(shù)形式來表示浮點(diǎn)型常量,即在小數(shù)表示法后面加上E或e表示指數(shù)。例如,3.2E-5,7e10,-34.5e2等。3字符常量C+中有兩種字符常量,即一般字符常量和轉(zhuǎn)義字符常量。一般

21、字符常量:一對(duì)單引號(hào)括起來的一個(gè)字符,其值為ASCII碼值。例如,a、A、$、5等都是合法的字符常量。轉(zhuǎn)義字符轉(zhuǎn)義字符是一個(gè)以“”開頭的特定字符,表示其后的字符具有特殊意義。例如,n中的n不是代表字符n,而是代表回車換行的意思。常用的轉(zhuǎn)義字符見表2-2。字符形式ASCII碼值功能00 x00NULLa0 x07響鈴b0 x08退格(Backspace鍵)t0 x09水平制表(Tab鍵)f0 x0c走紙換頁n0 x0a回車換行v0 x0b垂直制表r0 x0d回車(不換行)0 x5c字符“”0 x27單引號(hào)”0 x22雙引號(hào)?0 x3f問號(hào)ddd0ddd13位八進(jìn)制數(shù)所代表的字符xhh0 xhh1

22、2位十六進(jìn)制數(shù)所代表的字符表2-2C+中常用的轉(zhuǎn)義字符4字符串常量字符串常量是用一對(duì)雙引號(hào)括起來的字符序列。例如,a、123、hello等都是字符串常量。這些字符在內(nèi)存中連續(xù)存儲(chǔ),并在最后加上字符0作為字符串結(jié)束的標(biāo)志。例如,字符串“HELLO”在內(nèi)存中占連續(xù)6個(gè)內(nèi)存單元,存放示意圖如圖2-2所示。HELL|O0圖2-2字符串HELLO在內(nèi)存中的存放示意圖字符常量是用單引號(hào)括起來的一個(gè)字符。它在內(nèi)存中只占一個(gè)字節(jié)。所以,x和x是不同的。注意:不能將一個(gè)字符串常量賦給字符常量。例如,語句charc=abc是錯(cuò)誤的。5邏輯常量在C+程序設(shè)計(jì)中經(jīng)常會(huì)用到兩個(gè)邏輯值(也稱布爾值)0和1,邏輯值“0”代

23、表“假”、“不成立”、“false”等,邏輯值“1”代表“真”、“成立”、“true”等。6符號(hào)常量在C+中,可以用一個(gè)標(biāo)識(shí)符來表示一個(gè)常數(shù),這個(gè)標(biāo)識(shí)符就是符號(hào)常量。使用符號(hào)常量可以增加程序的可讀性和可維護(hù)性。C+語言提供了兩種定義符號(hào)常量的方法:用const語句定義符號(hào)常量一般格式為:const數(shù)據(jù)類型符號(hào)常量=表達(dá)式;例如:constdoublepi=3.1415926;注意:在定義符號(hào)常量時(shí)必須進(jìn)行初始化用#define語句定義符號(hào)常量#define是預(yù)處理指令,缺點(diǎn)是不能顯示聲明常量的類型。其一般格式為:#define常量名常量值例如:#definepi3.1415926變量:變量是指

24、在程序運(yùn)行過程中其值可以改變的量。C+語言中使用變量前,必須先對(duì)它的數(shù)據(jù)類型進(jìn)行說明,以便編譯程序?yàn)樽兞糠峙浯鎯?chǔ)空間。1變量的命名變量的命名要遵循C+語言中標(biāo)識(shí)符的命名規(guī)定2變量的定義變量定義的一般格式為:數(shù)據(jù)類型變量1,變量2,;其中數(shù)據(jù)類型可以是前面講過的各種數(shù)據(jù)類型,它決定了變量在內(nèi)存中所占的存儲(chǔ)單元數(shù)。例如:intx,y,z;定義了3個(gè)整型變量x、y、zfloata,b,c;/定義了3個(gè)實(shí)型變量a、b、c3變量與初始化可以在聲明變量的同時(shí)賦初值:例如:intx=10,y=20+a;例如:intx(10);也可以先定義變量,后賦值。例如:intx1,y1;x1=10;y1=20;注意:不

25、能連續(xù)賦值。如:inta=b=c=5;是錯(cuò)誤的。但可以分別賦值。在同一個(gè)程序塊中,不能有兩個(gè)相同的變量名。變量賦值時(shí),等號(hào)左右兩邊類型要匹配。表達(dá)式是由運(yùn)算符和各種運(yùn)算對(duì)象(常數(shù)、變量、常量等,也稱操作數(shù))組合而成。在C+程序中,表達(dá)式與我們?cè)跀?shù)學(xué)中學(xué)到的類似,是用于計(jì)算的式子,是計(jì)算求值的基本單位。C+語言定義了豐富的運(yùn)算符。運(yùn)算符給出計(jì)算的類型,而參與運(yùn)算的數(shù)據(jù)叫操作數(shù)。按運(yùn)算符的運(yùn)算性質(zhì)又可分為算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符等。使用運(yùn)算符時(shí),要注意以下幾點(diǎn):運(yùn)算符的功能。如加、減、乘、除等。與操作數(shù)的關(guān)系,注意操作數(shù)的個(gè)數(shù)和類型。運(yùn)算符的優(yōu)先級(jí)別。運(yùn)算符的結(jié)合性。第四節(jié)運(yùn)算符和表達(dá)式

26、表2-3C+中常用運(yùn)算符的優(yōu)先級(jí)、功能和結(jié)合性優(yōu)先級(jí)運(yùn)算符功能說明要求操作數(shù)的個(gè)數(shù)結(jié)合性1()改變優(yōu)先級(jí)左結(jié)士合左結(jié)口:作用域運(yùn)算符數(shù)組下標(biāo)運(yùn)算符一成員選擇*成員指針選擇2*指針運(yùn)算符1-右合右結(jié)口&取地址sizeof求內(nèi)存字節(jié)數(shù)!邏輯求反按位求反+-增1、減1運(yùn)算符+-取正、取負(fù)運(yùn)算符3*/%乘法、除法、取余2左結(jié)士合左結(jié)口4+-加法、減法2左結(jié)士合左結(jié)口5左移位、右移位2左結(jié)士合左結(jié)口6=小于、大于、小于等于、大于等于2左結(jié)士合左結(jié)口表2-3C+中常用運(yùn)算符的優(yōu)先級(jí)、功能和結(jié)合性(續(xù)表)優(yōu)先級(jí)運(yùn)算符功能說明要求操作數(shù)的個(gè)數(shù)結(jié)合性7=!=等于、不等于2左結(jié)士合左結(jié)口8&按位與2左結(jié)士合左結(jié)口

27、9A按位異或2左結(jié)士合左結(jié)口10|按位或2左結(jié)士合左結(jié)口11&邏輯與2左結(jié)士合左結(jié)口12II邏輯或2左結(jié)士合左結(jié)口13?:條件運(yùn)算符3-右合右結(jié)口14/=%=&=A=I=賦值運(yùn)算符2-右合右結(jié)口15逗號(hào)運(yùn)算符左結(jié)士合左結(jié)口1基本算術(shù)運(yùn)算符與算術(shù)表達(dá)式基本算術(shù)運(yùn)算符有:+(取正或加)、(取負(fù)或減)、*(乘)、(除)、%(取余)。其中+(取正)、(取負(fù))是單目運(yùn)算符,其余是雙目運(yùn)算符。上述運(yùn)算符與其在數(shù)學(xué)中的意義、優(yōu)先級(jí)、結(jié)合性基本相同,即先進(jìn)行乘法、除法和求余運(yùn)算,優(yōu)先級(jí)相同,后執(zhí)行加法和減法運(yùn)算,優(yōu)先級(jí)相同。注意:要求取余運(yùn)算符(%)的兩個(gè)操作數(shù)必須是整數(shù)或字符型數(shù)據(jù)。算術(shù)表達(dá)式是由算術(shù)運(yùn)算符

28、與操作數(shù)組成的,其表達(dá)式的值是一個(gè)數(shù)值,表達(dá)式的類型由運(yùn)算符和操作數(shù)共同確定。【例2.1】基本算術(shù)表達(dá)式的計(jì)算。#includevoidmain()inti=4,j=5,k=6;intx;x=i+j-k;coutx=xendl;/輸出x=3x=(i+j)*k/2;coutx=xendl;/輸出x=27x=25*4/2%k;coutx=xendl;/輸出x=2doubley=2.5;couty=y-(y+0.5)*2endl;/輸出y=-3.5運(yùn)行程序后,輸出結(jié)果為:x=3x=27x=2y=-3.52增1、減1運(yùn)算符及表達(dá)式增1、減1運(yùn)算符都是單目運(yùn)算符,這兩個(gè)運(yùn)算符都有前置和后置兩種形式。前置

29、形式是指運(yùn)算符在操作數(shù)的前面,后置是指運(yùn)算符在操作數(shù)的后面。例如:i+;/+后置j;/前置(1)增1、減1運(yùn)算符只能用于變量,不能用于常量和表達(dá)式。增1、減1運(yùn)算符的結(jié)合方向是自右向左,如表達(dá)式-i+中運(yùn)算符“-”和“+”優(yōu)先級(jí)相同,結(jié)合方向是自右向左,即表達(dá)式可以理解為-(i+)。增1、減1運(yùn)算符在很多情況下的使用可能會(huì)出現(xiàn)歧異,從而產(chǎn)生意想不到的結(jié)果?!纠?.2】增1、減1表達(dá)式的計(jì)算。#includevoidmain()inti,j,k,m,n;i=4;j=i+;couti=itj=jendl;i=4;k=+i;couti=itk=kendl;i=4;m=i-;couti=itm=men

30、dl;i=4;n=-i;couti=itn=nendl;運(yùn)行程序后,輸出結(jié)果為:i=5j=4i=5k=5i=3j=4i=3k=3關(guān)系運(yùn)算符:關(guān)系運(yùn)算符用于比較兩個(gè)操作數(shù)的大小,其比較的結(jié)果是一個(gè)布爾型的值。當(dāng)兩個(gè)操作數(shù)滿足關(guān)系運(yùn)算符指定的關(guān)系時(shí),表達(dá)式的值為true,否則為false。在C+語言中,關(guān)系運(yùn)算符都是雙目運(yùn)算符,共6個(gè):(小于)、(大于)、=(大于或等于)、=(等于)、!=(不等于)。其中前4種的優(yōu)先級(jí)高于后2種。C+語言中雖然有布爾類型,但它仍然繼承了C語言的規(guī)定,true等于1,false等于0。所以,關(guān)系運(yùn)算符的比較結(jié)果可以作為算術(shù)運(yùn)算中的操作數(shù)。例如:表達(dá)式2=3的結(jié)果為0

31、(false)。在使用關(guān)系運(yùn)算符時(shí)還應(yīng)注意以下幾點(diǎn):不要把關(guān)系運(yùn)算符“=”誤用為賦值運(yùn)算符“=”。也不要將不等于運(yùn)算符“!=”寫成其他語言中的不等于運(yùn)算符“”。(2)a=60的意思是a的ASCII碼值與60比較大小。對(duì)于數(shù)學(xué)中表示“x大于等于5,且x小于等于20”的數(shù)學(xué)關(guān)系式5WxW20,正確的表達(dá)式應(yīng)該是:5=x&x=20關(guān)系表達(dá)式是由關(guān)系運(yùn)算符和操作數(shù)組成,表達(dá)式的值都是1(true)或0(false)o經(jīng)常出現(xiàn)在條件語句和循環(huán)語句中,用于決定問題的執(zhí)行方法?!纠?.3】關(guān)系表達(dá)式的計(jì)算。#includevoidmain()inti=4,j=5;coutj)endl;cout=j)endl

32、;cout(ij)endl;cout(i=j)endl;cout(i=j)endl;cout(i!=j)endl;運(yùn)行程序后,輸出結(jié)果為:001101return邏輯運(yùn)算符與邏輯表達(dá)式:1邏輯運(yùn)算符邏輯運(yùn)算符共有3個(gè):1個(gè)單目運(yùn)算符!(邏輯求反),2個(gè)雙目運(yùn)算符&(邏輯與)和|(邏輯或)。在三個(gè)運(yùn)算符中,邏輯非的優(yōu)先級(jí)最高,邏輯與次之,邏輯或最低。關(guān)系運(yùn)算和邏輯運(yùn)算的結(jié)果若為真,其值為1;若為假,其值為0。aba&b|allb表2-3邏輯值的邏輯運(yùn)算結(jié)果2邏輯表達(dá)式邏輯表達(dá)式由邏輯運(yùn)算符與操作數(shù)組成,表達(dá)式的值都應(yīng)是1(true)或0(false)?!纠?.4】邏輯表達(dá)式與關(guān)系表達(dá)式的計(jì)算#i

33、ncludevoidmain()輸出z=1,表示true輸出z=0,表示false輸出z=0,表示falseintx=3,y=5,z;z=(x0)|(y10);coutz=zendl;z=(x=0)&(y10);coutz=zendl;z=!(x=3);coutz=zendl;賦值運(yùn)算符:C+中的賦值運(yùn)算符分為兩種:簡(jiǎn)單賦值運(yùn)算符和復(fù)合賦值運(yùn)算符1簡(jiǎn)單賦值運(yùn)算符“=”其表達(dá)式的一般形式為:變量=表達(dá)式2復(fù)合賦值運(yùn)算符如果以#表示數(shù)值型運(yùn)算符,則復(fù)合賦值表達(dá)式的一般形式為變量#=表達(dá)式該表達(dá)式等價(jià)于:變量=變量#表達(dá)式例如:a+=5m%=7等價(jià)于a=a+5等價(jià)于m=m%7復(fù)合賦值運(yùn)算符的優(yōu)先級(jí)和

34、賦值運(yùn)算符相同,結(jié)合性也相同,都為右結(jié)合。3賦值表達(dá)式賦值表達(dá)式由賦值運(yùn)算符與操作數(shù)組成。賦值表達(dá)式的作用就是把賦值運(yùn)算符右邊表達(dá)式的值賦給左邊的變量。賦值表達(dá)式的類型為左邊變量的類型,其值為賦值后左邊變量的值。在C+語言中還可以連續(xù)賦值?!纠?.5】賦值表達(dá)式的應(yīng)用。#includevoidmain()intm=3,n=4,k;k=m+-n;coutk=kendl;charx=m,y=n;intz;z=yx;coutz=zendl;z=(y=x+1);coutz=zendl;z=(y!=Y);coutz=zendl;inta=1,b=3,c=5;a+=b*=c-=2;couta=a,b=b,

35、c=cb?a:b2逗號(hào)運(yùn)算符由逗號(hào)運(yùn)算符構(gòu)成的表達(dá)式稱為逗號(hào)表達(dá)式,其一般形式為:表達(dá)式1,表達(dá)式2,,表達(dá)式n逗號(hào)表達(dá)式的執(zhí)行規(guī)則是從左到右,逐個(gè)表達(dá)式執(zhí)行,最后一個(gè)表達(dá)式的值是該逗號(hào)表達(dá)式的值。注意:逗號(hào)運(yùn)算符“,”的優(yōu)先級(jí)最低。例如,表達(dá)式“a=3,a+l,a*a”的結(jié)果為9。表達(dá)式中數(shù)據(jù)類型的轉(zhuǎn)換:1.隱含轉(zhuǎn)換當(dāng)操作數(shù)的類型不一致時(shí),表達(dá)式的類型就取決于操作數(shù)中類型最高的操作數(shù)類型,C+語言將自動(dòng)進(jìn)行類型轉(zhuǎn)換,隱含轉(zhuǎn)換的示意圖如圖2-3所示,其轉(zhuǎn)換規(guī)則如下:注意:隱含轉(zhuǎn)換是由編譯系統(tǒng)自動(dòng)完成的,它實(shí)際并不改變操作數(shù)的數(shù)據(jù)類型,只是在計(jì)算表達(dá)式值時(shí),臨時(shí)改變操作數(shù)的數(shù)據(jù)類型,計(jì)算完成后,

36、操作數(shù)仍保持原有的數(shù)據(jù)類型。2.強(qiáng)制轉(zhuǎn)換強(qiáng)制轉(zhuǎn)換的作用是將表達(dá)式的類型強(qiáng)制轉(zhuǎn)換成指定的數(shù)據(jù)類型。其一般形式為:數(shù)據(jù)類型(表達(dá)式)或(數(shù)據(jù)類型)表達(dá)式例如:double(a)/將a強(qiáng)制轉(zhuǎn)換成double型float(5%3)/將5%3的結(jié)果轉(zhuǎn)換成float型注意:如果將高類型轉(zhuǎn)換成低類型,會(huì)造成數(shù)據(jù)精度的損失。因此,這是一種不安全的類型轉(zhuǎn)換。第五節(jié)控制語句C+語句概述:1表達(dá)式語句表達(dá)式語句是由一個(gè)表達(dá)式加上分號(hào)組成。例如:inti;/將i聲明為整型變量的語句a=3*4+5;/賦值語句2復(fù)合語句復(fù)合語句也稱塊語句,是由兩條或兩條以上的語句組成,并用“”括起來的語句。復(fù)合語句在語法上相當(dāng)于一條語句

37、。注意:在復(fù)合語句的右括號(hào)后不再需要分號(hào)。3控制語句控制語句通常包括選擇語句、循環(huán)語句和轉(zhuǎn)移語句。4空語句語句空語句只有一個(gè)分號(hào),它不作任何操作,常用在需要一條語句而又不需要任何操作的地方,如循環(huán)語句中。選擇語句:1if語句if語句用來有條件地執(zhí)行某一語句系列。if語句主要有3種語法格式:簡(jiǎn)單if語句格式:if(表達(dá)式)語句;功能:首先計(jì)算表達(dá)式的值,如果表達(dá)式的值不為0,表示條件判定為真,花括號(hào)內(nèi)的語句將被執(zhí)行;否則,將執(zhí)行后面的語句。其中的表達(dá)式一般是關(guān)系表達(dá)式,并且表達(dá)式必須用()括起來。語句可以是一條語句,也可以是多條語句。如果只有一條語句,則可以省略?!纠?.7】簡(jiǎn)單if語句的應(yīng)用。

38、#includevoidmain()floatscore;coutPleaseenteryourscore:score;if(score=60)coutPassed!endl;if(score60)coutNopassed!endl;coutYoushoulddoyourbesttostudyendl;運(yùn)行程序后,屏幕上輸出顯示:Pleaseenteryourscore:提示用戶輸入成績(jī),當(dāng)用戶輸入成績(jī)信息后,程序會(huì)根據(jù)用戶的輸入,輸出顯示相應(yīng)的信息。如輸入70,則顯示:Passed!(2)兩分支if語句格式:if(表達(dá)式)語句1;else語句2;功能:首先計(jì)算表達(dá)式的值,如果表達(dá)式條件判定為

39、真,則執(zhí)行語句1,否則將執(zhí)行語句2。該格式的流程圖如圖2-5所示?!纠?.8】利用兩分支if語句改寫例2.7。#includevoidmain()floatscore;coutPleaseenteryourscore:score;if(score=60)coutPassed!endl;elsecoutNopassed!endl;coutYoushoulddoyourbesttostudyendl;(3)多分支if語句格式:if(表達(dá)式1)elseif(表達(dá)式2)elseif(表達(dá)式3)elseif(表達(dá)式n)else功能:首先計(jì)算表達(dá)式1的值,如果表達(dá)式1條件判定為真,則執(zhí)行語句1,否則判定表

40、達(dá)式2,如果條件判定為真,則執(zhí)行語句2,依此類推,直到所有的表達(dá)式條件均不滿足,此時(shí)將執(zhí)行語句n+1。該格式實(shí)際上提供了多重條件選擇。該格式的流程圖如圖2-6所示。【例2.9】利用多分支if語句比較兩個(gè)數(shù)的大小。#includevoidmain()intx,y;coutPleaseinputx,y:xy;if(x=y)coutx=yy)coutyendl;elsecoutxyendl;程序執(zhí)行后,屏幕上輸出顯示:Pleaseinputx,y:計(jì)算機(jī)提示用戶輸入兩個(gè)x和y的值。當(dāng)用戶輸入后,計(jì)算機(jī)將顯示相應(yīng)的判斷結(jié)果。例如,輸入1和2后將顯示“xvy”的判斷結(jié)果。if語句的嵌套三種if語句之間可

41、以實(shí)現(xiàn)嵌套。通常為了不破壞程序的可讀性,嵌套的層次一般不超過兩層?!纠?.10】利用if語句的嵌套改寫例2.9。#includevoidmain()intx,y;coutPleaseinputx,y:xy;if(x!=y)if(xy)coutyendl;elsecoutxyendl;elsecoutx=yendl;2switch語句switch語句又稱開關(guān)語句,其語法格式為:switch(表達(dá)式M)case常量表達(dá)式Ml:語句1;case常量表達(dá)式M2:語句2;IIIcase常量表達(dá)式Mn:語句n;default:語句Mn+1;其中,switch、case和default是關(guān)鍵字,常量表達(dá)式通

42、常為整型數(shù)值和字符常量,語句1、語句2、語句n是由1條或多條語句組成的語句段,也可以是空語句。如果是多條語句,可以用花括號(hào)括起來。switch語句的執(zhí)行過程是:首先計(jì)算switch語句中的表達(dá)式,然后按先后順序?qū)⒌玫降慕Y(jié)果與case中的常量表達(dá)式的值進(jìn)行比較。如果兩者相等,程序就轉(zhuǎn)到相應(yīng)case處開始順序執(zhí)行。如果沒有找到相匹配的結(jié)果,就從default處開始執(zhí)行。如果沒有default,則轉(zhuǎn)到switch語句后面的語句。如果希望switch語句在執(zhí)行完某一case后面的語句后,不再執(zhí)行其后面的case和default分支,就需要在每個(gè)case的末尾加上一條break語句,表示跳出switch

43、語句。加break語句的switch語句流程圖如圖2-7所示。圖2-7switch語句【例2.11】根據(jù)考試成績(jī)的等級(jí)給出百分制分?jǐn)?shù)段。#includevoidmain()chargrade;coutvv請(qǐng)輸入成績(jī):vvendl;cingrade;if(grade=a&gradev=z)grade-=32;/若輸入小寫字母,則轉(zhuǎn)化為大寫字母switch(grade)caseA:cout90100endl;caseB:cout8089endl;caseC:cout7079endl;caseD:cout6069endl;caseE:cout60分以下endl;default:coutInputer

44、ror!endl;運(yùn)行程序后,屏幕上將顯示字符串“請(qǐng)輸入成績(jī):”。假設(shè)輸入B后,將輸出結(jié)果:80897079606960分以下Inputerror!顯然,這樣的輸出結(jié)果是不符合題目原意的,原因就在于沒有用break語句作為每個(gè)case的結(jié)束語句?,F(xiàn)修改例2.11程序如下:switch(grade)caseA:cout90100endl;break;caseB:cout8089endl;break;caseC:cout7079endl;break;caseD:cout6069endl;break;caseE:cout60分以下endl;break;default:coutInputerror!e

45、ndl;再運(yùn)行程序,然后輸入成績(jī)B,將輸出結(jié)果:8089循環(huán)語句:在程序設(shè)計(jì)中經(jīng)常遇到需要重復(fù)執(zhí)行的操作,這些操作可以使用循環(huán)語句來實(shí)現(xiàn)。循環(huán)語句使得程序在給定條件滿足時(shí),能夠重復(fù)地執(zhí)行某些操作C+語言提供了3種循環(huán)語句:while循環(huán)語句、do-while循環(huán)語句和for循環(huán)語句。1while循環(huán)語句while循環(huán)語句的語法形式為:while(表達(dá)式)循環(huán)體;其中,while是關(guān)鍵字,表達(dá)式可以是C+語言中任何合法的表達(dá)式,它用來判斷執(zhí)行循環(huán)體的條件,根據(jù)循環(huán)條件決定是否執(zhí)行循環(huán)體。循環(huán)體由語句組成,可以是一條語句,也可以是多條語句。while循環(huán)執(zhí)行過程示意圖如圖2-8所示。如果循環(huán)體有多

46、個(gè)語句時(shí),要用大括號(hào)把它們括起來,以復(fù)合語句形式出現(xiàn)。在使用循環(huán)語句時(shí),一定要設(shè)法改變循環(huán)變量,使之在有限次循環(huán)之后能滿足循環(huán)終止條件而結(jié)束循環(huán)?!纠?.12】編程計(jì)算1100之和。#includevoidmain()inti=1,sum=0;while(i=100)sum+=i;i+;coutsum=sumendl;程序運(yùn)行后,輸出結(jié)果:sum=50502do-while循環(huán)語句do-while循環(huán)語句的語法形式為:do/循環(huán)體部分while(表達(dá)式);do-while循環(huán)語句與while循環(huán)語句的區(qū)別在于:do-while循環(huán)語句首先執(zhí)行循環(huán)體,再求表達(dá)式的值。如果其值非0,則再次執(zhí)行循環(huán)

47、體,直至表達(dá)式的值為零;而while語句首先求表達(dá)式的值,再按其值為零或非零決定是否執(zhí)行循環(huán)體。因此,do-while循環(huán)語句中的循環(huán)體至少執(zhí)行一次。do-while循環(huán)執(zhí)行過程如圖2-9所示。4循環(huán)體注意:do-while循環(huán)語句最后的分號(hào)不可缺少?!纠?.13】利用do-while循環(huán)語句改寫例2.12。#includevoidmain()inti=1,sum=0;dosum+=i;i+;while(i=100);coutsum=sumendl;3for循環(huán)語句for循環(huán)語句的功能非常強(qiáng)大。所有while循環(huán)語句和do-while循環(huán)語句都可以用for循環(huán)語句替代。for循環(huán)語句的語法形式

48、為:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體;其中,表達(dá)式1通常用來給循環(huán)變量賦初值;表達(dá)式2通常是關(guān)系表達(dá)式或邏輯表達(dá)式,一般用來設(shè)置循環(huán)條件;表達(dá)式3用來在每次循環(huán)之后修改循環(huán)變量的值。for語句的執(zhí)行過程是:首先執(zhí)行表達(dá)式1,給循環(huán)變量賦初值;接著執(zhí)行表達(dá)式2,并根據(jù)表達(dá)式2的值決定是否執(zhí)行循環(huán)體。如果表達(dá)式2的值為true或其他非0值,則執(zhí)行循環(huán)體,否則退出循環(huán);每執(zhí)行完一次循環(huán)體后,再執(zhí)行表達(dá)式3,修改循環(huán)變量;然后再執(zhí)行表達(dá)式2,并根據(jù)表達(dá)式2的值決定是否繼續(xù)執(zhí)行循環(huán)體。For循環(huán)語句的執(zhí)行過程如圖2-10所示。圖2-10For循環(huán)語句執(zhí)行過程在使用for循環(huán)語句時(shí),應(yīng)該注意下

49、列幾種情況:for語句中的3個(gè)表達(dá)式可以沒有。但必須注意每個(gè)表達(dá)式后的分號(hào)不能省略。此時(shí)for循環(huán)語句的形式為:for(;)這時(shí)在循環(huán)體內(nèi)必須有其他控制循環(huán)執(zhí)行的語句,否則會(huì)形成死循環(huán)。表達(dá)式l如果沒有或不是用來給循環(huán)變量賦初值,則應(yīng)在for語句前給循環(huán)變量賦初值。表達(dá)式2如果沒有,則在for語句循環(huán)體內(nèi)應(yīng)有其他控制循環(huán)執(zhí)行的語句,否則會(huì)形成死循環(huán)。表達(dá)式3如果沒有或不是用來修改循環(huán)變量的值,則應(yīng)在for語句循環(huán)體內(nèi)設(shè)置相應(yīng)的語句?!纠?.14】利用for循環(huán)語句改寫例2.12。#includevoidmain()inti,sum=0;for(i=1;i=100;i+)sum+=i;couts

50、um=sumendl;【例2.15】在屏幕上顯示09共10個(gè)整數(shù)。#includevoidmain()inti=0;for(;i=9;)couti+t;coutendl;程序運(yùn)行后,將輸出結(jié)果:0123456789returnC+語言還提供了goto語句、break語句和continue語句等轉(zhuǎn)移語句,它們主要用于改變程序中語句的執(zhí)行順序,使程序從某一語句有目的地轉(zhuǎn)移到另一語句繼續(xù)執(zhí)行。轉(zhuǎn)移語句:1goto語句goto語句語法格式為:goto語句標(biāo)號(hào);goto語句的作用是使程序轉(zhuǎn)移到語句標(biāo)號(hào)所標(biāo)示的語句處繼續(xù)執(zhí)行。語句標(biāo)號(hào)是一種用來標(biāo)識(shí)語句的符號(hào),其命名遵守標(biāo)識(shí)符的命名規(guī)定,放在語句的前面,并

51、用冒號(hào)(:)與語句分開。C+語言中,goto語句的使用被限制在一個(gè)函數(shù)體內(nèi),即goto語句只能在一個(gè)函數(shù)范圍內(nèi)進(jìn)行語句轉(zhuǎn)移。在同一函數(shù)中,語句標(biāo)號(hào)應(yīng)該是唯一的。注意:由于goto語句的使用會(huì)破壞程序的結(jié)構(gòu),編程時(shí),應(yīng)盡量少用或不用。2break語句break語句的語法格式如下:break;break語句可用在以下兩種情況:break語句用在switch語句中,其功能是退出switch語句。break語句用在循環(huán)語句的循環(huán)體中,其功能是退出循環(huán)語句。如果是多重循環(huán),它將會(huì)在本次循環(huán)結(jié)束時(shí)執(zhí)行該重循環(huán)后面的語句。3continue語句continue語句的語法格式為:continue;contin

52、ue語句只能用在循環(huán)語句的循環(huán)體內(nèi)。在循環(huán)執(zhí)行的過程中,如果遇到continue語句,程序?qū)⒔Y(jié)束本次循環(huán),接著開始下一次循環(huán)?!纠?.16】從鍵盤上輸入10個(gè)整數(shù),若是正整數(shù)則求和,若是負(fù)整數(shù)則不進(jìn)行計(jì)算,繼續(xù)輸入數(shù)據(jù),若輸入0則終止程序。#includevoidmain()intnum,sum=0;coutPleaseinputnumber:endl;for(inti=0;inum;if(num=0)break;if(num0)continue;sum+=num;coutsum=sumendl;return作業(yè)教材P46-47所有習(xí)題第3章函數(shù)本章課時(shí):12課時(shí)本章重點(diǎn):函數(shù)調(diào)用變量作用域本

53、章難點(diǎn):函數(shù)調(diào)用教學(xué)內(nèi)容及目標(biāo):了解:1參數(shù)的傳遞方式的分類2內(nèi)聯(lián)函數(shù)的含義理解:1變量存儲(chǔ)特性與標(biāo)識(shí)符作用域2函數(shù)調(diào)用機(jī)制:嵌套調(diào)用和遞歸調(diào)用掌握:1函數(shù)參數(shù)的傳遞,包括:傳值參數(shù),指針參數(shù),引用參數(shù)和函數(shù)的返回類型2函數(shù)指針:函數(shù)的地址,函數(shù)指針3重載函數(shù)的定義與使用方法第一節(jié)函數(shù)的定義和聲明【例3.1】實(shí)現(xiàn)兩個(gè)數(shù)相加。#includeintadd(int,int);/函數(shù)原型voidmain()intsum,x,y;coutvv請(qǐng)輸入被加數(shù)和加數(shù):vvendl;cinxy;sum=add(x,y);/函數(shù)調(diào)用coutvvSum=vvsumvvendl;intadd(inta,intb)/

54、函數(shù)定義returna+b;執(zhí)行結(jié)果:請(qǐng)輸入被加數(shù)和加數(shù):213625Sum=838函數(shù)定義的一般語法格式如下:函數(shù)類型函數(shù)名(參數(shù)表)函數(shù)體/有返回值,返回類型為整型1函數(shù)類型與返回值intsum(inta,intb)return(a+b);voidprintsum(inta,intb)/無返回值couta+bb?a:b;voidprint(void)/無參數(shù)coutC+iseasytolearn!endl;voidprint()/無參數(shù)coutHelloworld!endl;intmax(inta,b)形參在該函數(shù)被調(diào)用時(shí)才初始化,即從主調(diào)函數(shù)獲取數(shù)據(jù)。如果被調(diào)用函數(shù)不需要從調(diào)用函數(shù)那里獲

55、取數(shù)據(jù),則該函數(shù)可為無參函數(shù)。函數(shù)原型:函數(shù)原型又稱函數(shù)聲明,用來告訴編譯器函數(shù)頭的相關(guān)內(nèi)容。函數(shù)原型通常位于程序代碼的開始處。函數(shù)原型的語法格式為:類型函數(shù)名(參數(shù)列表);參數(shù)列表的個(gè)數(shù)、順序和指定的類型必須和函數(shù)定義中一致。在函數(shù)原型說明中也可以不給出參數(shù)名,只給出類型。例如:intsum(int,int);/不帶參數(shù)名intfac(inta);/帶參數(shù)名第二節(jié)函數(shù)調(diào)用函數(shù)調(diào)用的概念:函數(shù)調(diào)用是用一個(gè)表達(dá)式表示。調(diào)用格式為:函數(shù)名(實(shí)參列表);實(shí)參是用來在調(diào)用函數(shù)時(shí)對(duì)形參進(jìn)行初始化的,實(shí)參與形式參數(shù)個(gè)數(shù)相同、類型一致、順序一致。如果在一個(gè)文件中有多個(gè)函數(shù),一般都將主程序或主函數(shù)放在其他所有

56、函數(shù)的前面。在函數(shù)調(diào)用前進(jìn)行函數(shù)原型的說明,被調(diào)用的函數(shù)定義放在后面。通常使用函數(shù)調(diào)用的返回值來給某個(gè)變量賦值。有返回值函數(shù)的調(diào)用格式為:變量名=函數(shù)名(實(shí)參列表);或coutv函數(shù)名(實(shí)參列表);在任何情況下,C+能自動(dòng)將變量的類型轉(zhuǎn)換為與參數(shù)一致的類型,這是C+標(biāo)準(zhǔn)類型轉(zhuǎn)換的一部分。任何非法的轉(zhuǎn)換都會(huì)被C+編譯程序檢測(cè)出來。【例3.2】編程求三個(gè)整數(shù)中最大的數(shù)。#includeintmax2(int,int);intmax3(int,int,int);voidmain()intsum,x,y,z,m;coutvv請(qǐng)輸入三個(gè)整數(shù):vvendl;cinxyz;m=max3(x,y,z);cou

57、tvv最大的數(shù)是:vvmvvendl;/函數(shù)定義intmax2(inta,intb)returnab?a:b;intmax3(inta,intb,intc)intm1,m2;m1=max2(a,b);m2=max2(m1,c)returnm2;執(zhí)行結(jié)果:請(qǐng)輸入三個(gè)數(shù):253647最大的數(shù)是:47函數(shù)調(diào)用的參數(shù)傳遞:參數(shù)形式:數(shù)值、引用、指針參數(shù)傳遞:傳值、傳址、引用傳值調(diào)用是利用參數(shù)傳遞數(shù)據(jù)最常用的方法。調(diào)用時(shí)系統(tǒng)先計(jì)算實(shí)參的值,再把實(shí)參的值按位置賦給對(duì)應(yīng)的形式參數(shù)。本質(zhì)是復(fù)制實(shí)參給形參,以后二者互不影響?!纠?.3】?jī)烧蛿?shù)互換。#includevoidswap(int,int);voidm

58、ain()inta,b;cinab;swap(a,b);coutmainprograma=atb=bn;/函數(shù)定義voidswap(intx,inty)intt;coutfunctionswapbegina=xtb=yn;t=x;x=y;y=t;coutfunctionswapenda=xtb=yn;程序執(zhí)行結(jié)果為:1020functionswapbegina=10b=20functionswapenda=20b=10mainprograma=10b=20return1函數(shù)的嵌套調(diào)用若在一個(gè)函數(shù)調(diào)用中又調(diào)用了另外一個(gè)函數(shù),則稱這樣的調(diào)用過程為函數(shù)的嵌套調(diào)用。程序執(zhí)行時(shí)從主函數(shù)開始執(zhí)行,遇到函數(shù)

59、調(diào)用時(shí),如果函數(shù)是有參函數(shù),系統(tǒng)先進(jìn)行實(shí)參對(duì)形參的替換,然后執(zhí)行被調(diào)用函數(shù)的函數(shù)體。如果函數(shù)體中還調(diào)用了其他函數(shù),再轉(zhuǎn)入執(zhí)行其他函數(shù)體。函數(shù)體執(zhí)行完畢后,返回到主調(diào)函數(shù),繼續(xù)執(zhí)行主調(diào)函數(shù)中的后續(xù)程序行。3.2.3函數(shù)的嵌套調(diào)用和遞歸調(diào)用2函數(shù)的遞歸調(diào)用在調(diào)用一個(gè)函數(shù)的過程中出現(xiàn)直接或間接調(diào)用該函數(shù)本身,就稱作函數(shù)的遞歸調(diào)用,這樣的函數(shù)稱為遞歸函數(shù)。編寫遞歸函數(shù)時(shí),必須有終止遞歸調(diào)用的條件遞歸調(diào)用的兩個(gè)階段:第一階段:遞推。將原問題不斷分解為新的子問題,逐漸從未知向已知遞推第二階段:回歸。從已知條件出發(fā),按照遞推的逆過程,逐一求值回歸,最后達(dá)到遞歸的開始處,結(jié)束回歸階段,完成遞歸調(diào)用。第三節(jié)變量

60、的作用域在函數(shù)或者類內(nèi)說明的變量是局部變量。局部變量?jī)H在定義它的函數(shù)或類內(nèi)起作用,在這個(gè)范圍之外不能使用這些變量。局部變量的作用域也稱為塊作用域。函數(shù)內(nèi)部使用的局部變量包括形式參數(shù)和函數(shù)體內(nèi)定義的變量。函數(shù)的形式參數(shù)的作用域在函數(shù)的函數(shù)體內(nèi)部。不同函數(shù)如果使用相同的參數(shù)或變量,它們僅在其所在函數(shù)體內(nèi)有效,互不影響。在函數(shù)體內(nèi)定義的變量,其作用域從說明語句開始直到該函數(shù)結(jié)束為止。全局變量:全局變量是在函數(shù)和類外部定義的變量。全局變量的作用域從說明點(diǎn)開始直到文件結(jié)束。這種作用域也稱為文件作用域。全局變量一般集中在主函數(shù)之前說明。優(yōu)點(diǎn):可以減少參數(shù)數(shù)量和數(shù)據(jù)傳遞時(shí)間。缺點(diǎn):過多的全局變量會(huì)降低程序的

溫馨提示

  • 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)論