C++程序設(shè)計(jì)課件_第1頁(yè)
C++程序設(shè)計(jì)課件_第2頁(yè)
C++程序設(shè)計(jì)課件_第3頁(yè)
C++程序設(shè)計(jì)課件_第4頁(yè)
C++程序設(shè)計(jì)課件_第5頁(yè)
已閱讀5頁(yè),還剩580頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C++入門2

§電腦的組成——硬體和軟體

一、電腦硬體1

硬體組成:由運(yùn)算器、控制器、記憶體、輸入設(shè)備和輸出設(shè)備等五大部分組成,如圖所示。3二、電腦軟體1軟體的作用:軟體是電腦系統(tǒng)的靈魂,沒有配備任何軟體的“裸機(jī)”無(wú)法使用,沒有配備足夠的軟體,電腦的功能將不能很好地發(fā)揮,應(yīng)用範(fàn)圍也將受到很大的影響。2軟體的組成:43程式語(yǔ)言的發(fā)展:正象人與人之間的交流需要自然語(yǔ)言一樣,人與計(jì)算交流也需要語(yǔ)言,我們把這種語(yǔ)言稱為電腦語(yǔ)言,電腦語(yǔ)言有多種:C++;C;PB;VB;Java等等①電腦語(yǔ)言的發(fā)展過(guò)程:

機(jī)器語(yǔ)言組合語(yǔ)言高級(jí)語(yǔ)言

機(jī)器語(yǔ)言:由0或1代碼組成的且是電腦唯一能夠直接讀懂並能直接執(zhí)行的語(yǔ)言。

組合語(yǔ)言:將機(jī)器指令映射為一些可以被人讀懂的助記符,如ADD、SUB等。5

高級(jí)語(yǔ)言:遮罩低級(jí)語(yǔ)言硬體細(xì)節(jié)的語(yǔ)言,各類電腦能通用、接近人們“自然語(yǔ)言”和“數(shù)學(xué)語(yǔ)言”的程式設(shè)計(jì)語(yǔ)言,通用性和可移植好翻譯系統(tǒng):把高級(jí)語(yǔ)言編寫的程式翻譯成用二進(jìn)位形式表示的機(jī)器語(yǔ)言程序的軟體翻譯方式有兩種:編譯方式和解釋方式根源程式:用高級(jí)語(yǔ)言編寫的程式目的程式:是翻譯後得到的機(jī)器語(yǔ)言程式,它是電腦可執(zhí)行的程式程式:為使電腦完成一個(gè)預(yù)定的任務(wù)而設(shè)計(jì)的一系列語(yǔ)句或指令。程式是指令的集合。電腦的工作是用程式來(lái)控制的。程式設(shè)計(jì):設(shè)計(jì)、書寫及檢查調(diào)試程式的過(guò)程6各種電腦語(yǔ)言的發(fā)展演化進(jìn)程:FORTRANFORTRAN77FORTRAN90BASICANSI-BASICQBASICVISUAL-BASICDELPHIPASCALALGOLALGOL68SIMULA67SMALLTALKC++JAVAC#BCPLBC7§電腦的工作過(guò)程一利用電腦解題的步驟

1.上機(jī)前的準(zhǔn)備:①建立數(shù)學(xué)模型

②確定解題步驟(即演算法)

③用某種計(jì)算語(yǔ)言將演算法寫成程式

2上機(jī)調(diào)試運(yùn)行該程式

3維護(hù),升級(jí)該程式電腦的工作過(guò)程取指令→分析指令→執(zhí)行指令(程式=演算法+數(shù)據(jù)結(jié)構(gòu))8§演算法的表示形式⒈用流程圖表示演算法演算法:是程式的靈魂,是為解決一個(gè)問題而採(cǎi)取的方法和步驟,或者說(shuō)是解題步驟的精確描述演算法的主要表示形式:流程圖:用一些框圖表示各種操作,且為提高演算法的品質(zhì),規(guī)定演算法(程式)只能由三種基本結(jié)構(gòu)(順序、選擇和迴圈)組成。ANSI(美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì))規(guī)定了一些常用的流程圖符號(hào):起止框

(示演算法的開始和結(jié)束)判斷框

(一個(gè)入口兩個(gè)出口,依給定的條件是否滿足決定執(zhí)行兩條路徑中的某一路徑)9處理框

(示“賦值”等一般處理)輸入/輸出框

(示輸入輸出操作)流程線

(示流程的方向)連接點(diǎn)

(小圓圈,將畫在不同地方的流程線連接起來(lái))注釋框

(對(duì)流程線中某些部分作必要的說(shuō)明,不是流程圖中的必要部分,不反映流程和操作)例題:求1+2+3+…直到其和等於或大於100為止。用流程圖表示其演算法10分析:和數(shù)用變數(shù)t

存放,加數(shù)用變數(shù)i

存放結(jié)束開始0t,1it+iti+1it

100輸出t的值不成立成立順序結(jié)構(gòu)順序結(jié)構(gòu)迴圈結(jié)構(gòu)11⒉用N-S流程圖表示演算法a.順序結(jié)構(gòu)塊A、B是按順序執(zhí)行的b.選擇結(jié)構(gòu)(if‥‥‥else)P條件成立執(zhí)行A操作,p條件不成立執(zhí)行B操作ABABp成立

不成立12c.迴圈結(jié)構(gòu)前測(cè)試當(dāng)型迴圈當(dāng)p1滿足A前測(cè)試直到型迴圈直到p2滿足A後測(cè)試當(dāng)型迴圈當(dāng)p1滿足A後測(cè)試直到型迴圈直到p2滿足A(for、while、do‥‥‥while)13例題:

求1+2+3…直到其和等於或大於100為止,用N-S圖表示其演算法直到t

100輸出t0t,1it+iti+1i分析:和數(shù)用變數(shù)t

存放,加數(shù)用變數(shù)i

存放intt=0,i=0;t=t+i;i=i+1;do

{}while(t<100);cout<<t;voidmain(){#include<iostream.h>}143用偽代碼(演算法描述語(yǔ)言)表示演算法

偽代碼:用介於自然語(yǔ)言和電腦語(yǔ)言之間的文字和符號(hào)來(lái)描述演算法

特點(diǎn):書寫方便,格式緊湊,便於向程式過(guò)渡,適用軟體專業(yè)人員使用。例題:

將x,y中最大的輸出分析:用偽代碼表示其演算法為:if(x>y)輸出xelse輸出y15

對(duì)複雜問題如何進(jìn)行抽象和分解,對(duì)程式如何進(jìn)行組織,使得程式的可維護(hù)性、可讀性、穩(wěn)定性、效率等更好,是程式設(shè)計(jì)方法研究的問題。目前,有兩種重要的程式設(shè)計(jì)方法:結(jié)構(gòu)化的程式設(shè)計(jì)和面向?qū)ο蟮某淌皆O(shè)計(jì)

結(jié)構(gòu)化程式設(shè)計(jì)(StructuredProgramming,簡(jiǎn)稱SP)

主要思想是:

把一個(gè)複雜的任務(wù)不斷進(jìn)行功能分解,劃分成一系列較小的任務(wù),直到這些子任務(wù)小到易於理解和實(shí)現(xiàn)。結(jié)構(gòu)化程式設(shè)計(jì)兩個(gè)要點(diǎn):①採(cǎi)用“自頂向下逐步求精”的設(shè)計(jì)思想

②程式只採(cǎi)用順序、迴圈和選擇三種控制結(jié)構(gòu)用C++編寫的結(jié)構(gòu)化程式是由許多函數(shù)組成的,其程式的結(jié)構(gòu)清晰。但也有一些缺點(diǎn):

§程式的設(shè)計(jì)方法16

①恰當(dāng)?shù)墓δ芊纸馐墙Y(jié)構(gòu)化程式設(shè)計(jì)的前提。然而對(duì)用戶來(lái)講,變化最大的就是功能的改進(jìn)、添加和刪除。結(jié)構(gòu)化程式要實(shí)現(xiàn)這種功能變化不容易,有時(shí)甚至要重新設(shè)計(jì)整個(gè)程式的結(jié)構(gòu)。

②在結(jié)構(gòu)化程式設(shè)計(jì)中,數(shù)據(jù)和對(duì)數(shù)據(jù)的操作(即函數(shù))分離,函數(shù)依賴於數(shù)據(jù)類型的表示。數(shù)據(jù)的表示發(fā)生變化,則與之相關(guān)的所有函數(shù)均要修改,使得程式難於維護(hù)。

③由於數(shù)據(jù)結(jié)構(gòu)和函數(shù)密切相關(guān),使得程式代碼複用性較差

面向?qū)ο蟮某淌皆O(shè)計(jì)面向?qū)ο蟪淌皆O(shè)計(jì)是在吸取結(jié)構(gòu)化程式設(shè)計(jì)的一切優(yōu)點(diǎn)的基礎(chǔ)上發(fā)展起來(lái)的,其程式由對(duì)象組成,對(duì)象間通過(guò)消息相互作用。它的本質(zhì)是把數(shù)據(jù)和處理數(shù)據(jù)的過(guò)程當(dāng)成一個(gè)整體——對(duì)象。17

對(duì)象:客觀世界中任何一個(gè)事物都可以看作一個(gè)對(duì)象,例如三年級(jí)一班。一個(gè)對(duì)象應(yīng)包括兩個(gè)因素:一是數(shù)據(jù)(相當(dāng)於班級(jí)中的學(xué)生);二是需要進(jìn)行的操作,相當(dāng)於學(xué)生進(jìn)行的活動(dòng):上課、休息、開會(huì)和文娛活動(dòng)等。對(duì)象是由數(shù)據(jù)和操作代碼組成:

類(class):對(duì)象的類型叫做類,例如三年級(jí)一班、二班、三班是三個(gè)不同的對(duì)象,它們具有完全相同的結(jié)構(gòu)和特性故它們屬於同一類。類代表了某一批對(duì)象的共性和特徵,類是對(duì)象的抽象,而對(duì)象是類的具體實(shí)例。類是用來(lái)定義對(duì)象的一種抽象數(shù)據(jù)類型,或者說(shuō)它是產(chǎn)生對(duì)象的範(fàn)本。

18

封裝:有兩個(gè)含義:①把對(duì)象的全部屬性和全部服務(wù)結(jié)合在一起,形成一個(gè)不可分割的獨(dú)立單位(即對(duì)象);②第二個(gè)涵義也稱作“數(shù)據(jù)隱藏”,即盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。例如:聲卡是自成一體的,這種自成一體性稱為封裝性,無(wú)需知道其工作原理就能使用的思想稱為數(shù)據(jù)隱藏。在C++中,封裝是通過(guò)定義類來(lái)實(shí)現(xiàn)的。

繼承:類與類之間可以組成繼承層次,一個(gè)類的定義(子類或派生類)可以定義在另一個(gè)已定義類(父類或超類或基類)的基礎(chǔ)上。子類可以繼承父類中的屬性和操作,也可以定義自己的屬性和操作。繼承的主要益處是可以複用超類的程式代碼。

多態(tài)性:對(duì)象的多態(tài)性是指在一般類中定義的屬性或操作被特殊類繼承之後,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個(gè)屬性或操作名在一般類及其各個(gè)特殊類中具有不同的語(yǔ)義。

19§C++語(yǔ)言概述一、C++的發(fā)展史:BCPLBCC++CPLALGOL60二、從C到C++:

C語(yǔ)言:是介於低級(jí)組合語(yǔ)言與高級(jí)語(yǔ)言之間的語(yǔ)言;C語(yǔ)言既可向彙編語(yǔ)言一樣直接訪問電腦硬體,又具備高級(jí)語(yǔ)言的優(yōu)點(diǎn)(面向用戶、容易記憶、清晰靈活),可稱之為高級(jí)的組合語(yǔ)言。

常用來(lái)編寫系統(tǒng)軟體。然而,C語(yǔ)言也存在一些缺陷:類型檢查機(jī)制較弱,代碼的重用率也低。為了克服C的缺點(diǎn)並保持其優(yōu)點(diǎn),在1980年貝爾實(shí)驗(yàn)實(shí)對(duì)C進(jìn)行了改進(jìn)和擴(kuò)充,構(gòu)成最早的C++(又稱帶類的C語(yǔ)言)語(yǔ)言。20

C++語(yǔ)言:保留了C語(yǔ)言的優(yōu)點(diǎn)同時(shí)也吸收其他面向?qū)ο缶幊陶Z(yǔ)言的長(zhǎng)處??梢哉f(shuō)C++是C的一個(gè)超集、一個(gè)更好的C語(yǔ)言、C語(yǔ)言的改良版本,也是建立C++的基礎(chǔ)。C++既支持傳統(tǒng)的結(jié)構(gòu)化程式設(shè)計(jì),又支持面向?qū)ο蟮某淌皆O(shè)計(jì)。三C++程式開發(fā)過(guò)程步驟:1.編輯2.編譯3.連接4.運(yùn)行

編輯(.cpp/.h)

編譯(.obj)聯(lián)接(.exe)運(yùn)行21

編輯:是指把按照C++語(yǔ)法規(guī)則編寫的程式代碼通過(guò)編輯器(如:VisualC++6.0)輸入電腦,並存盤。在存盤時(shí),C++原始檔案的擴(kuò)展名為.CPP。編譯:將編輯好的C++根源程式用編譯器進(jìn)行語(yǔ)法檢查並轉(zhuǎn)換為目標(biāo)代碼檔(OBJ檔)。即生成該原始檔案的目標(biāo)代碼。鏈接:將用戶程式生成的(多個(gè))目標(biāo)代碼檔(.obj)以及系統(tǒng)提供的

庫(kù)檔(.lib)中的代碼連接在一起,生成一個(gè)可執(zhí)行檔(.exe)

(或動(dòng)態(tài),靜態(tài)庫(kù),.dll,.lib)。執(zhí)行:運(yùn)行所生成的可執(zhí)行檔,用戶可以根據(jù)運(yùn)行結(jié)果來(lái)判斷程式是否出錯(cuò)。如果有輸入數(shù)據(jù),嘗試各種不同的輸入是否都能得到正確結(jié)果.調(diào)試:編碼調(diào)試是一個(gè)迴圈過(guò)程編輯編譯鏈接執(zhí)行22§C++程式的框架結(jié)構(gòu)1.編程顯示:ThisismyfirstC++program.

/*ch1_1.cppcreatedon2004-02-10author小王*/#include<iostream.h>voidmain(){

//下麵將輸出ThisismyfirstC++program.

cout<<“ThisismyfirstC++program.\n”;}是iostream.h檔定義的標(biāo)準(zhǔn)輸出流設(shè)備是將其右邊的數(shù)據(jù)送到顯示設(shè)備上23

#include<iostream.h>

#include<math.h>

doublemax(doublex,doubley);

voidmain()

{

doublea,b,c;

cout<<"inputtwonumbers:\n";

cin>>a>>b;

c=max(a,b);

cout<<"thesquartofmaximum="<<sqrt(c);

}

doublemax(doublex,doubley)

{

if(x>y)

returnx;

else

returny;

}

運(yùn)行結(jié)果為:

2.求較大數(shù)平方根的程式:inputtwonumbers:216

thesquartofmaximum=4.0000024

#include<iostream.h>

#include<math.h>doublemax(doublex,doubley)

{

if(x>y)

returnx;

else

returny;

}

voidmain()

{

doublea,b,c;

cout<<"inputtwonumbers:\n";

cin>>a>>b;

c=max(a,b);

cout<<"thesquartofmaximum="<<sqrt(c);

}

運(yùn)行結(jié)果為:

3.求較大數(shù)平方根的程式:inputtwonumbers:216

thesquartofmaximum=4.0000025一、結(jié)構(gòu)化程式設(shè)計(jì)的C++程式結(jié)構(gòu):

編譯預(yù)處理指令全局說(shuō)明程式的主函數(shù)main()用戶自定義的子函數(shù)其結(jié)構(gòu)用圖表示為右圖:26①編譯預(yù)處理部分(宏定義,檔包含和條件編譯、):由井字型大小“#”引入的指令為預(yù)處理指令,“#include”稱為檔包含預(yù)處理指令,通過(guò)該指令系統(tǒng)將其後程式段使用的名稱進(jìn)行了預(yù)先的說(shuō)明?!?include<iostream.h>的作用是:將系統(tǒng)定義的一個(gè)頭檔iostream.h包含到該程式中,iostream.h檔定義了輸入輸出流對(duì)象cout與cin等②全局說(shuō)明部分:包括程式要用的全局變數(shù)、類說(shuō)明、用戶定義函數(shù)的原型

說(shuō)明等。③主函數(shù):任何一個(gè)C++程式都有且只有一個(gè)主函數(shù)main(),它可以帶參數(shù)。

main函數(shù)的返回值有兩種情況:無(wú)返回值(返回類型為void)及返回值為整型27④用戶自定義函數(shù):是程式員為了實(shí)現(xiàn)某些特定的操作而編寫的一組代碼。常用的函數(shù)一般都帶有一定數(shù)目的參數(shù)和一個(gè)返回值。⑤注釋部分:多行注釋"/*------*/"或單行注釋"http://-----"

函數(shù)的結(jié)構(gòu)形式:函數(shù)類型函數(shù)名(形式參數(shù)類型:形式參數(shù)){數(shù)據(jù)定義函數(shù)執(zhí)行}例:doublemax(doublex,doubley)

{

if(x>y)

returnx;

else

returny;

}

28二、面向?qū)ο蟪淌皆O(shè)計(jì)的C++程式結(jié)構(gòu):

編譯預(yù)處理指令全局說(shuō)明類的說(shuō)明類成員函數(shù)的定義用戶定義函數(shù)主函數(shù)main()29§VisualC++6.0開發(fā)環(huán)境介紹

VisualC++6.0(簡(jiǎn)稱VC)

:是美國(guó)微軟公司開發(fā)的C++集成開發(fā)環(huán)境,它集根源程式的編寫、編譯、連接、調(diào)試、運(yùn)行,以及應(yīng)用程式的檔管理於一體,

是當(dāng)前PC機(jī)上最流行的C++程式開發(fā)環(huán)境。C++的集成環(huán)境開發(fā)環(huán)境有:VisualC++,Turbo-C++,BorlandC++,C++

Builder等。VC的功能較多,應(yīng)在以後逐步掌握,但是本章應(yīng)掌握它的基本用法:30

VC++6.0用戶介面簡(jiǎn)介:31菜單欄:包含了該系統(tǒng)的各種功能工具條:由常用功能按鈕組成。專案工作區(qū)(workspace):用來(lái)查看和修改專案中的所有元素。

檔專案和專案配置是由專案工作區(qū)組織起來(lái)的。專案工作區(qū)的內(nèi)容和設(shè)置通過(guò)專案工作區(qū)檔(.dsw)

來(lái)描述。在建立一個(gè)專案工作區(qū)文件的同時(shí),還生成專案檔(.dsp)和工作區(qū)選項(xiàng)檔(.opt)用來(lái)保存工作區(qū)的設(shè)置。32專案(專案)——一個(gè)程式是一個(gè)專案專案是一些相互關(guān)聯(lián)原始檔案的集合,這些原始檔案組成一個(gè)程式包含根源程式、頭檔、目標(biāo)檔等一個(gè)專案的所有資訊。專案檔的擴(kuò)展名.dspdsw和dsp由系統(tǒng)自動(dòng)產(chǎn)生。代碼編輯窗口:通過(guò)該窗口輸入根源程式輸出窗口:用來(lái)顯示專案創(chuàng)建過(guò)程中的錯(cuò)誤資訊及運(yùn)行結(jié)果33

用VC開發(fā)程式的步驟:1:首先創(chuàng)建一個(gè)C++專案file/new/workspace選擇win32consoleapplication輸入專案名稱選擇:創(chuàng)建或加入工作空間2:創(chuàng)建C++原始檔案file/new/file選擇C++sourcefile.選擇Addtoproject把原始檔案加入專案。343:編輯、編譯、連接、運(yùn)行程式編譯:build/compile連接:build/build運(yùn)行:build/!execute35§2.1

C++的詞法及詞法規(guī)則C++的字元集大小寫字母:a,b,A,B‥‥‥數(shù)字:0~9。運(yùn)算符:+,-,*,/,

%,<,<=,=,>=,

>,!=,==,<<,>>,&,|,

&&,‖,∧,~,(),[],{},->,

?

,!,?,?:,,,;,”,#。特殊字元:連字元或下劃線,空格、換行和跳位字元等。36二詞與詞法規(guī)則識(shí)別字:用來(lái)標(biāo)識(shí)用戶定義的常量名、變數(shù)名、函數(shù)名、檔案名、數(shù)組名、和數(shù)據(jù)類型名和程式等。由字母、下劃線或數(shù)字

組成的字元序列,識(shí)別字必須由字母或下劃線開始,有效長(zhǎng)度是8個(gè)字元。正確不正確smart5smart(不能數(shù)字開頭)_decisionbomb?(有非法字元?)key_boardkey.board(有非法字元.)【例】:下圖是正確和不正確的識(shí)別字實(shí)例:37

識(shí)別字的命名規(guī)則:

①所有識(shí)別字必須由字母或下劃線開頭且由字母、下劃線或數(shù)字組成②識(shí)別字應(yīng)該儘量有意義。如:年year,長(zhǎng)度用length,累加和用sum等。④大小寫字母表示不同意義,即代表不同的識(shí)別字⑤不能把關(guān)鍵字它們?cè)俣x為變數(shù)的識(shí)別字關(guān)鍵字:預(yù)定義的識(shí)別字,稱之為關(guān)鍵字,它是一種特殊的識(shí)別字。關(guān)鍵字具有特定的含義,作為專用定義符的單詞,不允許另作它用。標(biāo)準(zhǔn)C++中預(yù)定義了以下關(guān)鍵字(常用):38auto break case char

classconst continue default do

ddefaultdelete double else enum

explicit

extern float for friend

gotoif

inline int long

mutablenew operator private protectedpublic register return short

signedsizeof static static_cast struct

switchthis typedef union unsignedvirtualvoid while3.運(yùn)算符和分隔符號(hào)

運(yùn)算符是C++語(yǔ)言實(shí)現(xiàn)加、減等各種運(yùn)算的符號(hào)。C++語(yǔ)言的分隔符主要是:空格、製錶和換行符。394.字串字串是由雙引號(hào)括起來(lái)的字元。如“China”,“C++Program”

5.常量

C++中常量包括實(shí)型(浮點(diǎn)常量)和整型常量(十進(jìn)位常量、八進(jìn)制常量、十六進(jìn)制常量)、字元常量和字串常量。

6.注釋注釋是用來(lái)幫助閱讀、理解及維護(hù)程式。在編譯時(shí),注釋部分被忽略,不產(chǎn)生目標(biāo)代碼。C++語(yǔ)言提供兩種注釋方式。一種是與C相容的多行注釋用/*和*/分界。另一種是單行注釋,以“//”開頭的表明本行中“//”符號(hào)後的內(nèi)容是注釋。40§2.2

數(shù)據(jù)類型數(shù)據(jù)類型:它定義了變數(shù)可存儲(chǔ)的數(shù)值範(fàn)圍以及可進(jìn)行的操作。每個(gè)變數(shù)(是用於記憶體中保存數(shù)據(jù)的)都必須有確定的數(shù)據(jù)類型,C++語(yǔ)言的數(shù)據(jù)類型有:數(shù)據(jù)類型基本類型整型int實(shí)型(浮點(diǎn)型)單精確度型float雙精度型double字元型單字符型char寬字元型w-char邏輯型bool非基本類型空類型(無(wú)值類型)void構(gòu)造類型數(shù)組類型結(jié)構(gòu)類型struct聯(lián)合型類型union枚舉型類型enum指針類型類類型class41基本數(shù)據(jù)類型寬度及表示範(fàn)圍:各類型精度由低到高排列為:

如果運(yùn)算符兩邊運(yùn)算元類型不同,先要將較低類型轉(zhuǎn)換為較高類型,然後再運(yùn)算42

#include<iostream.h>

voidmain()

{

chara='x';

intb=3,f=2;

floatc=2.5678;

doubled=5.2345

longe=32L;

cout<<a-b+d/c-e*f<<endl;

}運(yùn)行結(jié)果為:55.038515

43§2.3

變數(shù)變數(shù):指程式在運(yùn)行時(shí)其值可改變的量。每個(gè)變數(shù)由一個(gè)變數(shù)名惟一標(biāo)識(shí),同時(shí),每個(gè)變數(shù)又具有一個(gè)特定的數(shù)據(jù)類型。不同類型的變數(shù)在內(nèi)存中佔(zhàn)有存儲(chǔ)單元的個(gè)數(shù)不同不能是C++的關(guān)健字。第一個(gè)字元必須是字母或下劃線且由字母、數(shù)字或下劃線組成。一般不要超過(guò)31個(gè)字元。不要與C++中的庫(kù)函數(shù)名、類名和對(duì)象名相同。應(yīng)該儘量有意義。如:numOfStudents;my-car;myCar;iMyCar等區(qū)分大小寫1.變數(shù)的命名規(guī)則:注意:C++中,變數(shù)使用之前一定要定義或說(shuō)明!442.變數(shù)的定義的格式:[存儲(chǔ)類型]類型變數(shù)名;存儲(chǔ)類型有:autoregisterexternstatic默認(rèn)的是autoauto存儲(chǔ)類屬於臨時(shí)性存儲(chǔ),其存儲(chǔ)空間可以被若干變數(shù)多次覆蓋使用。register存儲(chǔ)類存放在通用寄存器中。extern存儲(chǔ)類在所有函數(shù)和程式段中都可引用。static存儲(chǔ)類在內(nèi)存中是以固定地址存放的,在整個(gè)程式運(yùn)行期間都有效。45

例如:inta,b,c;//定義3個(gè)整型變數(shù)a,b,c

和: inta; //定義整型變數(shù)a intb; //定義整型變數(shù)b intc; //定義整型變數(shù)c

二者等價(jià)。3.變數(shù)的初始化:變數(shù)初始化一般採(cǎi)用兩種方式:①在定義變數(shù)時(shí)就給變數(shù)賦初值

例如:

inta=3;

floatb=3.4;

②先定義,再賦植

例如:

inta;

a=3;46

sizeof操作符

typedef

為一個(gè)已有的類型名提供一個(gè)同意詞typedefintINTEGER;//新類型名INTEGERnum1,num2;//完全等價(jià)於:intnum1,num2例:

例:

count<<“sizeofcharis”<<sizeof(char)<<end1;其運(yùn)行的結(jié)果為:sizeofcharis

1其語(yǔ)法形式為:sizeof(類型名)或sizeof(運(yùn)算式)其結(jié)果值為:“類型名”所指定的類型或“運(yùn)算式”的結(jié)果類型所占位元組數(shù)。47§2.4常量常量:指在程式運(yùn)行過(guò)程中其值不能改變的量。C++支持5種類型的常量:浮點(diǎn)型、整型、字元型、布爾型和枚舉型。十進(jìn)位:123,-23456八進(jìn)制:0123,0765十六進(jìn)制:0x123,0xa4d3長(zhǎng)整型:123L,0123L,0X123L無(wú)符號(hào)整形:13579ul

//無(wú)符號(hào)長(zhǎng)整數(shù)1、整型常量2.實(shí)型常量①.小數(shù)形式:由數(shù)字和小數(shù)點(diǎn)組成如:0.123,.234,-56.789等48②.指數(shù)形式:如:123E5,123e5,0.123e8,1.23E7,-0.123e234.字串常量只表示一個(gè)字元,用單撇號(hào)。例:‘a(chǎn)’存儲(chǔ)字元的ASCII碼。例:‘a(chǎn)’在電腦中存為其ASCII碼97

字元常量可與整數(shù)進(jìn)行混合運(yùn)算,它門在功能上等價(jià)轉(zhuǎn)義字元(是以\開頭的特殊的字元常量)常用轉(zhuǎn)義字元:\a;\n

;\t

;\b

;\\

;\’

;\”

;

\ddd;

\xhh

3.字元常量用雙撇號(hào)括起來(lái)的量。如“a”存儲(chǔ)時(shí)系統(tǒng)自動(dòng)在字串常量的末尾加上‘\0’

,表示字串結(jié)束?!產(chǎn)’是字元常量,占一個(gè)位元組,“a”是字串常量,占兩個(gè)位元組。

494.枚舉常量若一個(gè)變數(shù)只有幾種可能的值,就可以把它定義為枚舉類型。其形式為:enum

枚舉類型名

{常量值1,常量值2,…,常量值n};例:enumweekday{sun=7,mon=1,tue,wed,thu,fri,sat};enumcolor{Red,Green,Blue,White,Black};5.常量的定義①若想使某個(gè)變數(shù)的值一直不變可用const來(lái)定義其為一個(gè)常量。一旦加了const修飾符,只能通過(guò)聲明時(shí)初始化其值,而不能在隨後再改變其值.例:計(jì)算圓面積

#include<stdio.h>voidmain()

{

constfloatpi=3.14159;

floatr=3;

printf(“Area=%f\n”,

r*r*pi);

}50②

用#define來(lái)定義常量例:計(jì)算圓面積

#include<stdio.h>

#definePI3.14159

voidmain()

{

floatr=3;

printf(“Area=%f\n”,

r*r*PI);

}在程式編譯前,所有的PI都被替換成3.141592651#include<iostream.h>voidmain(){constintPI=30;intnum,total;floatv,r,h;num=10;total=num*PI;cout<<total<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;cout<<v<<endl;}變數(shù)變數(shù)先定義後使用符號(hào)常量52§2.6輸入/輸出(I/O)

I/O:

C++沒有提供輸入/輸出語(yǔ)句,而是以下兩種方法來(lái)實(shí)現(xiàn):②或由檔stdio.h中定義的庫(kù)函數(shù)scanf()、

printf()來(lái)實(shí)現(xiàn)

①由檔iostream.h中定義的輸入對(duì)象cin、輸出對(duì)象cout與抽取操作符“>>”和插入操作符“<<”來(lái)實(shí)現(xiàn)。

輸入/輸出流(I/0流):C++中把數(shù)據(jù)之間的傳輸操作稱作流。I/0流指輸入或輸出的一系列位元組。1.用標(biāo)準(zhǔn)I/O流庫(kù)實(shí)現(xiàn)輸入輸出:①

輸入:當(dāng)程式需要從鍵盤輸入時(shí),可以使用抽取操作符“>>”從輸入流cin中抽取鍵盤輸入的字元和數(shù)字,並把它賦給指定的變數(shù)。53例2:

doublex;inty;charz;cin>>x>>y>>z;注意:①cin:指標(biāo)準(zhǔn)的輸入設(shè)備(鍵盤)

②>>:提取操作符,從輸入流讀入數(shù)據(jù)

③從控制臺(tái)(鍵盤)接收輸入數(shù)據(jù):cin>>變數(shù)1>>變數(shù)2……

④用空格或回車符作為數(shù)據(jù)之間的分隔符號(hào),每個(gè)輸入數(shù)據(jù)的格式應(yīng)與相應(yīng)變數(shù)的類型相符。

⑤若用程式中用了I/O流則必需在該程式前寫上預(yù)處理指令:

#include<iostream.h>例1:#include<iostream.h>voidmain(){

inta;

cin>>a;}54其運(yùn)行結(jié)果為:i的值為3.14159例:doublei=3.14159;

cout<<“i的值為”<<i;

等價(jià):cout<<“i的值為”;cout<<i;

或等價(jià):cout<<“i的值為”

<<i;

注意:①cout:指標(biāo)準(zhǔn)的輸出設(shè)備(顯示器),用於在螢?zāi)簧陷敵鲎償?shù)的值和雙引號(hào)中的字串。

②<<:插入操作符,把數(shù)據(jù)送到輸出流

③把變數(shù)的值或字串送到控制臺(tái)(螢?zāi)唬┹敵觯?/p>

cout<<運(yùn)算式1<<運(yùn)算式2……

cout<<“字元1”<<“字元2”……④cin,cout在檔<iostream.h>中,故在程式開始必須寫出其檔②

輸出:當(dāng)需要在螢?zāi)簧陷敵鲎償?shù)的值或字串時(shí),可用輸出流庫(kù)對(duì)象

cout與插入操作符“<<”來(lái)實(shí)現(xiàn)。55例:用流進(jìn)行輸入輸出:#include<iostream.h>voidmain(){ intm; charch1,ch2; floatx,y; cin>>m>>ch1>>ch2>>x>>y; cout<<“m=“<<m<<endl; cout<<“ch1=“<<ch1<<“,ch2=“<<ch2<<endl; cout<<“x=“<<x<<“;y=“<<y<<endl;}在C++程式中,對(duì)標(biāo)準(zhǔn)I/O的操作必須說(shuō)明相關(guān)頭檔,cin,cout使用的頭檔是<iostream.h>鍵盤輸入的格式:以空格或回車分隔數(shù)據(jù)。但字元數(shù)據(jù)要注意:空格也是合法字元?!啊眱?nèi)字元原樣輸出56

I/O流的格式控制用控制符(檔iomanip.h中定義的對(duì)象)可以對(duì)輸入輸出格式進(jìn)行控制常用的控制有:dechex

oct

setfill(c)

setprecision(n)

setw(n)

setiosflags(ios::fixed)setiosflags(ios::scientific)

setiosflags(ios::left)setiosflags(ios::right)setiosflags(ios::skipws)setiosflags(ios::uppercase)setiosflags(ios::lowercase)setiosflags(ios::showpoint)setiosflags(ios::showpos)

置基數(shù)為10置基數(shù)為16置基數(shù)為8設(shè)填充字元為c

設(shè)顯示小數(shù)精度為n位

設(shè)域?qū)挒閚個(gè)字元

固定的浮點(diǎn)顯示

指數(shù)表示

左對(duì)齊

右對(duì)齊

忽略前導(dǎo)空白

16進(jìn)制數(shù)大寫輸出

16進(jìn)制數(shù)小寫輸出強(qiáng)制顯示小數(shù)點(diǎn)強(qiáng)制顯示符號(hào)57#include<iostream.h>

#include<iomanip.h>//要用到格式控制符voidmain()

{

doubleamount=22.0/7;

cout<<amount<<endl;

cout<<setprecision(0)<<amount<<endl

<<setprecision(1)<<amount<<endl

<<setprecision(2)<<amount<<endl

<<setprecision(3)<<amount<<endl

<<setprecision(4)<<amount<<endl;

cout<<setiosflags(ios::fixed);

cout<<setprecision(8)<<amount<<endl;

cout<<setiosflags(ios::scientific)

<<amount<<endl;

cout<<setprecision(6);//重新設(shè)置成原默認(rèn)設(shè)置

}

運(yùn)行結(jié)果為:

3.14286

例:3

3

3.1

3.14

3.143

3.14285714

3.14285714e+0058①cout<<setfill('*')

<<setw(2)<<21<<endl

<<setw(3)<<21<<endl

<<setw(4)<<21<<endl;

cout<<setfill('');//恢復(fù)默認(rèn)設(shè)置

運(yùn)行結(jié)果為:

21

*21

**21②number=1001;cout<<"1001:"<<hex

<<setiosftags(ios::uppercase)

<<number<<endl;

運(yùn)行結(jié)果為:

1001:3E9。③cout<<10.0/5<<endl;

cout<<setiosflags(ios::showpoint)

<<10.0/5<<endl;

運(yùn)行結(jié)果為:

2

2.00000

59④cout<<10<<""<<-20<<endl;

cout<<setiosflags(ios::showpos)

<<10<<""<<-20<<endl;

運(yùn)行結(jié)果為:10-20

+10-20

2.調(diào)用標(biāo)準(zhǔn)I/O函數(shù)完成輸入輸出標(biāo)準(zhǔn)函數(shù):各種電腦都提供的一些通用函數(shù)被稱為標(biāo)準(zhǔn)函數(shù)標(biāo)準(zhǔn)I/O函數(shù):常用的是由檔stdio.h定義的輸入函數(shù)scanf()和輸出函數(shù)printf()①

輸出函數(shù):printf()格式:printf(”格式控制串”,輸出項(xiàng)1,輸出項(xiàng)2,…,)功能:將後面的輸出項(xiàng)按前面給定的格式輸出60格式控制串的組成:“普通字串和格式串“格式串:以%開頭,以格式字元結(jié)束。其完整的形式為:%

–0m.nl或h格式字元格式說(shuō)明的起始符號(hào)指定左對(duì)齊輸出指定空位填0指定輸出的寬度及精度輸出長(zhǎng)度修正指出輸出的類型:d:十進(jìn)位

o:八進(jìn)制

x:十六進(jìn)制

c:字元

s:字串

u:無(wú)符號(hào)的十進(jìn)位

f:小數(shù)形式

e:指數(shù)形式表示

例:floata=2.14235;printf(“a=%–05.2f”,a);其輸出結(jié)果為:a=002.14

61實(shí)例1:

#include<stdio.h>voidmain(){printf("ThisisaCprogram.\n");}實(shí)例2:

#include“stdio.h”voidmain(){inta=1,b=2,c=100;printf("a=%d,b=%3d,d=%3d%%\n",a,b,a*c/b);printf("%d,%o,%x\n",c,c,c);}

輸出:a=1,

b=

2,

d=

50%100,144,

6462格式:scanf(”格式控制串”,地址1,地址2,…,)②輸入函數(shù):scanf()%*mh或l格式字元格式說(shuō)明的起始符號(hào)虛讀,不送變數(shù)域?qū)捳f(shuō)明短整型或常整型及雙精度型指出輸入的類型:d:十進(jìn)位

o:八進(jìn)制

x:十六進(jìn)制

c:字元

s:字串

u:無(wú)符號(hào)的十進(jìn)位

f:小數(shù)形式

e:指數(shù)形式表示

“格式控制串”完整的組成:變數(shù)a的地址可表示為:&a功能:將數(shù)據(jù)按給定的格式存入對(duì)應(yīng)的變數(shù)中。實(shí)例:1:scanf("%3d%2d",&x,&y);

輸入序列:123456[ENTER]

結(jié)果:x=123,y=452:scanf("%d,%d:%f",&x,&y,&z);

輸入序列:1,2:3.5[ENTER]

結(jié)果:x=1,y=2,z=3.5633:scanf("%d%d%d",&x,&y,&z);

輸入序列一:1

2

3[ENTER]

結(jié)果:x=1,y=2,z=3

輸入序列二:1[TAB]23[ENTER]

輸入序列三:1[ENTER]

23[ENTER]

結(jié)果與輸入序列一的結(jié)果一樣。4:scanf("%2d

%*2d,%2d",&x,&y);

輸入序列:1234,56[ENTER]

結(jié)果:x=12,y=56。注意:在scanf中,可以使用[ENTER]、空格或[TAB]作為數(shù)據(jù)之間的分隔符號(hào)。645:scanf(”x=%d",&x);

要使x的值等於12,從鍵盤應(yīng)怎樣輸入?

正確的輸入序列:x=12[ENTER]

注意:字元x=被過(guò)濾掉了

若輸入序列為:12[ENTER]錯(cuò)誤!

65§3.1

C++的運(yùn)算符運(yùn)算符:在程式中,許多語(yǔ)句是由運(yùn)算式構(gòu)成的。運(yùn)算式是由運(yùn)算符和運(yùn)算數(shù)組成的式子。運(yùn)算符指運(yùn)算的符號(hào),而運(yùn)算數(shù)包含常量、變數(shù)和函數(shù)等。運(yùn)算符的分類:

單目運(yùn)算(一元運(yùn)算符,只需一個(gè)運(yùn)算元)

雙目運(yùn)算(二元運(yùn)算符,需兩個(gè)運(yùn)算元)

三目運(yùn)算(三元運(yùn)算符,需三個(gè)運(yùn)算元)

按運(yùn)算符連接運(yùn)算對(duì)象的個(gè)數(shù)分為:②

按其在運(yùn)算式中所起的作用又可分為:66

算術(shù)運(yùn)算符

+-*/%

關(guān)係運(yùn)算符

<<=>===!=

邏輯運(yùn)算符

!&&||

位運(yùn)算符

<<>>~|^&

自增自減運(yùn)算符

++--

賦值運(yùn)算符

=及其擴(kuò)展(+=-=*=/=%=等)條件運(yùn)算符

?:

指針運(yùn)算符

*和

&

逗號(hào)運(yùn)算符

,

分量運(yùn)算符

*->

函數(shù)調(diào)用運(yùn)算符()下標(biāo)運(yùn)算符[]

求位元組運(yùn)算符

sizeof

強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:(type)

671、算術(shù)運(yùn)算符運(yùn)算符名字實(shí)例+加12+4.9//得出16.9-減3.98-4//得出-0.02*乘2*3.4//得出6.8/除9/2.0//得出4.5%取餘13%3//得出12、自加和自減運(yùn)算符++是自增運(yùn)算符,――自減運(yùn)算符,它門都是單目運(yùn)算符,都是將數(shù)值變數(shù)的值加1或減1,該類操作符應(yīng)用於變數(shù)而不能應(yīng)用於常量。例:inti=5;

68運(yùn)算符名字實(shí)例++自加(首碼)++i+10//得出16,i變?yōu)?++自加(尾碼)i+++10//得出15,i變?yōu)?--自減(首碼)--i+10//得出14,i變?yōu)?--自減(尾碼)i--+10//得出15,i變?yōu)?注意:

①++或--只能用於變數(shù)

②++i或--i是先增值再引用,i++或i--是先引用再增值

③自右向左將運(yùn)算符結(jié)合在一起,但調(diào)用函數(shù)時(shí),實(shí)參的求值順序一般為自右向左。a=6;b=6;

c1=a++;c2=++b;

例:執(zhí)行結(jié)果為:c1=6,a=7,b=7,c2=7inta=1;printf(“%d,%d,%d”,a++,a++,a++);輸出的結(jié)果為3,2,1而不是1,2,3。

693、關(guān)係運(yùn)算符

關(guān)係運(yùn)算符用於數(shù)值之間的比較,運(yùn)算式的值為1(表示true),或?yàn)?(表示false),見表:運(yùn)算符名字實(shí)例==等於5==5//得出1!=不等於5!=5//得出0<小於5<5.5//得出1<=小於或等於5<=5//得出1>大於5>5.5//得出0>=大於或等於6.3>=5//得出1關(guān)係運(yùn)算符都是雙目運(yùn)算符,兩邊的數(shù)值結(jié)果必須是類型相同的其結(jié)合性是從左到右,優(yōu)先順序低於算術(shù)運(yùn)算符。字串不應(yīng)當(dāng)用關(guān)係運(yùn)算符比較,因?yàn)楸槐容^的不是字串的內(nèi)容本身,而是字串的地址70①如何表示數(shù)學(xué)中的邏輯關(guān)係:0≤a≤9?用0<=a<=9表示?行嗎?X

因?yàn)?<=a<=9等價(jià)於(0<=a)<=9若a=5則(0<=a)<=9的值為:1②如何表示數(shù)學(xué)中的邏輯系:0≤a≤9

0≤a≤9應(yīng)表示為為:a>=0&&a<=9714、邏輯運(yùn)算符運(yùn)算符名字實(shí)例!邏輯非

!(5==5)

//得出0&&邏輯與5<6&&6<6

//得出0||邏輯或5<6||6<5

//得出1注意:

①邏輯非的優(yōu)先順序最高,邏輯與次之,邏輯或最低

②&&:如果第一運(yùn)算元為0,則不再求解第二運(yùn)算元。

例:(x=0)&&(y=4):只完成了x的賦值,不再操作y=4,所以,

y沒有實(shí)現(xiàn)賦值。

③||

:如果第一運(yùn)算元為1,則不再求解第二運(yùn)算元。

例:(x=4)||(y=4)結(jié)果如何?例:該式5>3&&2||8<3-!0的值為:172例:從鍵盤上輸入年份year(4位十進(jìn)位數(shù)),判斷其是否閏年。

閏年的條件是:能被4整除、但不能被100整除;或者能被400整除。#include<stdio.h>voidmain(){intyear;printf("Pleaseinputtheyear:");scanf("%d",&year);if((year%4==0&&year%100!=0)||(year%400==0))printf("%disaleapyear.\n",year);elseprintf("%disnotaleapyear.\n",year);}735、條件運(yùn)算符

一般形式為:

運(yùn)算式1?運(yùn)算式2:運(yùn)算式3

其運(yùn)算方式為:先計(jì)算運(yùn)算式1的值,如果其值為非0(真),則表達(dá)式2的值就是整個(gè)運(yùn)算式的最終結(jié)果;否則運(yùn)算式

3的值就是整個(gè)運(yùn)算式的值。

運(yùn)行的結(jié)果為:x=y?no!例如:①x=10;

y=x>9?100:200;②x=10;y=20;

printf(“x=y?%s!”,x==y?“yes”:“no”);//y=10074注意:

①條件運(yùn)算符的結(jié)合性是自右向左。例如:a>b?a:c>d?c:d;

//相當(dāng)於a>b?a:(c>d?c:d)

②條件運(yùn)算符優(yōu)先順序高於賦值運(yùn)算符低於關(guān)係和算術(shù)運(yùn)算符。例如:

a>b?a-b:b-a;//相當(dāng)於a>b?(a-b):(b-a)

6、位運(yùn)算符

位運(yùn)算符是對(duì)其運(yùn)算元按其二進(jìn)制形式逐位進(jìn)行運(yùn)算,參加位運(yùn)算的運(yùn)算元必須為整數(shù)。C++提供6種位運(yùn)算符:

運(yùn)算符名字功能~取反按位求反&逐位與把兩運(yùn)算元對(duì)應(yīng)的二進(jìn)位位進(jìn)行邏輯與|逐位或把兩運(yùn)算元對(duì)應(yīng)的二進(jìn)位位進(jìn)行邏輯或^逐位異或把兩個(gè)運(yùn)算元對(duì)應(yīng)的二進(jìn)位位進(jìn)行異或<<逐位左移將左運(yùn)算元的每個(gè)二進(jìn)位位左移右運(yùn)算元位>>逐位右移左運(yùn)算元的每一個(gè)二進(jìn)位位右移右運(yùn)算元位757、賦值運(yùn)算符

①=是賦值運(yùn)算符,它的作用是將一個(gè)運(yùn)算式的值賦給一個(gè)左值。

左值:是指能出現(xiàn)在賦植運(yùn)算式左邊的運(yùn)算式,左值能存放數(shù)據(jù),能

夠被修改,不能是常量??捎米償?shù)作左值,指針和引用也可以作左值。右值:只能出現(xiàn)在賦植運(yùn)算式右邊。

②賦值運(yùn)算符“=”的一般格式為:變數(shù)=運(yùn)算式;

例如:inti=1.2*3; intj;j=3*(4+5); //j的值變?yōu)?7//結(jié)果為3,而不是3.6例:二進(jìn)位數(shù)左移:0110<<1其值為:1100

二進(jìn)位數(shù)右移(缺位補(bǔ)最左一位的數(shù)值)1100>>1

其值為:111076③賦值運(yùn)算符的種類:運(yùn)算符實(shí)例等價(jià)於=n=25

+=n+=25n=n+25-=n-=25n=n-25*=n*=25n=n*25/=n/=25n=n/25%=n%=25n=n%25&=n&=0xF2F2n=n&0xF2F2|=n|=0xF2F2n=n|0xF2F2^=n^=0xF2F2n=n^0xF2F2<<=n<<=4n=n<<4>>=n>>=4n=n>>477注意:

①賦值運(yùn)算式本身的運(yùn)算結(jié)果是右側(cè)運(yùn)算式的值,而結(jié)果類型是左側(cè)

變數(shù)的數(shù)據(jù)類型.

②賦值運(yùn)算符的結(jié)合性是從右至左的

例如:inta=12;a+=a-=a*=a;表示:

a=a*a//a=12*12=144

a=a-a//a=144-144=0

a=a+a//a=0+0=0注意:x*=y+8等價(jià)於x=x*(y+8),788、sizeof運(yùn)算符(求位元組運(yùn)算符)

sizeof運(yùn)算符是單目運(yùn)算符,用於計(jì)算運(yùn)算對(duì)象在內(nèi)存中所占位元組的多少,它有兩種形式:

sizeof(類型識(shí)別字);

sizeof運(yùn)算式;

例如:inta,則sizeof(a)表示:求變數(shù)a在內(nèi)存中所占位元組數(shù)。inta[10],則sizeof(a)表示:求數(shù)組a在內(nèi)存中所占位元組數(shù)。

9、逗號(hào)運(yùn)算符①逗號(hào)運(yùn)算符用於將多個(gè)運(yùn)算式連在一起,並將各運(yùn)算式從左到右的順序依次求值,且最右端的運(yùn)算式的結(jié)果,為整個(gè)逗號(hào)運(yùn)算式的結(jié)果。②一般格式為:運(yùn)算式1,運(yùn)算式2,……,運(yùn)算式n(i=3,i++,++i,i+5)這個(gè)逗號(hào)運(yùn)算式的值是10,i的值為579C++運(yùn)算符的優(yōu)先順序和結(jié)合性:

①當(dāng)不同的運(yùn)算符混合運(yùn)算時(shí),運(yùn)算順序是根據(jù)運(yùn)算符的優(yōu)先順序而定的。②若各運(yùn)算符有相同的優(yōu)先順序,運(yùn)算順序是從左向右,還是從右向左,是由運(yùn)算符的結(jié)合性確定的。所謂結(jié)合性是指運(yùn)算符可以和左邊的運(yùn)算式結(jié)合,也可以與右邊的運(yùn)算式結(jié)合。C++運(yùn)算符的優(yōu)先順序和結(jié)合性見表(P=課本35頁(yè))注意:

①優(yōu)先順序:一般情況為:

1)單目,雙目,三目,賦值

2)算術(shù),移位,關(guān)係,位運(yùn)算,邏輯,條件,賦植,逗號(hào)

②結(jié)合性:僅單目、三目和賦值的結(jié)合性是從右到左。80括??!++,--,sizeof*,/,%+,-

移位(>><<)關(guān)係(>,>=,<,<=和==,!=)位運(yùn)算&&||?:賦值運(yùn)算逗號(hào)運(yùn)算高低③常用運(yùn)算符優(yōu)先順序:即:先()→單目!→算數(shù)→移位→關(guān)係→位運(yùn)算→&&和︳︳→?→賦值→逗號(hào)81運(yùn)算式:

①運(yùn)算式:由運(yùn)算符、運(yùn)算元組成的計(jì)算式子。最簡(jiǎn)單的運(yùn)算式只有一個(gè)常量或變數(shù)。②運(yùn)算式的分類(據(jù)運(yùn)算式中的運(yùn)算符的種類):算術(shù)運(yùn)算式:a+5.2/3.0-9%5關(guān)係運(yùn)算式:(a+b*c)>d邏輯運(yùn)算式:a>b&&c>d賦值運(yùn)算式:a=b+c、a+=b*c+d和a=b=c=1條件運(yùn)算式:a>b?a:b逗號(hào)運(yùn)算式:x=a+b,y=c+d,z=x+y混合運(yùn)算式:(a>b)+(a=b+c)*(x>y?x:y)

82③運(yùn)算式求值的順序:●按運(yùn)算符的優(yōu)先順序高低次序執(zhí)行。例如,先乘除後加減●如果在一個(gè)運(yùn)算對(duì)象(或稱運(yùn)算元)兩側(cè)的運(yùn)算符的優(yōu)先順序相同,則按C語(yǔ)言規(guī)定的結(jié)合方向(結(jié)合性)進(jìn)行。且運(yùn)算元必需化成同類型才能計(jì)算例:算術(shù)運(yùn)算符的結(jié)合方向是“自左至右”,即:在執(zhí)行“a-b+c”時(shí),變數(shù)b先與減號(hào)結(jié)合,執(zhí)行“a-b”83數(shù)據(jù)類型轉(zhuǎn)換:

C++中數(shù)據(jù)類型轉(zhuǎn)換有兩類,①隱式轉(zhuǎn)換:是由編譯器自動(dòng)將不同類型的數(shù)據(jù)轉(zhuǎn)換為相同類型後再進(jìn)行運(yùn)算。隱式類型轉(zhuǎn)換按從低到高的順序進(jìn)行:int

unsigned

long

unsignedlong

double

longdouble↑

↑short,char

float②顯式轉(zhuǎn)換:由程式員顯式指出的類型轉(zhuǎn)換,轉(zhuǎn)換形式有兩種:

類型名(運(yùn)算式)

(類型名)運(yùn)算式例如:

doublef=3.6;

intn=(int)f;

這樣n為3。

84§語(yǔ)句語(yǔ)句:是組成程式最基本的單位,語(yǔ)句是最小的可執(zhí)行單元,一條語(yǔ)句由一個(gè)分號(hào)結(jié)束。語(yǔ)句分類:

根據(jù)複雜程度的不同分:①簡(jiǎn)單語(yǔ)句:空語(yǔ)句是簡(jiǎn)單語(yǔ)句,僅由一個(gè)分號(hào)組成。②複合語(yǔ)句:由一對(duì)花括弧“{}”和括弧裏的一系列簡(jiǎn)單語(yǔ)句組成,⒉

根據(jù)執(zhí)行流程的不同分:順序控制語(yǔ)句:指按照語(yǔ)句在程式中先後次序一條一條的順次執(zhí)行的語(yǔ)句選擇控制語(yǔ)句:據(jù)一個(gè)條件或一個(gè)值從一組語(yǔ)句中選擇一個(gè)執(zhí)行。迴圈控制語(yǔ)句:根據(jù)某個(gè)條件重複執(zhí)行一組語(yǔ)句

85§順序控制語(yǔ)句順序控制語(yǔ)句:其語(yǔ)句在執(zhí)行過(guò)程中,程式的流程不會(huì)發(fā)生轉(zhuǎn)移。常見的順序結(jié)構(gòu)語(yǔ)句有:聲明語(yǔ)句、賦值語(yǔ)句和輸入輸出語(yǔ)句。例如:doubledval;//聲明語(yǔ)句dval=302.2948;//賦值語(yǔ)句,給變數(shù)賦值

cout<<"congratulation!";//輸出語(yǔ)句

cin>>dval;//輸入語(yǔ)句86§選擇控制語(yǔ)句選擇控制語(yǔ)句:又稱為分支語(yǔ)句,它通過(guò)對(duì)給定的條件進(jìn)行判斷,從而決定執(zhí)行兩個(gè)或多個(gè)分支中的哪一支。因此,在編寫選擇語(yǔ)句之前,應(yīng)該首先明確判斷條件是什麼,並確定當(dāng)判斷結(jié)果為“真”或“假”時(shí)應(yīng)分別執(zhí)行什麼樣的操作。選擇控制語(yǔ)句種類:if…else語(yǔ)句和switch語(yǔ)句。

⒈if語(yǔ)句有三種格式:

87運(yùn)算式執(zhí)行語(yǔ)句2執(zhí)行語(yǔ)句1成立不成立運(yùn)算式執(zhí)行語(yǔ)句成立不成立①

if(<運(yùn)算式>)

<語(yǔ)句>②

if(<運(yùn)算式>)

<語(yǔ)句1>

else<語(yǔ)句2>88運(yùn)算式1運(yùn)算式2運(yùn)算式3運(yùn)算式4語(yǔ)句1語(yǔ)句2語(yǔ)句3語(yǔ)句4假假假語(yǔ)句5假真真真真③if(運(yùn)算式1)語(yǔ)句1

elseif(運(yùn)算式2)語(yǔ)句2

elseif(運(yùn)算式3)語(yǔ)句3

else語(yǔ)句n89例:求a和b兩數(shù)中較大的一個(gè)。a>b?max=bmax=a成立不成立#include<iostream.h>voidmain(){inta,b,max;cout<<"Inputaandb:";cin>>a>>b;if(a>b)max=a;elsemax=b;cout<<“Themaxofaandb:”<<max;}90例:判斷用戶的輸入,如果輸入的數(shù)值大於0,則在螢?zāi)簧巷@示“正數(shù)”;否則在螢?zāi)簧巷@示“不是正數(shù)”。#include<iostream.h>voidmain(){floata;cin>>a;if(a>0)cout<<“正數(shù)”<<endl;elsecout<<“不是正數(shù)”<<endl;}91例:輸入兩個(gè)整數(shù),比較兩個(gè)數(shù)的大小。#include<iostream.h>voidmain(){intx,y;cout<<"Enterxandy:";cin>>x>>y;

if(x!=y)

if(x>y)cout<<x<<“>“<<y<<endl;

elsecout<<x<<“<“<<y<<endl;

else

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論