![《C++程序設(shè)計(jì)》完整教案_第1頁(yè)](http://file4.renrendoc.com/view/b6ee08923b7cbd0b2b8b85e66723f279/b6ee08923b7cbd0b2b8b85e66723f2791.gif)
![《C++程序設(shè)計(jì)》完整教案_第2頁(yè)](http://file4.renrendoc.com/view/b6ee08923b7cbd0b2b8b85e66723f279/b6ee08923b7cbd0b2b8b85e66723f2792.gif)
![《C++程序設(shè)計(jì)》完整教案_第3頁(yè)](http://file4.renrendoc.com/view/b6ee08923b7cbd0b2b8b85e66723f279/b6ee08923b7cbd0b2b8b85e66723f2793.gif)
![《C++程序設(shè)計(jì)》完整教案_第4頁(yè)](http://file4.renrendoc.com/view/b6ee08923b7cbd0b2b8b85e66723f279/b6ee08923b7cbd0b2b8b85e66723f2794.gif)
![《C++程序設(shè)計(jì)》完整教案_第5頁(yè)](http://file4.renrendoc.com/view/b6ee08923b7cbd0b2b8b85e66723f279/b6ee08923b7cbd0b2b8b85e66723f2795.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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ì):專(zhuān)業(yè)必修課課程類(lèi)別:講授課+實(shí)訓(xùn)課授課對(duì)象:08級(jí)電子商務(wù)專(zhuān)業(yè)課時(shí)數(shù):周4教學(xué)目的:通過(guò)本課程的學(xué)習(xí),使學(xué)生理解面向?qū)ο蟪绦蛟O(shè)計(jì)思想,掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念和技術(shù)。使學(xué)生深刻理解面向?qū)ο蠹夹g(shù)所帶來(lái)的觀念改革,掌握一種面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言和面向?qū)ο笤O(shè)計(jì)的思維方式、規(guī)則與基本方法,了解面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)的發(fā)展趨勢(shì)。通過(guò)面向?qū)ο笏季S的訓(xùn)練,使學(xué)生逐漸掌握現(xiàn)代編程能力,為今后的軟件開(kāi)發(fā)和各種信息處理打下良好的基礎(chǔ)。教學(xué)方法:本課程以以下兩種教學(xué)方法為主:1理論課堂教學(xué)使用多媒體輔助教學(xué)手段,并采用可視化的編程工具用于課
2、程學(xué)習(xí)和編程。2實(shí)驗(yàn)教學(xué)結(jié)合理論教學(xué)實(shí)際情況,布置合適比例的概念理解題和綜合設(shè)計(jì)題,使學(xué)生在掌握面向?qū)ο蟾拍睢㈧柟讨R(shí)的同時(shí),提高綜合設(shè)計(jì)和處理實(shí)際問(wèn)題的能力。教學(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)分析問(wèn)題、解決問(wè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ì)語(yǔ)言理解:面向?qū)ο蟪绦蛟O(shè)計(jì)的特點(diǎn)熟悉VC+6.0集成開(kāi)發(fā)環(huán)境掌握:C+的特點(diǎn)C+程序結(jié)構(gòu)和書(shū)寫(xiě)規(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)步驟,通常稱(chēng)之為方法。2.類(lèi)在面向?qū)ο蟪绦蛟O(shè)計(jì)中,類(lèi)是具有相同屬性數(shù)據(jù)和操作的對(duì)象的集合,它是對(duì)一類(lèi)對(duì)象的抽象描述。類(lèi)是創(chuàng)建對(duì)象的模板,它包含著所創(chuàng)建對(duì)象的狀態(tài)描述和方法的定義,一般是先聲
4、明類(lèi),再由類(lèi)創(chuàng)建其對(duì)象。按照這個(gè)模板創(chuàng)建的一個(gè)個(gè)具體的實(shí)例,就是對(duì)象。屬性對(duì)象中的數(shù)據(jù)稱(chēng)為對(duì)象的屬性,而類(lèi)中的特性稱(chēng)為類(lèi)的屬性,不同的類(lèi)和對(duì)象具有不同的屬性。消息在面向?qū)ο蟪绦蛟O(shè)計(jì)中,當(dāng)要求一個(gè)對(duì)象做某一操作時(shí),就向該對(duì)象發(fā)出請(qǐng)求,通常稱(chēng)為“消息”。當(dāng)對(duì)象接收到消息時(shí),就調(diào)用有關(guān)方法,執(zhí)行相應(yīng)操作。這種對(duì)象與對(duì)象之間通過(guò)消息進(jìn)行相互聯(lián)系的機(jī)制,就叫做消息傳遞機(jī)制,通過(guò)消息傳遞可實(shí)現(xiàn)對(duì)象的交互。方法方法就是對(duì)象所能執(zhí)行的操作。方法包括接口和方法體兩部分。方法的接口就是消息的模式,它告訴用戶(hù)如何調(diào)用該方法;方法體則是實(shí)現(xiàn)操作的一系列步驟,也就是一段程序代碼。傳統(tǒng)程序設(shè)計(jì)及其局限性:傳統(tǒng)程序設(shè)計(jì)開(kāi)發(fā)
5、軟件的生產(chǎn)效率低下傳統(tǒng)程序設(shè)計(jì)難以應(yīng)付龐大的信息量和多樣的信息類(lèi)型傳統(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)的操作集中在一起形成類(lèi),將類(lèi)的一部分屬性和操作隱藏起來(lái),不讓用戶(hù)訪問(wèn),另一部分作為類(lèi)的外部接口,用戶(hù)可以訪問(wèn)。繼承性在面向?qū)ο蟪绦蛟O(shè)計(jì)中,繼承是指新建的類(lèi)從已有的類(lèi)那里獲得已有的屬性和操作。已有的類(lèi)稱(chēng)為基類(lèi)或父類(lèi),繼承基類(lèi)而產(chǎn)生的新建類(lèi)稱(chēng)為基類(lèi)的子類(lèi)或派生類(lèi)。多態(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)作,這種功能稱(chēng)為多態(tài)。它使得類(lèi)中具有相似功能的不同函數(shù)可以使用同一個(gè)函數(shù)名。第二節(jié)C+的發(fā)展1980年,美國(guó)AT&T公司貝爾實(shí)驗(yàn)室的BjarneStioustrup博士為了仿真課題研究,編寫(xiě)了稱(chēng)為“帶類(lèi)的C”語(yǔ)言版本。1983年7月用C+將該語(yǔ)言名字定下來(lái),并對(duì)外公開(kāi)發(fā)表。Microsoft公司于20世紀(jì)80年代中期在MicrosoftC6.0的基礎(chǔ)上開(kāi)發(fā)了MicrosoftC/C+7.0,同時(shí)引進(jìn)了MicrosoftFoundationClass(MFC)1.0版本,完善了源代碼。后來(lái)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語(yǔ)言,許多C語(yǔ)言代碼不經(jīng)修改就可以在C+中使用。用C+編寫(xiě)的程序可讀性更好,代碼結(jié)構(gòu)更為合理。生成代碼質(zhì)量高,運(yùn)行效率僅比匯編語(yǔ)言慢10%20%。從開(kāi)發(fā)時(shí)間、費(fèi)用到形成軟件的可重用性、可擴(kuò)充性、可維護(hù)性和可靠性等方面有很大提高,使得大中型軟件開(kāi)發(fā)變得容易很多。支持面向?qū)ο蟪绦蛟O(shè)計(jì),可方便地構(gòu)造出模擬現(xiàn)實(shí)問(wèn)題的實(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ù)可分為兩大類(lèi),一類(lèi)是用戶(hù)自己定義的函數(shù),另一類(lèi)是系統(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ù)開(kāi)始運(yùn)行,其他函數(shù)只能被主函數(shù)調(diào)用或通過(guò)主函數(shù)調(diào)用的函數(shù)所調(diào)用,函數(shù)可以嵌套調(diào)用。注釋第一種注釋方法是以“/*”開(kāi)始,以“*/”結(jié)束,二者之間的所有字符都會(huì)被作為注釋處理,此時(shí)的注釋可以是一行,也可以是多行,適合于大塊的注釋。第二種注釋方法是以“/”表示注釋開(kāi)始,本行中“/”后面的字符都會(huì)被作為注釋處理,這種注釋方式多用于較短的程序注釋。輸入/輸出輸入/輸出語(yǔ)句是C+最基本的語(yǔ)句。綜上所述,一個(gè)C+程序的基本結(jié)構(gòu)應(yīng)該包括以“#”開(kāi)頭的若干個(gè)預(yù)處理命令,將程序所需要的頭文件包含進(jìn)來(lái);然后定義主函數(shù)和其他函數(shù),當(dāng)然函數(shù)也可以在程序的起始部分先利用函數(shù)要包括各種語(yǔ)句和注
10、釋?zhuān)@部分是程序的主體部分,所占比重也最大。C+程序的書(shū)寫(xiě)格式:C+程序的書(shū)寫(xiě)格式與C程序書(shū)寫(xiě)格式基本相同。原則如下:一般情況下一行只寫(xiě)一條語(yǔ)句。短語(yǔ)句可以一行寫(xiě)多條,長(zhǎng)語(yǔ)句也可以分成多行來(lái)寫(xiě)。分行原則是不能將一個(gè)單詞分開(kāi),用雙引號(hào)括起來(lái)的字符串最好也不要分開(kāi)。C+程序書(shū)寫(xiě)時(shí)要盡量提高可讀性。為此,采用適當(dāng)?shù)乜s進(jìn)格式書(shū)寫(xiě)程序是非常必要的,表示同一類(lèi)內(nèi)容或同一層次的語(yǔ)句要對(duì)齊。C+程序中大括號(hào)使用較多,其書(shū)寫(xiě)方法也較多,建議用戶(hù)要養(yǎng)成使用大括號(hào)的固定風(fēng)格。例如,每個(gè)大括號(hào)占一行,并與使用大括號(hào)的語(yǔ)句對(duì)齊,大括號(hào)內(nèi)的語(yǔ)句采用縮進(jìn)兩個(gè)字符的格式書(shū)寫(xiě)。第四節(jié)VisualC+6.0集成開(kāi)發(fā)環(huán)境Visua
11、lC+6.0是微軟公司開(kāi)發(fā)的可視化的C+集成開(kāi)發(fā)環(huán)境。它集程序代碼的編輯、編譯、連接、調(diào)試等功能為一體,界面友好,用戶(hù)操作方便。-廿1天中女TC二遼岡菜單欄標(biāo)準(zhǔn)工具欄工作區(qū)窗口文片BHSTBAIHftTflBQHbinitwsuhi;“比詢(xún)?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無(wú)錯(cuò)誤編輯編輯是將寫(xiě)好的C+源程序輸入到計(jì)算機(jī)中,生成磁盤(pán)文件的過(guò)程。默認(rèn)文件擴(kuò)展名為*.cpp。編譯編輯好的源程序必須經(jīng)過(guò)編譯,計(jì)算機(jī)才能執(zhí)行,這些二進(jìn)制代碼稱(chēng)為目標(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的集成開(kāi)發(fā)環(huán)境下運(yùn)行。在生成可執(zhí)行文件之前,一定要改正編譯和連接時(shí)出現(xiàn)的致命錯(cuò)誤和警告錯(cuò)誤,這樣才能保證運(yùn)行結(jié)果是正確的。參照教材練習(xí)C+程序的上機(jī)實(shí)現(xiàn)過(guò)程。利用Debug調(diào)試功能調(diào)試程序:VisualC+6.0集成開(kāi)發(fā)環(huán)境為我們提供了輔助調(diào)試工具,可以實(shí)現(xiàn)單步運(yùn)行、設(shè)置斷點(diǎn)、觀察變量和表達(dá)
14、式的值等功能,使我們可以跟蹤程序的執(zhí)行過(guò)程,觀察不同時(shí)刻變量值的變化情況。所謂斷點(diǎn)就是程序運(yùn)行時(shí)的暫停點(diǎn),程序運(yùn)行到斷點(diǎn)處便暫停,這樣就可以通過(guò)觀察斷點(diǎn)處變量的值來(lái)了解程序的執(zhí)行過(guò)程。參照教材練習(xí)利用Debug調(diào)試程序的過(guò)程。作業(yè)教材P18-19所有習(xí)題。第2章C+程序設(shè)計(jì)基礎(chǔ)本章課時(shí):16課時(shí)本章重點(diǎn):運(yùn)算符與表達(dá)式控制語(yǔ)句本章難點(diǎn):控制語(yǔ)句教學(xué)內(nèi)容及目標(biāo):了解:1為什么會(huì)有三種基本的程序控制結(jié)構(gòu)C+的基本數(shù)據(jù)類(lèi)型理解:程序控制結(jié)構(gòu)的控制方式:順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)C+的運(yùn)算符、關(guān)鍵字、標(biāo)識(shí)符和分隔符、常量和變量語(yǔ)法規(guī)則轉(zhuǎn)向語(yǔ)句的使用表達(dá)式中數(shù)據(jù)類(lèi)型的轉(zhuǎn)換規(guī)則掌握:選擇控制的使用:if
15、語(yǔ)句,switch語(yǔ)句循環(huán)控制結(jié)構(gòu)的使用:while語(yǔ)句,do_while語(yǔ)句,for語(yǔ)句,循環(huán)的嵌套判斷表達(dá)式的使用第一節(jié)詞法符號(hào)標(biāo)識(shí)符:標(biāo)識(shí)符是程序員為命名程序中的一些實(shí)體而定義的專(zhuān)用單詞。常見(jiàn)的有函數(shù)名,類(lèi)名、變量名、常量名、對(duì)象名等。C+語(yǔ)言中標(biāo)識(shí)符的命名規(guī)則如下:標(biāo)識(shí)符是由英文字母(包括大寫(xiě)和小寫(xiě))、數(shù)字和下劃線(xiàn)組成,并且以字母和下劃線(xiàn)開(kāi)始,例如:Abe、X1、_x1、desk都是合法的標(biāo)識(shí)符,而2A是非法的。標(biāo)識(shí)符中大寫(xiě)和小寫(xiě)字母是有區(qū)別的。標(biāo)識(shí)符的長(zhǎng)度是任意的,但有的編譯系統(tǒng)僅識(shí)別前32個(gè)字符。標(biāo)識(shí)符不能和C+語(yǔ)言的關(guān)鍵字同名。關(guān)鍵字:關(guān)鍵字是一種有特殊用途的詞法符號(hào),是C+系統(tǒng)
16、預(yù)定義的保留字,不能再用作其他用途。卜面列舉一些C+語(yǔ)言中常用的關(guān)鍵字:autobreakboolcasecharcatchclassConstcontinuedefaultdeletedodoubleelseEnumexplicitexportexternfalsefloatforfriendgotoifinlineintlongnewMutablenamespaceoperatorprivateprotectedpublicregisterreturnshortsignedsizeofStaticatructswitchthistypedeftrueunionunsignedtypenam
17、evoidusingvirtualvolatilewhilestatic_cast運(yùn)算符:運(yùn)算符是C+語(yǔ)言實(shí)現(xiàn)各種運(yùn)算的符號(hào),如+、一、*、/等。運(yùn)算符根據(jù)操作對(duì)象個(gè)數(shù)的不同,可以分為單目運(yùn)算符、雙目運(yùn)算符和三目運(yùn)算符。單目運(yùn)算符又稱(chēng)一元運(yùn)算符,它只對(duì)一個(gè)操作數(shù)進(jìn)行操作。例如,求負(fù)運(yùn)算符、邏輯求反運(yùn)算符!等。雙目運(yùn)算符又稱(chēng)二元運(yùn)算符,它可以對(duì)兩個(gè)操作數(shù)進(jìn)行操作。例如,加法運(yùn)算符+、乘法運(yùn)算符*等。三目運(yùn)算符又稱(chēng)三元運(yùn)算符,它可以對(duì)三個(gè)操作數(shù)進(jìn)行操作。C+語(yǔ)言中只有一個(gè)三目運(yùn)算符,就是條件運(yùn)算符?:。分隔符:分隔符又稱(chēng)標(biāo)點(diǎn)符號(hào),是用來(lái)分隔單詞或程序正文的,它可以表示某個(gè)程序?qū)嶓w的結(jié)束和另一個(gè)程序
18、實(shí)體的開(kāi)始。在C+語(yǔ)言中,常用的分隔符有以下幾個(gè):(1)空格符:常用來(lái)作為單詞與單詞之間的分隔符。逗號(hào):用來(lái)作為多個(gè)變量之間的分隔符,或用來(lái)作為函數(shù)多個(gè)參數(shù)之間的分隔符。分號(hào):用來(lái)作為for循環(huán)語(yǔ)句中for關(guān)鍵字后面括號(hào)中三個(gè)表達(dá)式的分隔符,或用作語(yǔ)句結(jié)束的標(biāo)志。冒號(hào):用來(lái)作為語(yǔ)句標(biāo)號(hào)與語(yǔ)句之間的分隔符,或switch語(yǔ)句中關(guān)鍵字casev整型常量與語(yǔ)句序列之間的分隔符。第二節(jié)基本數(shù)據(jù)類(lèi)型C+語(yǔ)言的數(shù)據(jù)類(lèi)型是十分豐富的,大致可分為基本數(shù)據(jù)類(lèi)型和非基本數(shù)據(jù)類(lèi)型?;緮?shù)據(jù)類(lèi)型包括整型、字符型、浮點(diǎn)型和布爾型。非基本數(shù)據(jù)類(lèi)型主要包括數(shù)組類(lèi)型、結(jié)構(gòu)體類(lèi)型、共用體類(lèi)型、指針類(lèi)型和空類(lèi)型等,如圖2-1所示
19、。數(shù)據(jù)類(lèi)型決定了數(shù)據(jù)在內(nèi)存中所占的空間大小,也確定了其表示范圍。各種基本數(shù)據(jù)類(lèi)型的長(zhǎng)度和取值范圍見(jiàn)表2-1?;菊停╥nt)整型短整型(short)I長(zhǎng)整型(long)字符型F基本數(shù)據(jù)類(lèi)型(f單精度型(float)浮點(diǎn)型I雙精度型(double)數(shù)據(jù)類(lèi)型布爾型(bool)-數(shù)組類(lèi)型構(gòu)造數(shù)據(jù)類(lèi)型:結(jié)構(gòu)體類(lèi)型-共用體類(lèi)型第三節(jié)常量與變量常量:1整型常量整型常量即整型常數(shù),可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制3種形式來(lái)表示。十進(jìn)制整型常量不能以0開(kāi)始。例如,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等;整型常量中的無(wú)符號(hào)型用U或u作后綴表示。例如,431U、0 x34DU等。2浮點(diǎn)型常量浮點(diǎn)型常量又稱(chēng)實(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ù)形式來(lái)表示浮點(diǎn)型常量,即在小數(shù)表示法后面加上E或e表示指數(shù)。例如,3.2E-5,7e10,-34.5e2等。3字符常量C+中有兩種字符常量,即一般字符常量和轉(zhuǎn)義字符常量。一般
21、字符常量:一對(duì)單引號(hào)括起來(lái)的一個(gè)字符,其值為ASCII碼值。例如,a、A、$、5等都是合法的字符常量。轉(zhuǎn)義字符轉(zhuǎn)義字符是一個(gè)以“”開(kāi)頭的特定字符,表示其后的字符具有特殊意義。例如,n中的n不是代表字符n,而是代表回車(chē)換行的意思。常用的轉(zhuǎn)義字符見(jiàn)表2-2。字符形式ASCII碼值功能00 x00NULLa0 x07響鈴b0 x08退格(Backspace鍵)t0 x09水平制表(Tab鍵)f0 x0c走紙換頁(yè)n0 x0a回車(chē)換行v0 x0b垂直制表r0 x0d回車(chē)(不換行)0 x5c字符“”0 x27單引號(hào)”0 x22雙引號(hào)?0 x3f問(wèn)號(hào)ddd0ddd13位八進(jìn)制數(shù)所代表的字符xhh0 xhh1
22、2位十六進(jìn)制數(shù)所代表的字符表2-2C+中常用的轉(zhuǎn)義字符4字符串常量字符串常量是用一對(duì)雙引號(hào)括起來(lái)的字符序列。例如,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)括起來(lái)的一個(gè)字符。它在內(nèi)存中只占一個(gè)字節(jié)。所以,x和x是不同的。注意:不能將一個(gè)字符串常量賦給字符常量。例如,語(yǔ)句charc=abc是錯(cuò)誤的。5邏輯常量在C+程序設(shè)計(jì)中經(jīng)常會(huì)用到兩個(gè)邏輯值(也稱(chēng)布爾值)0和1,邏輯值“0”代
23、表“假”、“不成立”、“false”等,邏輯值“1”代表“真”、“成立”、“true”等。6符號(hào)常量在C+中,可以用一個(gè)標(biāo)識(shí)符來(lái)表示一個(gè)常數(shù),這個(gè)標(biāo)識(shí)符就是符號(hào)常量。使用符號(hào)常量可以增加程序的可讀性和可維護(hù)性。C+語(yǔ)言提供了兩種定義符號(hào)常量的方法:用const語(yǔ)句定義符號(hào)常量一般格式為:const數(shù)據(jù)類(lèi)型符號(hào)常量=表達(dá)式;例如:constdoublepi=3.1415926;注意:在定義符號(hào)常量時(shí)必須進(jìn)行初始化用#define語(yǔ)句定義符號(hào)常量#define是預(yù)處理指令,缺點(diǎn)是不能顯示聲明常量的類(lèi)型。其一般格式為:#define常量名常量值例如:#definepi3.1415926變量:變量是指
24、在程序運(yùn)行過(guò)程中其值可以改變的量。C+語(yǔ)言中使用變量前,必須先對(duì)它的數(shù)據(jù)類(lèi)型進(jìn)行說(shuō)明,以便編譯程序?yàn)樽兞糠峙浯鎯?chǔ)空間。1變量的命名變量的命名要遵循C+語(yǔ)言中標(biāo)識(shí)符的命名規(guī)定2變量的定義變量定義的一般格式為:數(shù)據(jù)類(lèi)型變量1,變量2,;其中數(shù)據(jù)類(lèi)型可以是前面講過(guò)的各種數(shù)據(jù)類(lèi)型,它決定了變量在內(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)左右兩邊類(lèi)型要匹配。表達(dá)式是由運(yùn)算符和各種運(yùn)算對(duì)象(常數(shù)、變量、常量等,也稱(chēng)操作數(shù))組合而成。在C+程序中,表達(dá)式與我們?cè)跀?shù)學(xué)中學(xué)到的類(lèi)似,是用于計(jì)算的式子,是計(jì)算求值的基本單位。C+語(yǔ)言定義了豐富的運(yùn)算符。運(yùn)算符給出計(jì)算的類(lèi)型,而參與運(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ù)和類(lèi)型。運(yùn)算符的優(yōu)先級(jí)別。運(yùn)算符的結(jié)合性。第四節(jié)運(yùn)算符和表達(dá)式
26、表2-3C+中常用運(yùn)算符的優(yōu)先級(jí)、功能和結(jié)合性?xún)?yōu)先級(jí)運(yùn)算符功能說(shuō)明要求操作數(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)算符功能說(shuō)明要求操作數(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á)式的類(lèi)型由運(yùn)算符和操作數(shù)共同確定?!纠?.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ù)滿(mǎn)足關(guān)系運(yùn)算符指定的關(guān)系時(shí),表達(dá)式的值為true,否則為false。在C+語(yǔ)言中,關(guān)系運(yùn)算符都是雙目運(yùn)算符,共6個(gè):(小于)、(大于)、=(大于或等于)、=(等于)、!=(不等于)。其中前4種的優(yōu)先級(jí)高于后2種。C+語(yǔ)言中雖然有布爾類(lèi)型,但它仍然繼承了C語(yǔ)言的規(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)算符“!=”寫(xiě)成其他語(yǔ)言中的不等于運(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)在條件語(yǔ)句和循環(huán)語(yǔ)句中,用于決定問(wè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)。【例2.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á)式的類(lèi)型為左邊變量的類(lèi)型,其值為賦值后左邊變量的值。在C+語(yǔ)言中還可以連續(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á)式稱(chēng)為逗號(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ù)類(lèi)型的轉(zhuǎn)換:1.隱含轉(zhuǎn)換當(dāng)操作數(shù)的類(lèi)型不一致時(shí),表達(dá)式的類(lèi)型就取決于操作數(shù)中類(lèi)型最高的操作數(shù)類(lèi)型,C+語(yǔ)言將自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換,隱含轉(zhuǎn)換的示意圖如圖2-3所示,其轉(zhuǎn)換規(guī)則如下:注意:隱含轉(zhuǎn)換是由編譯系統(tǒng)自動(dòng)完成的,它實(shí)際并不改變操作數(shù)的數(shù)據(jù)類(lèi)型,只是在計(jì)算表達(dá)式值時(shí),臨時(shí)改變操作數(shù)的數(shù)據(jù)類(lèi)型,計(jì)算完成后,
36、操作數(shù)仍保持原有的數(shù)據(jù)類(lèi)型。2.強(qiáng)制轉(zhuǎn)換強(qiáng)制轉(zhuǎn)換的作用是將表達(dá)式的類(lèi)型強(qiáng)制轉(zhuǎn)換成指定的數(shù)據(jù)類(lèi)型。其一般形式為:數(shù)據(jù)類(lèi)型(表達(dá)式)或(數(shù)據(jù)類(lèi)型)表達(dá)式例如:double(a)/將a強(qiáng)制轉(zhuǎn)換成double型float(5%3)/將5%3的結(jié)果轉(zhuǎn)換成float型注意:如果將高類(lèi)型轉(zhuǎn)換成低類(lèi)型,會(huì)造成數(shù)據(jù)精度的損失。因此,這是一種不安全的類(lèi)型轉(zhuǎn)換。第五節(jié)控制語(yǔ)句C+語(yǔ)句概述:1表達(dá)式語(yǔ)句表達(dá)式語(yǔ)句是由一個(gè)表達(dá)式加上分號(hào)組成。例如:inti;/將i聲明為整型變量的語(yǔ)句a=3*4+5;/賦值語(yǔ)句2復(fù)合語(yǔ)句復(fù)合語(yǔ)句也稱(chēng)塊語(yǔ)句,是由兩條或兩條以上的語(yǔ)句組成,并用“”括起來(lái)的語(yǔ)句。復(fù)合語(yǔ)句在語(yǔ)法上相當(dāng)于一條語(yǔ)句
37、。注意:在復(fù)合語(yǔ)句的右括號(hào)后不再需要分號(hào)。3控制語(yǔ)句控制語(yǔ)句通常包括選擇語(yǔ)句、循環(huán)語(yǔ)句和轉(zhuǎn)移語(yǔ)句。4空語(yǔ)句語(yǔ)句空語(yǔ)句只有一個(gè)分號(hào),它不作任何操作,常用在需要一條語(yǔ)句而又不需要任何操作的地方,如循環(huán)語(yǔ)句中。選擇語(yǔ)句:1if語(yǔ)句if語(yǔ)句用來(lái)有條件地執(zhí)行某一語(yǔ)句系列。if語(yǔ)句主要有3種語(yǔ)法格式:簡(jiǎn)單if語(yǔ)句格式:if(表達(dá)式)語(yǔ)句;功能:首先計(jì)算表達(dá)式的值,如果表達(dá)式的值不為0,表示條件判定為真,花括號(hào)內(nèi)的語(yǔ)句將被執(zhí)行;否則,將執(zhí)行后面的語(yǔ)句。其中的表達(dá)式一般是關(guān)系表達(dá)式,并且表達(dá)式必須用()括起來(lái)。語(yǔ)句可以是一條語(yǔ)句,也可以是多條語(yǔ)句。如果只有一條語(yǔ)句,則可以省略?!纠?.7】簡(jiǎn)單if語(yǔ)句的應(yīng)用。
38、#includevoidmain()floatscore;coutPleaseenteryourscore:score;if(score=60)coutPassed!endl;if(score60)coutNopassed!endl;coutYoushoulddoyourbesttostudyendl;運(yùn)行程序后,屏幕上輸出顯示:Pleaseenteryourscore:提示用戶(hù)輸入成績(jī),當(dāng)用戶(hù)輸入成績(jī)信息后,程序會(huì)根據(jù)用戶(hù)的輸入,輸出顯示相應(yīng)的信息。如輸入70,則顯示:Passed!(2)兩分支if語(yǔ)句格式:if(表達(dá)式)語(yǔ)句1;else語(yǔ)句2;功能:首先計(jì)算表達(dá)式的值,如果表達(dá)式條件判定為
39、真,則執(zhí)行語(yǔ)句1,否則將執(zhí)行語(yǔ)句2。該格式的流程圖如圖2-5所示?!纠?.8】利用兩分支if語(yǔ)句改寫(xiě)例2.7。#includevoidmain()floatscore;coutPleaseenteryourscore:score;if(score=60)coutPassed!endl;elsecoutNopassed!endl;coutYoushoulddoyourbesttostudyendl;(3)多分支if語(yǔ)句格式:if(表達(dá)式1)elseif(表達(dá)式2)elseif(表達(dá)式3)elseif(表達(dá)式n)else功能:首先計(jì)算表達(dá)式1的值,如果表達(dá)式1條件判定為真,則執(zhí)行語(yǔ)句1,否則判定表
40、達(dá)式2,如果條件判定為真,則執(zhí)行語(yǔ)句2,依此類(lèi)推,直到所有的表達(dá)式條件均不滿(mǎn)足,此時(shí)將執(zhí)行語(yǔ)句n+1。該格式實(shí)際上提供了多重條件選擇。該格式的流程圖如圖2-6所示?!纠?.9】利用多分支if語(yǔ)句比較兩個(gè)數(shù)的大小。#includevoidmain()intx,y;coutPleaseinputx,y:xy;if(x=y)coutx=yy)coutyendl;elsecoutxyendl;程序執(zhí)行后,屏幕上輸出顯示:Pleaseinputx,y:計(jì)算機(jī)提示用戶(hù)輸入兩個(gè)x和y的值。當(dāng)用戶(hù)輸入后,計(jì)算機(jī)將顯示相應(yīng)的判斷結(jié)果。例如,輸入1和2后將顯示“xvy”的判斷結(jié)果。if語(yǔ)句的嵌套三種if語(yǔ)句之間可
41、以實(shí)現(xiàn)嵌套。通常為了不破壞程序的可讀性,嵌套的層次一般不超過(guò)兩層。【例2.10】利用if語(yǔ)句的嵌套改寫(xiě)例2.9。#includevoidmain()intx,y;coutPleaseinputx,y:xy;if(x!=y)if(xy)coutyendl;elsecoutxyendl;elsecoutx=yendl;2switch語(yǔ)句switch語(yǔ)句又稱(chēng)開(kāi)關(guān)語(yǔ)句,其語(yǔ)法格式為:switch(表達(dá)式M)case常量表達(dá)式Ml:語(yǔ)句1;case常量表達(dá)式M2:語(yǔ)句2;IIIcase常量表達(dá)式Mn:語(yǔ)句n;default:語(yǔ)句Mn+1;其中,switch、case和default是關(guān)鍵字,常量表達(dá)式通
42、常為整型數(shù)值和字符常量,語(yǔ)句1、語(yǔ)句2、語(yǔ)句n是由1條或多條語(yǔ)句組成的語(yǔ)句段,也可以是空語(yǔ)句。如果是多條語(yǔ)句,可以用花括號(hào)括起來(lái)。switch語(yǔ)句的執(zhí)行過(guò)程是:首先計(jì)算switch語(yǔ)句中的表達(dá)式,然后按先后順序?qū)⒌玫降慕Y(jié)果與case中的常量表達(dá)式的值進(jìn)行比較。如果兩者相等,程序就轉(zhuǎn)到相應(yīng)case處開(kāi)始順序執(zhí)行。如果沒(méi)有找到相匹配的結(jié)果,就從default處開(kāi)始執(zhí)行。如果沒(méi)有default,則轉(zhuǎn)到switch語(yǔ)句后面的語(yǔ)句。如果希望switch語(yǔ)句在執(zhí)行完某一case后面的語(yǔ)句后,不再執(zhí)行其后面的case和default分支,就需要在每個(gè)case的末尾加上一條break語(yǔ)句,表示跳出switch
43、語(yǔ)句。加break語(yǔ)句的switch語(yǔ)句流程圖如圖2-7所示。圖2-7switch語(yǔ)句【例2.11】根據(jù)考試成績(jī)的等級(jí)給出百分制分?jǐn)?shù)段。#includevoidmain()chargrade;coutvv請(qǐng)輸入成績(jī):vvendl;cingrade;if(grade=a&gradev=z)grade-=32;/若輸入小寫(xiě)字母,則轉(zhuǎn)化為大寫(xiě)字母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é)果是不符合題目原意的,原因就在于沒(méi)有用break語(yǔ)句作為每個(gè)case的結(jié)束語(yǔ)句?,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)語(yǔ)句:在程序設(shè)計(jì)中經(jīng)常遇到需要重復(fù)執(zhí)行的操作,這些操作可以使用循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)。循環(huán)語(yǔ)句使得程序在給定條件滿(mǎn)足時(shí),能夠重復(fù)地執(zhí)行某些操作C+語(yǔ)言提供了3種循環(huán)語(yǔ)句:while循環(huán)語(yǔ)句、do-while循環(huán)語(yǔ)句和for循環(huán)語(yǔ)句。1while循環(huán)語(yǔ)句while循環(huán)語(yǔ)句的語(yǔ)法形式為:while(表達(dá)式)循環(huán)體;其中,while是關(guān)鍵字,表達(dá)式可以是C+語(yǔ)言中任何合法的表達(dá)式,它用來(lái)判斷執(zhí)行循環(huán)體的條件,根據(jù)循環(huán)條件決定是否執(zhí)行循環(huán)體。循環(huán)體由語(yǔ)句組成,可以是一條語(yǔ)句,也可以是多條語(yǔ)句。while循環(huán)執(zhí)行過(guò)程示意圖如圖2-8所示。如果循環(huán)體有多
46、個(gè)語(yǔ)句時(shí),要用大括號(hào)把它們括起來(lái),以復(fù)合語(yǔ)句形式出現(xiàn)。在使用循環(huán)語(yǔ)句時(shí),一定要設(shè)法改變循環(huán)變量,使之在有限次循環(huán)之后能滿(mǎn)足循環(huán)終止條件而結(jié)束循環(huán)。【例2.12】編程計(jì)算1100之和。#includevoidmain()inti=1,sum=0;while(i=100)sum+=i;i+;coutsum=sumendl;程序運(yùn)行后,輸出結(jié)果:sum=50502do-while循環(huán)語(yǔ)句do-while循環(huán)語(yǔ)句的語(yǔ)法形式為:do/循環(huán)體部分while(表達(dá)式);do-while循環(huán)語(yǔ)句與while循環(huán)語(yǔ)句的區(qū)別在于:do-while循環(huán)語(yǔ)句首先執(zhí)行循環(huán)體,再求表達(dá)式的值。如果其值非0,則再次執(zhí)行循環(huán)
47、體,直至表達(dá)式的值為零;而while語(yǔ)句首先求表達(dá)式的值,再按其值為零或非零決定是否執(zhí)行循環(huán)體。因此,do-while循環(huán)語(yǔ)句中的循環(huán)體至少執(zhí)行一次。do-while循環(huán)執(zhí)行過(guò)程如圖2-9所示。4循環(huán)體注意:do-while循環(huán)語(yǔ)句最后的分號(hào)不可缺少?!纠?.13】利用do-while循環(huán)語(yǔ)句改寫(xiě)例2.12。#includevoidmain()inti=1,sum=0;dosum+=i;i+;while(i=100);coutsum=sumendl;3for循環(huán)語(yǔ)句for循環(huán)語(yǔ)句的功能非常強(qiáng)大。所有while循環(huán)語(yǔ)句和do-while循環(huán)語(yǔ)句都可以用for循環(huán)語(yǔ)句替代。for循環(huán)語(yǔ)句的語(yǔ)法形式
48、為:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體;其中,表達(dá)式1通常用來(lái)給循環(huán)變量賦初值;表達(dá)式2通常是關(guān)系表達(dá)式或邏輯表達(dá)式,一般用來(lái)設(shè)置循環(huán)條件;表達(dá)式3用來(lái)在每次循環(huán)之后修改循環(huán)變量的值。for語(yǔ)句的執(zhí)行過(guò)程是:首先執(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)語(yǔ)句的執(zhí)行過(guò)程如圖2-10所示。圖2-10For循環(huán)語(yǔ)句執(zhí)行過(guò)程在使用for循環(huán)語(yǔ)句時(shí),應(yīng)該注意下
49、列幾種情況:for語(yǔ)句中的3個(gè)表達(dá)式可以沒(méi)有。但必須注意每個(gè)表達(dá)式后的分號(hào)不能省略。此時(shí)for循環(huán)語(yǔ)句的形式為:for(;)這時(shí)在循環(huán)體內(nèi)必須有其他控制循環(huán)執(zhí)行的語(yǔ)句,否則會(huì)形成死循環(huán)。表達(dá)式l如果沒(méi)有或不是用來(lái)給循環(huán)變量賦初值,則應(yīng)在for語(yǔ)句前給循環(huán)變量賦初值。表達(dá)式2如果沒(méi)有,則在for語(yǔ)句循環(huán)體內(nèi)應(yīng)有其他控制循環(huán)執(zhí)行的語(yǔ)句,否則會(huì)形成死循環(huán)。表達(dá)式3如果沒(méi)有或不是用來(lái)修改循環(huán)變量的值,則應(yīng)在for語(yǔ)句循環(huán)體內(nèi)設(shè)置相應(yīng)的語(yǔ)句?!纠?.14】利用for循環(huán)語(yǔ)句改寫(xiě)例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+語(yǔ)言還提供了goto語(yǔ)句、break語(yǔ)句和continue語(yǔ)句等轉(zhuǎn)移語(yǔ)句,它們主要用于改變程序中語(yǔ)句的執(zhí)行順序,使程序從某一語(yǔ)句有目的地轉(zhuǎn)移到另一語(yǔ)句繼續(xù)執(zhí)行。轉(zhuǎn)移語(yǔ)句:1goto語(yǔ)句goto語(yǔ)句語(yǔ)法格式為:goto語(yǔ)句標(biāo)號(hào);goto語(yǔ)句的作用是使程序轉(zhuǎn)移到語(yǔ)句標(biāo)號(hào)所標(biāo)示的語(yǔ)句處繼續(xù)執(zhí)行。語(yǔ)句標(biāo)號(hào)是一種用來(lái)標(biāo)識(shí)語(yǔ)句的符號(hào),其命名遵守標(biāo)識(shí)符的命名規(guī)定,放在語(yǔ)句的前面,并
51、用冒號(hào)(:)與語(yǔ)句分開(kāi)。C+語(yǔ)言中,goto語(yǔ)句的使用被限制在一個(gè)函數(shù)體內(nèi),即goto語(yǔ)句只能在一個(gè)函數(shù)范圍內(nèi)進(jìn)行語(yǔ)句轉(zhuǎn)移。在同一函數(shù)中,語(yǔ)句標(biāo)號(hào)應(yīng)該是唯一的。注意:由于goto語(yǔ)句的使用會(huì)破壞程序的結(jié)構(gòu),編程時(shí),應(yīng)盡量少用或不用。2break語(yǔ)句break語(yǔ)句的語(yǔ)法格式如下:break;break語(yǔ)句可用在以下兩種情況:break語(yǔ)句用在switch語(yǔ)句中,其功能是退出switch語(yǔ)句。break語(yǔ)句用在循環(huán)語(yǔ)句的循環(huán)體中,其功能是退出循環(huán)語(yǔ)句。如果是多重循環(huán),它將會(huì)在本次循環(huán)結(jié)束時(shí)執(zhí)行該重循環(huán)后面的語(yǔ)句。3continue語(yǔ)句continue語(yǔ)句的語(yǔ)法格式為:continue;contin
52、ue語(yǔ)句只能用在循環(huán)語(yǔ)句的循環(huán)體內(nèi)。在循環(huán)執(zhí)行的過(guò)程中,如果遇到continue語(yǔ)句,程序?qū)⒔Y(jié)束本次循環(huán),接著開(kāi)始下一次循環(huán)?!纠?.16】從鍵盤(pán)上輸入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ù)的傳遞方式的分類(lèi)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ù)的返回類(lèi)型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ù)定義的一般語(yǔ)法格式如下:函數(shù)類(lèi)型函數(shù)名(參數(shù)表)函數(shù)體/有返回值,返回類(lèi)型為整型1函數(shù)類(lèi)型與返回值intsum(inta,intb)return(a+b);voidprintsum(inta,intb)/無(wú)返回值couta+bb?a:b;voidprint(void)/無(wú)參數(shù)coutC+iseasytolearn!endl;voidprint()/無(wú)參數(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ù)可為無(wú)參函數(shù)。函數(shù)原型:函數(shù)原型又稱(chēng)函數(shù)聲明,用來(lái)告訴編譯器函數(shù)頭的相關(guān)內(nèi)容。函數(shù)原型通常位于程序代碼的開(kāi)始處。函數(shù)原型的語(yǔ)法格式為:類(lèi)型函數(shù)名(參數(shù)列表);參數(shù)列表的個(gè)數(shù)、順序和指定的類(lèi)型必須和函數(shù)定義中一致。在函數(shù)原型說(shuō)明中也可以不給出參數(shù)名,只給出類(lèi)型。例如:intsum(int,int);/不帶參數(shù)名intfac(inta);/帶參數(shù)名第二節(jié)函數(shù)調(diào)用函數(shù)調(diào)用的概念:函數(shù)調(diào)用是用一個(gè)表達(dá)式表示。調(diào)用格式為:函數(shù)名(實(shí)參列表);實(shí)參是用來(lái)在調(diào)用函數(shù)時(shí)對(duì)形參進(jìn)行初始化的,實(shí)參與形式參數(shù)個(gè)數(shù)相同、類(lèi)型一致、順序一致。如果在一個(gè)文件中有多個(gè)函數(shù),一般都將主程序或主函數(shù)放在其他所有
56、函數(shù)的前面。在函數(shù)調(diào)用前進(jìn)行函數(shù)原型的說(shuō)明,被調(diào)用的函數(shù)定義放在后面。通常使用函數(shù)調(diào)用的返回值來(lái)給某個(gè)變量賦值。有返回值函數(shù)的調(diào)用格式為:變量名=函數(shù)名(實(shí)參列表);或coutv函數(shù)名(實(shí)參列表);在任何情況下,C+能自動(dòng)將變量的類(lèi)型轉(zhuǎn)換為與參數(shù)一致的類(lèi)型,這是C+標(biāo)準(zhǔn)類(lèi)型轉(zhuǎn)換的一部分。任何非法的轉(zhuǎn)換都會(huì)被C+編譯程序檢測(cè)出來(lái)?!纠?.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ù),則稱(chēng)這樣的調(diào)用過(guò)程為函數(shù)的嵌套調(diào)用。程序執(zhí)行時(shí)從主函數(shù)開(kāi)始執(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ù)的過(guò)程中出現(xiàn)直接或間接調(diào)用該函數(shù)本身,就稱(chēng)作函數(shù)的遞歸調(diào)用,這樣的函數(shù)稱(chēng)為遞歸函數(shù)。編寫(xiě)遞歸函數(shù)時(shí),必須有終止遞歸調(diào)用的條件遞歸調(diào)用的兩個(gè)階段:第一階段:遞推。將原問(wèn)題不斷分解為新的子問(wèn)題,逐漸從未知向已知遞推第二階段:回歸。從已知條件出發(fā),按照遞推的逆過(guò)程,逐一求值回歸,最后達(dá)到遞歸的開(kāi)始處,結(jié)束回歸階段,完成遞歸調(diào)用。第三節(jié)變量
60、的作用域在函數(shù)或者類(lèi)內(nèi)說(shuō)明的變量是局部變量。局部變量?jī)H在定義它的函數(shù)或類(lèi)內(nèi)起作用,在這個(gè)范圍之外不能使用這些變量。局部變量的作用域也稱(chēng)為塊作用域。函數(shù)內(nèi)部使用的局部變量包括形式參數(shù)和函數(shù)體內(nèi)定義的變量。函數(shù)的形式參數(shù)的作用域在函數(shù)的函數(shù)體內(nèi)部。不同函數(shù)如果使用相同的參數(shù)或變量,它們僅在其所在函數(shù)體內(nèi)有效,互不影響。在函數(shù)體內(nèi)定義的變量,其作用域從說(shuō)明語(yǔ)句開(kāi)始直到該函數(shù)結(jié)束為止。全局變量:全局變量是在函數(shù)和類(lèi)外部定義的變量。全局變量的作用域從說(shuō)明點(diǎn)開(kāi)始直到文件結(jié)束。這種作用域也稱(chēng)為文件作用域。全局變量一般集中在主函數(shù)之前說(shuō)明。優(yōu)點(diǎn):可以減少參數(shù)數(shù)量和數(shù)據(jù)傳遞時(shí)間。缺點(diǎn):過(guò)多的全局變量會(huì)降低程序的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 白酒總代理合同年
- 小學(xué)口算練習(xí)題小數(shù)300道
- 2025年呼和浩特貨運(yùn)從業(yè)考試試題及答案解析
- 2025年吉林市a2貨運(yùn)從業(yè)資格證模擬考試
- 小學(xué)四年級(jí)數(shù)學(xué)計(jì)算題大全
- 2022年新課標(biāo)八年級(jí)上冊(cè)道德與法治《8.2 堅(jiān)持國(guó)家利益至上 》聽(tīng)課評(píng)課記錄
- 社區(qū)殘疾人工作計(jì)劃
- 酒店主管年度個(gè)人總結(jié)
- 車(chē)間生產(chǎn)主管年終總結(jié)
- 電子技術(shù)實(shí)習(xí)生工作總結(jié)
- 三下《動(dòng)物的一生》教材解讀
- 神木市孫家岔鎮(zhèn)神能乾安煤礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 那些活了很久很久的樹(shù)
- 無(wú)為市人民醫(yī)院城東醫(yī)院建設(shè)項(xiàng)目環(huán)境影響報(bào)告書(shū)
- 非煤礦山安全應(yīng)急預(yù)案
- 高一英語(yǔ)閱讀理解專(zhuān)練20篇
- 京東考試答案
- 6年級(jí)英語(yǔ)奧數(shù)題及答案
- 銷(xiāo)售黃金法則ABC三角溝通法則
- 清潔度標(biāo)準(zhǔn)、測(cè)試及過(guò)程控制
評(píng)論
0/150
提交評(píng)論