東南大學(xué)C++課件總.ppt_第1頁(yè)
東南大學(xué)C++課件總.ppt_第2頁(yè)
東南大學(xué)C++課件總.ppt_第3頁(yè)
東南大學(xué)C++課件總.ppt_第4頁(yè)
東南大學(xué)C++課件總.ppt_第5頁(yè)
已閱讀5頁(yè),還剩1090頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、程序設(shè)計(jì)與語(yǔ)言(),培養(yǎng)目標(biāo) 課程簡(jiǎn)介 實(shí)驗(yàn) 學(xué)時(shí) 考核形式 教材,主講:何潔月,培養(yǎng)目標(biāo),1.建立基本的計(jì)算機(jī)程序設(shè)計(jì)概念體系和基本的程序設(shè)計(jì)方法。 2.理解和掌握C+語(yǔ)言的基本語(yǔ)法和語(yǔ)義,初步理解面向?qū)ο蟮乃枷?,初步掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的方法。 3. 逐步提高學(xué)生的編程能力和調(diào)試程序的能力。 為后面的學(xué)習(xí)打好基礎(chǔ)。,課程簡(jiǎn)介,第章 概述 計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的發(fā)展(一般了解) 面向?qū)ο蟮姆椒ǎㄒ话懔私猓?面向?qū)ο蟮能浖_發(fā)(一般了解) 信息的表示與存儲(chǔ)(理解) 程序的開發(fā)過程(一般了解) 小結(jié),課程簡(jiǎn)介,第章 簡(jiǎn)單程序設(shè)計(jì) 語(yǔ)言概述(一般理解) 基本數(shù)據(jù)類型和表達(dá)式(掌握) 數(shù)據(jù)的輸入與輸出

2、(掌握) 算法的基本控制結(jié)構(gòu)(掌握) 自定義數(shù)據(jù)類型(掌握) 小結(jié),課程簡(jiǎn)介,第章 函數(shù) 函數(shù)的定義與使用(掌握) 內(nèi)聯(lián)函數(shù)(掌握) 帶默認(rèn)形參值的函數(shù)(掌握) 函數(shù)重載(掌握) 函數(shù)模板(掌握) 使用系統(tǒng)函數(shù)(掌握) 小結(jié),課程簡(jiǎn)介,第章 類與對(duì)象 面向?qū)ο蟮乃枷耄ɡ斫猓?面向?qū)ο蟪绦蛟O(shè)計(jì)的基本特點(diǎn)(理解) 類和對(duì)象(掌握) 構(gòu)造函數(shù)和析構(gòu)函數(shù)(掌握) 類的組合(掌握) 類模板(掌握) 面向?qū)ο髽?biāo)記(一般了解) 小結(jié),課程簡(jiǎn)介,第章 程序的結(jié)構(gòu) 程序的結(jié)構(gòu)(理解) 生存期(掌握) 數(shù)據(jù)和函數(shù)(掌握) 靜態(tài)成員(掌握) 友元(掌握) 共享數(shù)據(jù)的保護(hù)(掌握) 多文件結(jié)構(gòu)和編譯預(yù)處理命令(掌握)

3、小結(jié),課程簡(jiǎn)介,第章 數(shù)組、指針與字符串 數(shù)組(掌握) 指針(掌握) 動(dòng)態(tài)內(nèi)存分配(掌握) 字符串(掌握),實(shí)驗(yàn),實(shí)驗(yàn)共分次,每次小時(shí),實(shí)驗(yàn)環(huán)境為:visual c+6.0 實(shí)驗(yàn):visual c+6.0開發(fā)環(huán)境應(yīng)用入門 實(shí)驗(yàn):簡(jiǎn)單程序設(shè)計(jì) 實(shí)驗(yàn):函數(shù)的應(yīng)用 實(shí)驗(yàn):類與對(duì)象 實(shí)驗(yàn):程序的結(jié)構(gòu) 實(shí)驗(yàn):數(shù)組、指針與字符串,教材,教材: C+語(yǔ)言程序設(shè)計(jì) C+語(yǔ)言程序設(shè)計(jì)習(xí)題與實(shí)驗(yàn)指導(dǎo),考核,總評(píng)成績(jī)=平時(shí)作業(yè)+上機(jī)實(shí)驗(yàn)+期末筆試成績(jī)(閉卷)期末上機(jī)成績(jī)(閉卷) 平時(shí)作業(yè)占 10% 平時(shí)上機(jī)實(shí)驗(yàn)占 10% 期末筆試成績(jī)(閉卷)占 60% 期末上機(jī)成績(jī)(閉卷)占 20%,第一章 緒論,計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)

4、言的發(fā)展 面向?qū)ο蟮姆椒?面向?qū)ο蟮能浖_發(fā) 信息的表示與存儲(chǔ) 程序的開發(fā)過程,1.1計(jì)算機(jī)語(yǔ)言的發(fā)展,計(jì)算機(jī)的工作是用程序來(lái)控制的 程序是指令的集合。 指令是計(jì)算機(jī)可以識(shí)別的命令。,計(jì)算機(jī)程序,機(jī)器語(yǔ)言,由計(jì)算機(jī)硬件系統(tǒng)可以識(shí)別的二進(jìn)制指令組成的語(yǔ)言稱為機(jī)器語(yǔ)言。 計(jì)算機(jī)發(fā)展的初期,軟件工程師們只能用機(jī)器語(yǔ)言來(lái)編寫程序。這一階段,在人類的自然語(yǔ)言和計(jì)算機(jī)編程語(yǔ)言之間存在著巨大的鴻溝。 例如 1011 1111 1101 缺點(diǎn):難懂,不易修改,移植性差,匯編語(yǔ)言,匯編語(yǔ)言將機(jī)器指令映射為一些可以被人讀懂的助記符,如ADD、SUB等。 此時(shí)編程語(yǔ)言與人類自然語(yǔ)言間的鴻溝略有縮小,但仍與人類的思維

5、相差甚遠(yuǎn)。因?yàn)樗某橄髮哟翁停绦騿T需要考慮大量的機(jī)器細(xì)節(jié)。 例如 ADD CX,DX 將DX的內(nèi)容加進(jìn)CX 。不能立即執(zhí)行,需要匯編,變成目標(biāo)程序。,高級(jí)語(yǔ)言,高級(jí)語(yǔ)言屏蔽了機(jī)器的細(xì)節(jié),提高了語(yǔ)言的抽象層次,程序中可以采用具有一定涵義的數(shù)據(jù)命名和容易理解的執(zhí)行語(yǔ)句。這使得在書寫程序時(shí)可以聯(lián)系到程序所描述的具體事物。 例如 if y3 z=x+y; 類似英語(yǔ)和數(shù)學(xué)表達(dá)式,高級(jí)語(yǔ)言,分成 解釋方式與編譯方式,解 釋 程 序,運(yùn) 行 結(jié) 果,編 譯 程 序,目 標(biāo) 程 序,初 始 數(shù) 據(jù),目 標(biāo) 程 序,源 程 序,源程序,初始數(shù)據(jù),運(yùn) 行 結(jié) 果,高級(jí)語(yǔ)言發(fā)展:,第一代語(yǔ)言是對(duì)數(shù)學(xué)表達(dá)式有很強(qiáng)

6、的運(yùn)算處理能力 代表是Fortran 和Algol 60 第二代語(yǔ)言的重點(diǎn)如何有效地表達(dá)算法 代表是Pascal 和C 第三代語(yǔ)言引入抽象數(shù)據(jù)類型的程序設(shè)計(jì)語(yǔ)言 代表是被認(rèn)為是基于對(duì)象的語(yǔ)言 第四代面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言 代表是Smalltalk、Eiffel、c+、Java,面向?qū)ο蟮恼Z(yǔ)言,出發(fā)點(diǎn): 更直接地描述客觀世界中存在的事物(對(duì)象)以及它們之間的關(guān)系。 特點(diǎn): 是高級(jí)語(yǔ)言。 將客觀事物看作具有屬性和行為的對(duì)象。 通過抽象找出同一類對(duì)象的共同屬性和行為,形成類。 通過類的繼承與多態(tài)實(shí)現(xiàn)代碼重用,面向?qū)ο蟮恼Z(yǔ)言,優(yōu)點(diǎn): 使程序能夠比較直接地反問題域的本來(lái)面目,軟件開發(fā)人員能夠利用人類認(rèn)識(shí)事

7、物所采用的一般思維方法來(lái)進(jìn)行軟件開發(fā)。,語(yǔ)言的鴻溝,面向?qū)ο蟮恼Z(yǔ)言,自然語(yǔ)言,非面向?qū)ο蟮恼Z(yǔ)言,匯編語(yǔ)言,機(jī)器語(yǔ)言,對(duì)問題域的認(rèn)識(shí)(人,語(yǔ)言的鴻溝,編程(人,程序的理解和執(zhí)行(機(jī)器,程序的目的:用于數(shù)學(xué)計(jì)算 主要工作:設(shè)計(jì)求解問題的過程 缺點(diǎn):對(duì)于龐大、復(fù)雜的程序難以開發(fā)和維護(hù),1.2 面向?qū)ο蟮姆椒?面向?qū)ο蠓椒ǖ挠蓙?lái) 一、程序設(shè)計(jì)方法的發(fā)展歷程 面向過程的程序設(shè)計(jì)方法,二、程序設(shè)計(jì)方法的發(fā)展歷程面向過程的結(jié)構(gòu)化程序設(shè)計(jì)方法,設(shè)計(jì)思路 自頂向下、逐步求精。采用模塊分解與功能抽象,自頂向下、分而治之。 程序結(jié)構(gòu): 按功能劃分為若干個(gè)基本模塊,形成一個(gè)樹狀結(jié)構(gòu)。 各模塊間的關(guān)系盡可能簡(jiǎn)單,功能上

8、相對(duì)獨(dú)立;每一模塊內(nèi)部均是由順序、選擇和循環(huán)三種基本結(jié)構(gòu)組成。 其模塊化實(shí)現(xiàn)的具體方法是使用子程序。,優(yōu)點(diǎn): 有效地將一個(gè)較復(fù)雜的程序系統(tǒng)設(shè)計(jì)任務(wù)分解成許多易于控制和處理的子任務(wù),便于開發(fā)和維護(hù)。,缺點(diǎn):可重用性差、數(shù)據(jù)安全性差、難以開發(fā)圖形界面的應(yīng)用 把數(shù)據(jù)和處理數(shù)據(jù)的過程分離為相互獨(dú)立的實(shí)體。 當(dāng)數(shù)據(jù)結(jié)構(gòu)改變時(shí),所有相關(guān)的處理過程都要進(jìn)行相應(yīng)的修改。 每一種相對(duì)于老問題的新方法都要帶來(lái)額外的開銷。 圖形用戶界面的應(yīng)用,很難用過程來(lái)描述和實(shí)現(xiàn),開發(fā)和維護(hù)都很困難。,三、程序設(shè)計(jì)方法的發(fā)展歷程 面向?qū)ο蟮姆椒?將數(shù)據(jù)及對(duì)數(shù)據(jù)的操作方法封裝在一起,作為一個(gè)相互依存、不可分離的整體對(duì)象。 對(duì)同類型

9、對(duì)象抽象出其共性,形成類。 類通過一個(gè)簡(jiǎn)單的外部接口,與外界發(fā)生關(guān)系。 對(duì)象與對(duì)象之間通過消息進(jìn)行通訊。,優(yōu)點(diǎn): 程序模塊間的關(guān)系更為簡(jiǎn)單,程序模塊的獨(dú)立性、數(shù)據(jù)的安全性就有了良好的保障。 通過繼承與多態(tài)性,可以大大提高程序的可重用性,使得軟件的開發(fā)和維護(hù)都更為方便。,面向?qū)ο蟮幕靖拍?對(duì)象,一般意義上的對(duì)象: 是現(xiàn)實(shí)世界中一個(gè)實(shí)際存在的事物。 可以使有形的(比如一輛汽車),也可以是無(wú)形的(比如一項(xiàng)計(jì)劃)。 是構(gòu)成世界的一個(gè)獨(dú)立單位,具有: 靜態(tài)特征:可以用某種數(shù)據(jù)來(lái)描述 動(dòng)態(tài)特征:對(duì)象所表現(xiàn)的行為或具有的功能,面向?qū)ο蠓椒ㄖ械膶?duì)象: 是系統(tǒng)中用來(lái)描述客觀事物的一個(gè)實(shí)體,它是用來(lái)構(gòu)成系統(tǒng)的一

10、個(gè)基本單位。對(duì)象由一組屬性和一組行為構(gòu)成。 屬性:用來(lái)描述對(duì)象靜態(tài)特征的數(shù)據(jù)項(xiàng)。 行為:用來(lái)描述對(duì)象動(dòng)態(tài)特征的操作序列。,面向?qū)ο蟮幕靖拍?類,分類人類通常的思維方法 分類所依據(jù)的原則抽象 忽略事物的非本質(zhì)特征,只注意那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性,把具有共同性質(zhì)的事物劃分為一類,得出一個(gè)抽象的概念。 例如,石頭、樹木、汽車、房屋等都是人們?cè)陂L(zhǎng)期的生產(chǎn)和生活實(shí)踐中抽象出的概念。,面向?qū)ο蠓椒ㄖ械念?具有相同屬性和服務(wù)的一組對(duì)象的集合 為屬于該類的全部對(duì)象提供了抽象的描述,包括屬性和行為兩個(gè)主要部分。 類與對(duì)象的關(guān)系:猶如模具與鑄件之間的關(guān)系,一個(gè)屬于某類的對(duì)象稱為該類的一個(gè)

11、實(shí)例。,集合成員 抽象描述具體實(shí)例,集合成員 抽象描述具體實(shí)例,面向?qū)ο蟮幕靖拍?封裝,把對(duì)象的屬性和服務(wù)結(jié)合成一個(gè)獨(dú)立的系統(tǒng)單位。 盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié)。對(duì)外形成一個(gè)邊界(或者說一道屏障),只保留有限的對(duì)外接口使之與外部發(fā)生聯(lián)系。,封裝,顧客,面向?qū)ο蟮幕靖拍?繼承,繼承對(duì)于軟件復(fù)用有著重要意義,是面向?qū)ο蠹夹g(shù)能夠提高軟件開發(fā)效率的重要原因之一。 定義:特殊類的對(duì)象擁有其一般類的全部屬性與服務(wù),稱作特殊類對(duì)一般類的繼承。 例如:將輪船作為一個(gè)一般類,客輪便是一個(gè)特殊類。,哺乳動(dòng)物 熱血、有毛發(fā)、用奶哺育幼仔,狗 有犬牙、食肉、特定的骨骼結(jié)構(gòu)、群居,柯利狗 尖鼻子、身體顏色紅白相間、適

12、合放牧,面向?qū)ο蟮幕靖拍?多態(tài)性,多態(tài)是指在一般類中定義的屬性或行為,被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個(gè)屬性或行為在一般類及其各個(gè)特殊類中具有不同的語(yǔ)義。 例如: 數(shù)的加法-實(shí)數(shù)的加法 -復(fù)數(shù)的加法 例動(dòng)物叫,面向?qū)ο蟮能浖こ?面向?qū)ο蟮能浖こ淌敲嫦驅(qū)ο蠓椒ㄔ谲浖こ填I(lǐng)域的全面應(yīng)用。它包括: 面向?qū)ο蟮姆治觯∣OA) 面向?qū)ο蟮脑O(shè)計(jì)(OOD) 面向?qū)ο蟮木幊蹋∣OP) 面向?qū)ο蟮臏y(cè)試(OOT) 面向?qū)ο蟮能浖S護(hù)(OOSM),面向?qū)ο蟮能浖_發(fā),傳統(tǒng)的軟件工程方法,面向?qū)ο蟮能浖こ谭椒?自然語(yǔ)言,分析與設(shè)計(jì)的鴻溝,編程語(yǔ)言,自然語(yǔ)言,面向?qū)ο蟮木幊?/p>

13、語(yǔ)言,系統(tǒng)分析,系統(tǒng)分析階段應(yīng)該扼要精確地抽象出系統(tǒng)必須做什么,但是不關(guān)心如何去實(shí)現(xiàn)。 面向?qū)ο蟮南到y(tǒng)分析,直接用問題域中客觀存在的事物建立模型中的對(duì)象,對(duì)單個(gè)事物及事物之間的關(guān)系,都保留他們的原貌,不做轉(zhuǎn)換,也不打破原有界限而重新組合,因此能夠很好地映射客觀事物。,設(shè)計(jì),針對(duì)系統(tǒng)的一個(gè)具體實(shí)現(xiàn)運(yùn)用面向?qū)ο蟮姆椒?。其中包括兩方面的工作?把OOA模型直接搬到OOD,作為OOD的一部分 針對(duì)具體實(shí)現(xiàn)中的人機(jī)界面、數(shù)據(jù)存儲(chǔ)、任務(wù)管理等因素補(bǔ)充一些與實(shí)現(xiàn)有關(guān)的部分。,編程,OOP工作就是用一種面向?qū)ο蟮木幊陶Z(yǔ)言把OOD模型中的每個(gè)成分書寫出來(lái),是面向?qū)ο蟮能浖_發(fā)最終落實(shí)的重要階段。,測(cè)試,測(cè)試的任

14、務(wù)是發(fā)現(xiàn)軟件中的錯(cuò)誤。 在面向?qū)ο蟮能浖y(cè)試中繼續(xù)運(yùn)用面向?qū)ο蟮母拍钆c原則來(lái)組織測(cè)試,以對(duì)象的類作為基本測(cè)試單位,可以更準(zhǔn)確的發(fā)現(xiàn)程序錯(cuò)誤并提高測(cè)試效率。,維護(hù),將軟件交付使用后,工作并沒有完結(jié),還要根據(jù)軟件的運(yùn)行情況和用戶的需求,不斷改進(jìn)系統(tǒng)。 使用面向?qū)ο蟮姆椒ㄩ_發(fā)的軟件,其程序與問題域是一致的,因此,在維護(hù)階段運(yùn)用面向?qū)ο蟮姆椒梢源蟠筇岣哕浖S護(hù)的效率。,信息的表示和存儲(chǔ),信息的分類 計(jì)算機(jī)的數(shù)字系統(tǒng) 程序設(shè)計(jì)中常用的數(shù)制 不同進(jìn)位計(jì)數(shù)制間的轉(zhuǎn)換 信息的存儲(chǔ)單位 二進(jìn)制數(shù)的編碼表示 小數(shù)的表示方法 非數(shù)值信息的表示,信息的分類, 指令 控制信息 控制字 信息 定點(diǎn)數(shù) 數(shù)值信息 數(shù)據(jù)信息

15、 浮點(diǎn)數(shù) 字符數(shù)據(jù) 非數(shù)值信息 邏輯數(shù)據(jù),計(jì)算機(jī)的數(shù)字系統(tǒng),計(jì)算機(jī)采用的是二進(jìn)制數(shù)字系統(tǒng)。 基本符號(hào):0、1 進(jìn)位原則:逢二進(jìn)一 優(yōu)點(diǎn): 易于物理實(shí)現(xiàn) 二進(jìn)制數(shù)運(yùn)算簡(jiǎn)單 機(jī)器可靠性高 通用性強(qiáng) 缺點(diǎn):對(duì)人來(lái)說可讀性差,程序設(shè)計(jì)中常用的數(shù)制,不同進(jìn)位計(jì)數(shù)制間的轉(zhuǎn)換 R 進(jìn)制十進(jìn)制,各位數(shù)字與它的權(quán)相乘,其積相加。 例如: (11111111.11)2=1*27 + 1*26 + 1* 25 +1* 24 + 1* 23 + 1* 22 +1* 21+ 1* 20+1*2-1+1*2-2 =(255.75)10 (3506.2)8=3*83 + 5*82 + 0*81 + 6*80 +2*8-1=

16、(1862.25)10 (0.2A)16=2*16-1 +10*16-2=(0.1640625)10,不同進(jìn)位計(jì)數(shù)制間的轉(zhuǎn)換 十進(jìn)制 R 進(jìn)制,十進(jìn)制整數(shù)轉(zhuǎn)換成R進(jìn)制的整數(shù) “除R取余”法,例如: 2 68 余 數(shù) 2 34 0 低位 2 17 0 2 8 1 2 4 0 2 2 0 2 1 0 0 1 高位 所以 681010001002,不同進(jìn)位計(jì)數(shù)制間的轉(zhuǎn)換 十進(jìn)制 R 進(jìn)制,十進(jìn)制小數(shù)轉(zhuǎn)換成R進(jìn)制小數(shù) “乘 R 取整”法,例如: 高位 0.31252 = 0 .625 0.625 2 = 1 .25 0.25 2 = 0 .5 0.5 2 = 1 .0 所以 0.312510 = 0.

17、01012,不同進(jìn)位計(jì)數(shù)制間的轉(zhuǎn)換二、八、十六進(jìn)制的相互轉(zhuǎn)換,每位八進(jìn)制數(shù)相當(dāng)于三位二進(jìn)制數(shù) 每位十六進(jìn)制數(shù)相當(dāng)于四位二進(jìn)制數(shù) (1011010.10)2=(001 011 010 .100)2=(132.4)8 (1011010.10)2=(0101 1010 .1000)2=(5A.8)16 (F7)16(1111 0111)2(11110111)2,信息的存儲(chǔ)單位,位(bit):度量數(shù)據(jù)的最小單位,表示一位二進(jìn)制信息。 字節(jié)(byte):由八位二進(jìn)制數(shù)字組成(1 byte = 8 bit)。 K 字節(jié) 1 K = 1024 byte M 字節(jié) 1 M = 1024 K G 字節(jié) 1 G

18、= 1024 M,二進(jìn)制數(shù)的編碼表示:原碼,符號(hào)絕對(duì)值表示的編碼 例如: X=+0101011 X原 = 0 0101011 X=-0101011 X原 = 1 0101011 符號(hào)位 缺點(diǎn): 零的表示不唯一:+0原 =000.0 -0原 =100.0 進(jìn)行四則運(yùn)算時(shí),符號(hào)位需單獨(dú)處理,且運(yùn)算規(guī)則復(fù)雜。,二進(jìn)制數(shù)的編碼表示:反碼,正數(shù)的反碼與原碼表示相同。 負(fù)數(shù)的反碼與原碼有如下關(guān)系: 符號(hào)位相同(仍用1表示),其余各位取反(0變1,1變0)。例如:X=-1100110 X原 =11100110 X反 =10011001X=+0000000 X原 =00000000 X反 =00000000

19、反碼中零的表示也不唯一 X=-0000000 X原 =10000000 X反 =11111111 反碼只是求補(bǔ)碼的中間碼,二進(jìn)制數(shù)的編碼表示:補(bǔ)碼,模數(shù): n位整數(shù)(包括一位符號(hào)位),則它的模數(shù)為 2n 。 n位小數(shù),小數(shù)點(diǎn)前一位為符號(hào)位,則它的模數(shù)為 2。 補(bǔ)數(shù): 一個(gè)數(shù)減去另一個(gè)數(shù),或者說一個(gè)數(shù)加上一個(gè)負(fù)數(shù),等于第一個(gè)數(shù)加上第二個(gè)數(shù)的補(bǔ)數(shù)。例:8+(-2)=8+10 ( mod 12 ) 一個(gè)二進(jìn)制負(fù)數(shù)可用其模數(shù)與真值做加法 (模減去該數(shù)的絕對(duì)值) 求得其補(bǔ)碼。,二進(jìn)制數(shù)的編碼表示:補(bǔ)碼,計(jì)算機(jī)中的補(bǔ)碼表示法 負(fù)數(shù)的補(bǔ)碼由該數(shù)反碼的末位加 1 求得 對(duì)補(bǔ)碼再求補(bǔ)即得到原碼 補(bǔ)碼運(yùn)算規(guī)則p1

20、4 符號(hào)位可作為數(shù)值參加運(yùn)算 減法運(yùn)算可轉(zhuǎn)換為加法運(yùn)算: 加上一個(gè)負(fù)數(shù)等于加上該數(shù)的補(bǔ)碼 補(bǔ)碼運(yùn)算的結(jié)果仍為補(bǔ)碼 運(yùn)算結(jié)果溢出: 負(fù)數(shù)之和得正數(shù),或正數(shù)之和得負(fù)數(shù),小數(shù)的表示方法,計(jì)算機(jī)中通常采用浮點(diǎn)方式表示小數(shù)一個(gè)數(shù) N 用浮點(diǎn)形式表示可以寫成: N=M2E E表示2的冪,稱為數(shù)N的階碼。階碼確定了數(shù)N的小數(shù)點(diǎn)的位置,其位數(shù)反映了該浮點(diǎn)數(shù)所表示的數(shù)的范圍。 M表示數(shù)N的全部有效數(shù)字,稱為數(shù)N的尾數(shù)。其位數(shù)反映了數(shù)據(jù)的精度。 p15,非數(shù)值信息的表示,西文字符: ASCII碼:用7位二進(jìn)制數(shù)表示一個(gè)字符,最多可以表示27=128個(gè)字符 EBCDIC碼:用8位二進(jìn)制數(shù)表示一個(gè)字符,最多可以表示2

21、8=256個(gè)字符 漢字: 應(yīng)用較為廣泛的是國(guó)家標(biāo)準(zhǔn)信息交換用漢字編碼(GB2312-80標(biāo)準(zhǔn)),簡(jiǎn)稱國(guó)標(biāo)碼。是二字節(jié)碼,用二個(gè)七位二進(jìn)制數(shù)編碼表示一個(gè)漢字。,程序的開發(fā)過程,源程序、目標(biāo)程序、翻譯程序 三種不同類型的翻譯程序: 匯編程序、編譯程序、解釋程序 程序的開發(fā)過程 編輯、編譯、連接、運(yùn)行調(diào)試,基本術(shù)語(yǔ),源程序: 用源語(yǔ)言寫的,有待翻譯的程序 目標(biāo)程序: 也稱為結(jié)果程序,是源程序通過翻譯程序加工以后所生成的程序。 翻譯程序: 是指一個(gè)把源程序翻譯成等價(jià)的目標(biāo)程序的程序。,基本術(shù)語(yǔ) 三種不同類型的翻譯程序,匯編程序: 其任務(wù)是把用匯編語(yǔ)言寫成的源程序,翻譯成機(jī)器語(yǔ)言形式的目標(biāo)程序。 編譯程

22、序: 若源程序是用高級(jí)程序設(shè)計(jì)語(yǔ)言所寫,經(jīng)翻譯程序加工生成目標(biāo)程序,那么,該翻譯程序就稱為編譯程序。,基本術(shù)語(yǔ) 三種不同類型的翻譯程序,解釋程序: 這也是一種翻譯程序,同樣是將高級(jí)語(yǔ)言源程序翻譯成機(jī)器指令。它與編譯程序不同點(diǎn)就在于:它是邊翻譯邊執(zhí)行的,即輸入一句、翻譯一句、 執(zhí)行一句,直至將整個(gè)源程序翻譯并執(zhí)行完畢。,程序的開發(fā)過程,編輯 將源程序輸入到計(jì)算機(jī)中,生成后綴為cpp的磁盤文件。 編譯 將程序的源代碼轉(zhuǎn)換為機(jī)器語(yǔ)言代碼。 連接 將多個(gè)源程序文件以及庫(kù)中的某些文件連在一起,生成一個(gè)后綴為exe的可執(zhí)行文件。 運(yùn)行調(diào)試,程序開發(fā)過程:,開始,編輯源程序,編譯,編譯錯(cuò),連接,連接錯(cuò),運(yùn)行

23、,運(yùn)行錯(cuò),完成,是,是,是,作業(yè),復(fù)習(xí)第一章,預(yù)習(xí)第二章 作業(yè):、 、,第二章 C+簡(jiǎn)單程序設(shè)計(jì),本章主要內(nèi)容,C+語(yǔ)言概述 基本數(shù)據(jù)類型和表達(dá)式 數(shù)據(jù)的輸入與輸出 算法的基本控制結(jié)構(gòu) 自定義數(shù)據(jù)類型,2.1.1 C+語(yǔ)言的產(chǎn)生,C+是從C語(yǔ)言發(fā)展演變而來(lái)的: C語(yǔ)言的開發(fā)史源于高級(jí)語(yǔ)言和UNIX操作系統(tǒng)的發(fā)展要求。 早期的系統(tǒng)程序設(shè)計(jì),使用的是匯編語(yǔ)言,其優(yōu)點(diǎn): (1)能體現(xiàn)計(jì)算機(jī)硬件指令級(jí)的特性,表達(dá)能力強(qiáng); (2)運(yùn)行效率高。 其缺點(diǎn):可讀性,可移植性及描述問題的性能不如高級(jí)語(yǔ)言。 這樣很自然有如下想法:能否用具有足夠表達(dá)能力的高級(jí)語(yǔ)言 來(lái)進(jìn)行系統(tǒng)軟件的設(shè)計(jì)呢?Bell實(shí)驗(yàn)室做了這一嘗試

24、。 1970:在 PDP-11/20機(jī)上實(shí)現(xiàn)了B語(yǔ)言,并用它編寫了UNIX系統(tǒng)的實(shí)用程序。 B-BCPL-CPL-ALGOL 60,2.1 C+語(yǔ)言概述,在B語(yǔ)言基礎(chǔ)上,改進(jìn)其缺陷,發(fā)展出了C語(yǔ)言, 其設(shè)計(jì)目標(biāo): (1)保持BCPL和B的精練性及接近硬件的特點(diǎn) (2)恢復(fù)這些語(yǔ)言失去的通用性 1972:第一個(gè)C編譯投入使用 1973:UNIX用C改寫,加入多道程序功能,發(fā)生質(zhì)變 現(xiàn)在,UNIX已得到廣泛推廣,成為公認(rèn)的第一標(biāo)準(zhǔn)的操作系統(tǒng) 隨著UNIX的進(jìn)一步開發(fā),C也交織在一起被迅速推廣。,1983:對(duì)C擴(kuò)充,發(fā)展為C。 C+語(yǔ)言的標(biāo)準(zhǔn)化工作從1989年開始,于1994年制定了ANSI C+標(biāo)

25、準(zhǔn)草案。以后又經(jīng)過不斷完善,成為目前的C+。,2.1.2 C+的特點(diǎn),全面兼容C 它保持了C的簡(jiǎn)潔、高效和接近匯編語(yǔ)言等特點(diǎn) 對(duì)C的類型系統(tǒng)進(jìn)行了改革和擴(kuò)充 C+也支持面向過程的程序設(shè)計(jì),不是一個(gè)純正的面向?qū)ο蟮恼Z(yǔ)言 支持面向?qū)ο蟮姆椒?2.1.3 C+程序?qū)嵗?-1,/ this is a simplest program. #include void main(void) coutHello!n; coutWelcome to c+!n; 說明:(1)注解 (2) 編譯預(yù)處理 (3)main函數(shù) (4)語(yǔ)句括號(hào) (5)語(yǔ)句分號(hào);,C+程序?qū)嵗?運(yùn)行結(jié)果: Hello! Welcome t

26、o c+!,C+字符集,語(yǔ)言的最基本單位是字符: 字符詞語(yǔ)句函數(shù)程序。 字符集是構(gòu)成語(yǔ)言的基本元素 大小寫的英文字母:AZ,az 數(shù)字字符:09 特殊字符:空格!#%.,( ) ,詞法記號(hào),詞法記號(hào)是最小的詞法單位 、關(guān)鍵字 C+預(yù)定義的單詞。是指C+中有特殊含義的字,是不能重 新定義的。程序員不可用之作為自己定義的變量或函數(shù)的名字。,類別 關(guān)鍵字個(gè)數(shù) 舉例 ANSI C 32 char,for 等 ANSI C+ 61 (增加29個(gè)) class,public等 BC/AC 擴(kuò)展了一些 asm 等,、標(biāo)識(shí)符 程序員聲明的單詞,它命名程序正文中的 一些實(shí)體。,標(biāo)識(shí)符的構(gòu)成規(guī)則 以大寫字母、小寫

27、字母或下劃線(_)開始。 可以由以大寫字母、小寫字母、下劃線(_)或數(shù)字09組成。 大寫字母和小寫字母代表不同的標(biāo)識(shí)符。 例 Rectangle、 Draw、 _line. 、文字 在程序中直接使用符號(hào)表示的數(shù)據(jù) 包括數(shù)字、字符、字符串和布爾文字 、操作符 用于實(shí)現(xiàn)各種運(yùn)算的符號(hào)。 、分隔符 用于分隔各個(gè)詞法記號(hào)或程序正文:( ) , : ; 、空白:空格、制表符(TAB鍵產(chǎn)生的字符)、換行符(Enter鍵所產(chǎn)生的字符)和注釋的總稱。 程序書寫自由 / 、 /* */,2.2基本數(shù)據(jù)類型和表達(dá)式,2.2.1基本數(shù)據(jù)類型,是程序命令操作的對(duì)象。,是指將數(shù)據(jù)根據(jù)表達(dá)形式的不同而 劃分的類別。,數(shù)據(jù)

28、:,數(shù)據(jù)類型:,C+的數(shù)據(jù)類型一般分為如下幾種:,基本數(shù)據(jù)類型,非基本數(shù)據(jù)類型(用戶定義數(shù)據(jù)類型),整型 字符型 實(shí)型(浮點(diǎn)型) 邏輯型(布爾型) 數(shù)組 指針 空類型 結(jié)構(gòu) 聯(lián)合 枚舉 類,數(shù)據(jù)類型,數(shù)據(jù)類型修飾符:,short,long,unsigned,例:,無(wú)符號(hào)整型 unsigned int,無(wú)符號(hào)長(zhǎng)整型 unsigned long,無(wú)符號(hào)短整型 unsigned short,signed,類型 所占位數(shù) 數(shù)的范圍 int 16 -32768 32767 short int 16 -32768 32767 long int 32 -2147483648 2147483647 unsig

29、ned int 16 0 65535 unsigned short 16 0 65535 unsigned long 32 0 4294967295,至于它們之間的差異,請(qǐng)看下表(p):(16位計(jì)算機(jī)),0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,.31456789,23,+,數(shù)符,小數(shù)部分,指數(shù),例: cout“size of int is “ size of (int)endl;,C+強(qiáng)類型語(yǔ)言要求程序設(shè)計(jì)者在使用數(shù)據(jù)之前對(duì)數(shù)據(jù)的類型進(jìn)行聲明。,注意: (1)整型和實(shí)型的幾種不同方式 (2)注意各種數(shù)據(jù)類型的取值范圍。 (3)注意C無(wú)布爾類型。C語(yǔ)言在表達(dá)邏輯運(yùn)算的結(jié)果

30、時(shí),用 整數(shù)0 代表邏輯“假”,用非0的整數(shù)值(如1)表示邏輯“真”。 C+中增添了布爾類型bool,但并非每個(gè)C+編譯器都支持。 用size of (數(shù)據(jù)類型)可以確定數(shù)據(jù)類型的字節(jié)長(zhǎng)度,數(shù)據(jù)類型 常量與變量,#include void main(void) const int PRICE=30; int num,total; float v ,r,h; num=10; total=num*PRICE; couttotal endl; r=2.5; h=3.2; v=3.14159*r*r*h; coutv endl; ,Page 84,2.2.2 常量,在程序中出現(xiàn)的常量分為一般常量和符號(hào)

31、常量?jī)煞N。,一般常量,讓我們來(lái)看右邊的程序段:,int sum; sum=3+5; printf (“sum=%d”,sum);,.,其中的“”和“”都是一般常量。,常量 就是其值不能被改變的量,它相當(dāng)于數(shù)學(xué)中的常數(shù)。,常量由于數(shù)據(jù)類型的不同而被分為:,整型常量,實(shí)型常量,字符常量,字符串常量,1、 整型常量,整型常量即以文字形式出現(xiàn)的整數(shù)。 分十進(jìn)制整數(shù)、八進(jìn)制整數(shù)和十六進(jìn)制整數(shù),注意它們的書寫形式。,整型常量類型 表達(dá)形式 有無(wú)正負(fù) 十進(jìn)制 957 有正負(fù) 八進(jìn)制 01667 只有正 十六進(jìn)制 0 xB7 只有正,123L 123l 長(zhǎng)整型,2、 實(shí)型常量,實(shí)型常量即以文字形式出現(xiàn)的實(shí)數(shù),

32、又稱浮點(diǎn)型。 它分一般形式和指數(shù)形式。,實(shí)型常量類型 表達(dá)形式 一般形式 0.123 指數(shù)形式 123e5,(2) 一個(gè)實(shí)型常數(shù)缺省說明為double,如表示float型,則 在實(shí)數(shù)后加 f或 F。 例 34.5f 34.5,注: (1)指數(shù)形式的書寫。E或e的前面必須要有數(shù)字,且E后面的指數(shù)必須為整數(shù)。 例:e3 2.1e3.5 .e3 e,單引號(hào)括起來(lái)的一個(gè)字符 例 A 每個(gè)字符常數(shù)占一個(gè)字節(jié) 每個(gè)字符常數(shù)有一個(gè)編碼數(shù)字值A(chǔ)SCII碼表中的碼值 例如:A:65 B:66 a:97 b:98 , 字符常量可象數(shù)量一樣進(jìn)行運(yùn)行、比較 例1:if(c=Ac=Z) c=c+a-A; 將字符變量c從

33、大寫字母轉(zhuǎn)為小寫字母。 例2:0-0=0 1-0=1 2-0=2 如果c是一數(shù)字字符,則c-0就是它對(duì)應(yīng)數(shù)字的數(shù)值,3、 字符常量,非圖形字符(如回車、制表符等) 及 “等字符,因它們有特殊作用,所以表示這些字符本身時(shí),應(yīng):p。 n 表?yè)Q行,無(wú)論是不可顯示字符還是一般字符,都可用8進(jìn)制數(shù)、16進(jìn)制數(shù)表示 ddd:一 至三位8進(jìn)制數(shù)。 xhh: 一 至二位16進(jìn)制數(shù)。 例如:001表示碼值為(01)8 的ASCII字符。 A也可用101表示 0為空白符,即NULL,碼值為0,在C語(yǔ)言中是字符串的結(jié)束標(biāo)志。(與0和空格符不同) 例:cout“x07operatingtsystemn”; opera

34、ting system,轉(zhuǎn)義字符,例 : int a=b; char c=97; coutaendl; coutcendl; 輸出: 98 a,字符數(shù)據(jù)的使用方法 字符數(shù)據(jù)和整型數(shù)據(jù)之間可以運(yùn)算。 字符數(shù)據(jù)與整型數(shù)據(jù)可以互相賦值。,4、 字符串常量,字符串型常量是用雙引號(hào)括起來(lái)的一個(gè)或多個(gè)字符。 例如,將1用雙引號(hào)括起來(lái),此時(shí)“1”代表的是一個(gè)字符串型常量, 與字符型常量1也是有區(qū)別的。,C+規(guī)定以字符0作為字符串結(jié)束標(biāo)志。如,一個(gè)字符串“HELLO”,在內(nèi)存中以“0”為結(jié)尾?!?”在輸出時(shí)不作顯示,只用來(lái)表示字符串的結(jié)束。,字符串型常量,“HELLO”,H E L L O 0,注意“P”與P

35、不同。前者為字符串,在機(jī)內(nèi)存儲(chǔ)形式 為 P 0 ,而P就是一常數(shù)P。,define PI 3.14159 main ( ) int r ; float L,S ; r = 10 ; L= 2 * PI * r ; S=PI * r * r ; printf (“周長(zhǎng)=%fn”,L); printf (“面積=%fn”,S); ,這是一個(gè)知道圓半徑r,求圓周長(zhǎng)L、圓面積S的簡(jiǎn)單C程序。其中的PI就是符號(hào)常量,它的值在一開始就被預(yù)處理命令“#define”定義為實(shí)數(shù)3.14159了,故程序在運(yùn)行和編譯時(shí)會(huì)自動(dòng)用“3.14159”來(lái)替代PI。,符號(hào)常量比起一般常量來(lái),不但使用方便,實(shí)際值容易修改,而

36、且更形象化,便于記憶。,符號(hào)常量,數(shù)據(jù)類型 布爾型數(shù)據(jù),布爾型變量的說明:例:bool flag; 布爾型數(shù)據(jù)的取值:只有 false 和 true 兩個(gè)值,*C+中: const float pi=3.14159; *常量定義中初始化的值可以是一個(gè)常量表達(dá)式: const int size=100*sizeof(int); const int number=max(15,23); (錯(cuò)) 注意:#define 與const的區(qū)別,2.3變量,變量是什么,變量程序在運(yùn)行過程中,其值會(huì)發(fā)生改變的量。,變量:變量值 23,變量名 length,變量類型 int,C+規(guī)定必須以字母或下劃線打頭,后面

37、跟字母、數(shù)字或下劃線(如:a3, Z_5e, _D7d等),并且不能與保留字、函數(shù)名、類名等C+專用名相同(如 char, for, int 等)。 注意: (a)長(zhǎng)度:早期的C編譯程序只認(rèn)前8個(gè)字符。VC允許256個(gè)字符。 但一般不要超過31個(gè)字符為宜,1、命名,(b)約定: 變量名、函數(shù)名、和數(shù)據(jù)類型名等用小寫字母 自定義的類型名(如類)、 符號(hào)常量名及宏 用大寫字母; 下劃線開頭的名字常為系統(tǒng)程序(庫(kù)函數(shù)用),用戶一般不用。 (c)要有意義:如用Sum表示“求和變量”,不要用aaa,A1, B12之類名字。 例: my_car 小寫 my_Car 駱駝 iMyCar 匈牙利標(biāo)識(shí)法(WIN

38、DOWS標(biāo)準(zhǔn)命名法),下面我們看一段關(guān)于變量的程序:,程序中的num1,num2和sum都是變量。它們的值在程序的運(yùn)行過程中都發(fā)生了變化。變量定義后,各變量的初值都是不確定的。num1的第一個(gè)確切值是10,當(dāng)再次給num1賦值時(shí),num1的值又變成-5。其他兩個(gè)變量的變化情況類似。,#include void main() int num1,num2,sum; num1=10;num2=25; sum=num1+num2; cout“sum=“sumendl; num1=-5; num2=num1+3; sum=num1+num2; cout“sum=“sumendl; ,變量:需要定義,說明

39、其存儲(chǔ)屬性和數(shù)據(jù)類型。,例:static int nward=0, nkayword;,同一語(yǔ)句中,不能混合定義不同類型的變量。,2、 變量的定義,變量的存儲(chǔ)類型,auto存儲(chǔ)類 屬于一時(shí)性存儲(chǔ),其存儲(chǔ)空間可以被若干變量多次覆蓋使用。 register存儲(chǔ)類 存放在通用寄存器中。 extern存儲(chǔ)類 在所有函數(shù)和程序段中都可引用。 static存儲(chǔ)類 在內(nèi)存中是以固定地址存放的,在整個(gè)程序運(yùn)行期間都有效。,(1) double area, radius=23; (2) double area, radius; radius=23;,3、變量賦值與初始化,算術(shù)運(yùn)算符與算術(shù)表達(dá)式,表達(dá)式: 一個(gè)常

40、量或標(biāo)識(shí)對(duì)象的標(biāo)識(shí)符是一個(gè)最簡(jiǎn)單的表達(dá)式,其值是常量或?qū)ο蟮闹?一個(gè)表達(dá)式的值可以用來(lái)參與其它操作,即用作其它運(yùn)算符的操作數(shù),這就形成了更復(fù)雜的表達(dá)式 包含在括號(hào)中的表達(dá)式仍是一個(gè)表達(dá)式,其類型和值于未加括號(hào)時(shí)的表達(dá)式相同 算術(shù)表達(dá)式: 由算術(shù)運(yùn)算符、操作數(shù)和括號(hào)構(gòu)成的表達(dá)式稱為算術(shù)表達(dá)式 a+b+(c-b)/2+5,Page 104,、基本算術(shù)運(yùn)算符 + - * / %(取余) (若整數(shù)相除,結(jié)果取整) 優(yōu)先級(jí)與結(jié)合性 先乘除,后加減,同級(jí)自左至右 ,(1) / 整除 5/2=2 5.0/2.0=2.5 若 / 的兩操作數(shù)都為整數(shù),則為整除: 例 int i = 15; float f ;

41、f = i/10; 結(jié)果為:f=1 如果將第三條語(yǔ)句改為 f = (float)i/10; 或f = i/10.0; 則結(jié)果為:f=1.5,在 C+語(yǔ)言中,表達(dá)式 (7/3+1)+ 5/6 的值是( )。 A)2B)3C)4 D)不能確定,B,(余的符號(hào)與被除數(shù)相同,不允許對(duì)浮點(diǎn)數(shù)操作) 3%4=3 4%4=0 例 #include void main() int n; n = 40 % 5; cout 40 % 5 : n endl; /(0) n = 40 % 7; cout 40 % 7 : n endl; / (5) n = 40 % -7; cout 40 % -7 : n endl

42、; /(5) n = -40 % 7; cout -40 % 7 : n endl; /(-5) n = -40 % -7; cout -40 % -7 : n endl; /(-5) ,( 2.) % 取余,() 取作為表達(dá)式的值,然后 () 先;然后取作為表達(dá)式的值 () ??; () ,取 例: int a=3; int b=+a; couta“ “bendl; int c=a+; couta“ “cendl;,4 5 4,、增量和減量,,.賦值運(yùn)算 = 賦值運(yùn)算符用于將一個(gè)數(shù)據(jù)傳給一個(gè)變量。 例如: int x; x = 5; 將值 5 傳給變量 x。其中=號(hào)即賦值運(yùn)算符。 A: (1)

43、 雙目運(yùn)算符,從右到左 d=a=b (2) 賦值操作是一個(gè)表達(dá)式, 每個(gè)表達(dá)式在求值后都有一個(gè)確定的值,其值為賦值號(hào)左邊表達(dá)式的值 例:cout(x=5)endl; (3) 當(dāng)賦值號(hào)兩邊類型不一至?xí)r,根據(jù)左邊類型轉(zhuǎn),int a=10; float x=70000.5;x = a;將 a 的值 10 賦給 x,x 的值為 10.0。 int a=10; float x=70000.5; a = x;將 x 的值 70000.5 賦給 a,但 70000.5 超過了 int 的取值范圍,于是將超過的部分扔掉了,a 是多少不知道了。 特別注意,上面的賦值語(yǔ)句,編譯時(shí)是可以通過的。,復(fù)合的賦值運(yùn)算符,

44、有10種復(fù)合運(yùn)算符:+=, -=, *=, /=, %=,=, x+=x-=x*x; 若x為整型變量,則上述語(yǔ)句執(zhí)行后 x 的值是_(4)_。 A. 36 B. -60C. 60D. -24,B,、逗號(hào)運(yùn)算和逗號(hào)表達(dá)式,格式: 表達(dá)式1,表達(dá)式2 求解順序及結(jié)果: 先求解1,再求解2,最終結(jié)果為表達(dá)式2的值 例 a=3*5,a*4 最終結(jié)果為60 例 2 int a, b, c; d=(a=1, b=a+2 , c=b+3 ); coutdendl; ,Page 115,、關(guān)系運(yùn)算與關(guān)系表達(dá)式,用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái),就是關(guān)系表達(dá)式 關(guān)系運(yùn)算是比較簡(jiǎn)單的一種邏輯運(yùn)算,優(yōu)先次序?yàn)椋?=

45、 = != 優(yōu)先級(jí)相同(高) 優(yōu)先級(jí)相同(低) 關(guān)系表達(dá)式是一種最簡(jiǎn)單的邏輯表達(dá)式 其結(jié)果類型為 bool,值只能為 true 或 false。 例如:ab,c=a+b,x+y=3,邏輯運(yùn)算與邏輯表達(dá)式,邏輯運(yùn)算符: !(非) = !=; else x=b;,注意:(1)條件運(yùn)算符優(yōu)于賦值運(yùn)算符比關(guān)系運(yùn)算符和算術(shù)運(yùn)算符都低 例 max=(ab)?a:b+1 (2)條件運(yùn)算符的結(jié)合性為“自右向左” 例ab?a:cd?c:d 即 ab?a:(cd?c:d) (3) 條件表達(dá)式與一般if的語(yǔ)句的關(guān)系 coutb?a:b; ()表達(dá)式2、3的類型可以不同,條件表達(dá)式的最終類型為 2 和 3 中較高的類

46、型。,、sizeof 操作符,語(yǔ)法形式sizeof (類型名)或 sizeof (表達(dá)式) 結(jié)果值:“類型名”所指定的類型或“表達(dá)式”的結(jié)果類型所占的字節(jié)數(shù)。 例:coutsizeof(double)endl;,、位運(yùn)算按位與(,位運(yùn)算按位異或(),運(yùn)算規(guī)則 兩個(gè)操作數(shù)進(jìn)行異或:若對(duì)應(yīng)位相同,則結(jié)果該位為 0,若對(duì)應(yīng)位不同,則結(jié)果該位為 1, 舉例:計(jì)算 071052 071: 0 0 1 1 1 0 0 1 052:() 0 0 1 0 1 0 1 0 071052 : 0 0 0 1 0 0 1 1,位運(yùn)算按位異或(),用途: 使特定位翻轉(zhuǎn)(與0異或保持原值,與1異或取反) 例如:要使 0

47、1111010 低四位翻轉(zhuǎn): 0 1 1 1 1 0 1 0 ()0 0 0 0 1 1 1 1 0 1 1 1 0 1 0 1,位運(yùn)算取反(),單目運(yùn)算符:對(duì)一個(gè)二進(jìn)制數(shù)按位取反。 例: 025:0000000000010101 025:1111111111101010,位運(yùn)算移位,左移運(yùn)算() 右移后,低位:舍棄 高位:無(wú)符號(hào)數(shù):補(bǔ)0 有符號(hào)數(shù):補(bǔ)“符號(hào)位”,例1:,char a=-8; cout2)endl;,例2:,21,9、運(yùn)算符優(yōu)先級(jí),括號(hào) +,-,sizeof *, /, % +, - =, != 位運(yùn)算 float x=10; x=(float)a+a/b; (19.0),賦值

48、語(yǔ)句,格式: 賦值表達(dá)式; 賦值語(yǔ)句與賦值表達(dá)式的區(qū)別: 賦值表達(dá)式可以包含在其它表達(dá)式中,而賦值語(yǔ)句不可。 例:if (a=b)0) t=a; 不可寫為:if (a=b;)0) t=a;,這是C中新加的非常簡(jiǎn)單易用的輸入、輸出方式, C+中沒有專門的輸入輸出語(yǔ)句,是用I/O流類來(lái)實(shí)現(xiàn)。 在程序的開頭增加一行: #include 1)用插入操作符“”向標(biāo)準(zhǔn)輸出流cout中插入字符。 向標(biāo)準(zhǔn)輸出設(shè)備(顯示器)輸出 例:int x; cout“x=“x;,簡(jiǎn)單的輸入、輸出,2) 用抽取操作符“”從標(biāo)準(zhǔn)輸入流cin中抽取字符 從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)輸入 例:int x; cinx; int a,b;

49、 cinab;,) 使用控制符 有時(shí)缺省輸出格式不能滿足要求,這時(shí)可以用控制符控制輸出的格式。 P表2-。 在程序的開頭增加一行: #include,例:,#include #include void main() coutsetw(5)setprecision(3)3.1415endl; 3.14,2.5算法的基本控制結(jié)構(gòu),問題的提出: (1) -1 (x0) (2)統(tǒng)計(jì)任意一個(gè)人群的平均身高 算法 算法的基本控制結(jié)構(gòu): 順序結(jié)構(gòu) 分支結(jié)構(gòu) 循環(huán)結(jié)構(gòu) 程序流程圖,if (表達(dá)式) 語(yǔ)句 例:if (xy) couty) coutx; else couty; if (表達(dá)式1) 語(yǔ)句1else

50、 if (表達(dá)式2) 語(yǔ)句2else if (表達(dá)式3) 語(yǔ)句3 else 語(yǔ)句 n,2.4.1 if 語(yǔ)句 三種形式, (條件表達(dá)式) 語(yǔ)句; 或(條件表達(dá)式) 語(yǔ)句; 或(條件表達(dá)式);空語(yǔ)句作中的語(yǔ)句 語(yǔ)句;,例(判輸入是否合理) #include void main( ) unsigned int age; cout age; if (age10) cout The age may be wrong; ,#include void main() int year; cout year; / think about the sequence of the logical expressi

51、on if (year %4 = 0 ,ifelse語(yǔ)句 if(條件表達(dá)式) 語(yǔ)句; else 語(yǔ)句;,例判閏年,一般形式 if ( ) if ( ) 語(yǔ)句 1 else 語(yǔ)句 2 else if ( ) 語(yǔ)句 3 else 語(yǔ)句 4 注意 語(yǔ)句 1、2、3、4 可以是復(fù)合語(yǔ)句,每層的 if 與 else 配對(duì),或用 來(lái)確定層次關(guān)系。,int x=20; if(x=0) if(x50) cout“x is okn”; else cout“x is not okn”;,If 語(yǔ)句的嵌套二義性 因?yàn)?if 可以嵌套,所有在嵌套時(shí)有時(shí)會(huì)出 歧義, 例如上例中,else 是與第一個(gè) if 配對(duì), 還是

52、與第二個(gè) if 配對(duì)? 這種時(shí)候,系統(tǒng)就認(rèn)為 :else 與最近的一個(gè) if 相對(duì)應(yīng),二義性: (1) if() if() coutendl;/輸出能被整除,能被整除 else coutendl;/輸出能被整除,不能被整除 (2) if() if() coutendl; /輸出能被整除,能被整除 else coutendl;/輸出不能被整除不管是否被整除,例2-3 輸入兩個(gè)整數(shù),比較兩個(gè)數(shù)的大小。,#include void main( ) int x,y; coutxy; if (x!=y) if (xy) coutyendl; else coutxyendl; else coutx=yen

53、dl; ,運(yùn)行結(jié)果1: Enter x and y:5 8 xy,#include void main( ) int x,y,z; cinxyz; int max=x; If (zy) if(zx) max=z; else if(yx) max=y; coutmax; ,功能:在三個(gè)數(shù)中取最大的,#include void main( ) int x,y,z; cinxyz; int max=x; If (ymax) max=y; if(zmax) max=z; coutmax; ,#include void main() unsigned int amount = 0; float tota

54、l=0 ; cout amount; if (amount 10) total = 5.88 * long(amount); else if (amount = 100) total = 5.68 * long(amount); else total = 5.68 * 0.95 * long(amount); cout Pay the money : total Please; ,例 / 5.88 * amount amount 100,if(條件) 語(yǔ)句; else if(條件) 語(yǔ)句; else if (條件3) 語(yǔ)句3; 語(yǔ)句;,如何解決多分之問題?,int grade; if(grad

55、e=85,一般形式 switch (表達(dá)式) case 常量表達(dá)式 1:語(yǔ)句1 case 常量表達(dá)式 2:語(yǔ)句2 case 常量表達(dá)式 n:語(yǔ)句n default : 語(yǔ)句n+1 ,2.4.2 switch 語(yǔ)句,執(zhí)行順序 以case中的常量表達(dá)式值為入口標(biāo)號(hào),由此開始順序執(zhí)行。因此,每個(gè)case分支最后應(yīng)該加break語(yǔ)句。,switch(表達(dá)式) case常量表達(dá)式1:語(yǔ)句組1 case常量表達(dá)式2:語(yǔ)句組2 case常量表達(dá)式N:語(yǔ)句組N default:語(yǔ)句組N+1 ,k=k1 k=k2 k=k3 k=k4,A1,A2,A3,A4,k,特殊的多分支結(jié)構(gòu),例2-4 輸入一個(gè)06的整數(shù),轉(zhuǎn)換成星期輸出。,#include void main(void) int day; cin day; switch (day) case 0:cout Sunday endl; break; case 1:cout Monday endl; break; case 2:cout Tuesday endl; break;,case 3: cout Wednesday endl; break; case 4:cout Thursday endl; break; case 5:cout Friday endl; break; case 6:cout Saturday endl

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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)論