C++面向?qū)ο蟮某绦蛟O(shè)計(jì)課件_第1頁
C++面向?qū)ο蟮某绦蛟O(shè)計(jì)課件_第2頁
C++面向?qū)ο蟮某绦蛟O(shè)計(jì)課件_第3頁
C++面向?qū)ο蟮某绦蛟O(shè)計(jì)課件_第4頁
C++面向?qū)ο蟮某绦蛟O(shè)計(jì)課件_第5頁
已閱讀5頁,還剩588頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C++面向?qū)ο蟮某绦蛟O(shè)計(jì)第一章程序設(shè)計(jì)基礎(chǔ)學(xué)習(xí)目標(biāo):

初步掌握程序設(shè)計(jì)的概念和基本方法;了解C++語言的特點(diǎn);學(xué)會(huì)使用VisualC++集成開發(fā)環(huán)境創(chuàng)建并運(yùn)行簡單的C++項(xiàng)目。

了解計(jì)算機(jī)語言及其發(fā)展,了解高級(jí)語言的優(yōu)點(diǎn)。

了解結(jié)構(gòu)化程序設(shè)計(jì)的基本概念,初步掌握結(jié)構(gòu)化程序設(shè)計(jì)方法

了解面向?qū)ο蟪绦蛟O(shè)計(jì)的思想、基本概念。

初步接觸C++語言,了解C++語言的特點(diǎn)。

熟悉VisualC++集成開發(fā)環(huán)境的基本使用方法,并完成一個(gè)簡單的C++程序的編寫、編譯、調(diào)試和運(yùn)行。

學(xué)習(xí)方法

本章概念和知識(shí)點(diǎn)較多,學(xué)習(xí)的時(shí)候注意不能死記硬背,要分清知識(shí)點(diǎn)的輕重程度。對于計(jì)算機(jī)語言的發(fā)展,只要了解其主要過程就可以了;對于程序設(shè)計(jì)方法和C++語言的特點(diǎn),不能在本章范圍內(nèi)孤立學(xué)習(xí),要結(jié)合下面相應(yīng)的章節(jié)以及親自上機(jī)實(shí)踐才能掌握,并且這是個(gè)漸進(jìn)的過程,不能一蹴而就;對于C++集成開發(fā)環(huán)境的使用則一定要通過實(shí)際的動(dòng)手操作才能熟悉。

自然語言與計(jì)算機(jī)語言之間的鴻溝機(jī)器語言機(jī)器可以直接識(shí)別并執(zhí)行面向機(jī)器高級(jí)語言低級(jí)語言面向過程面向?qū)ο箨P(guān)心求解過程著眼點(diǎn):解決“什么”問題關(guān)心一個(gè)對象能干什么例如:FORTRAN、BASIC

結(jié)構(gòu)化分析方法和設(shè)計(jì)方法例:C++、JAVA面向?qū)ο蟮姆治龇椒ê驮O(shè)計(jì)方法“編譯”“解釋”“鏈接”中級(jí)語言高級(jí)語言雙重功能例:C機(jī)器語言、匯編語言和高級(jí)語言匯編語言1.設(shè)計(jì)思路自頂向下、功能分解、逐步求精。采用模塊分解與功能抽象,自頂向下、分而治之。把精力主要集中在對如何求解問題的算法邏輯和過程的描述上,通過程序把解決問題的步驟告訴計(jì)算機(jī)。當(dāng)一些任務(wù)十分復(fù)雜以至無法描述時(shí),可以將它拆分為一系列較小的功能部件,直到這些自完備的子任務(wù)小到易于理解的程度。

2.程序結(jié)構(gòu)按功能劃分為若干個(gè)基本模塊,形成一個(gè)樹狀結(jié)構(gòu)。各模塊間的關(guān)系盡可能簡單,功能上相對獨(dú)立;每一模塊內(nèi)部均是由順序、選擇和循環(huán)三種基本結(jié)構(gòu)組成。其模塊化實(shí)現(xiàn)的具體方法是使用子程序。

面向過程的程序設(shè)計(jì)3.缺點(diǎn)可重用性差:相對于老問題的新方法帶來額外的開銷;安全性差:把數(shù)據(jù)和處理數(shù)據(jù)的過程分離為相互獨(dú)立的實(shí)體;難以開發(fā)圖形界面的應(yīng)用;例如,計(jì)算一個(gè)公司中每一個(gè)職員的平均工資是一項(xiàng)較為復(fù)雜的任務(wù)。可以將其拆分為以下的子任務(wù):

(1)計(jì)算總共有多少職員

(2)計(jì)算工資總額

(3)用職員人數(shù)去除工資總額

計(jì)算工資總額本身又可分為一系列子任務(wù)

(1)找出每個(gè)職員的檔案

(2)讀出工資數(shù)額

(3)把工資加到部分和上

(4)讀出下個(gè)職員的檔案

面向?qū)ο蟮某绦蛟O(shè)計(jì)

設(shè)計(jì)思想:

面向?qū)ο蟪绦蛟O(shè)計(jì)方法不是以函數(shù)過程和數(shù)據(jù)結(jié)構(gòu)為中心,而是以對象為代表求解問題的中心環(huán)節(jié).它追求的是現(xiàn)實(shí)問題空間與軟件系統(tǒng)解空間的近似和直接模擬.從而使人們對復(fù)雜系統(tǒng)的認(rèn)識(shí)過程與系統(tǒng)的程序設(shè)計(jì)實(shí)現(xiàn)過程盡可能一致.面向?qū)ο笳Z言的發(fā)展過程1、雛形階段

60年代,挪威計(jì)算中心開發(fā)的Simula67語言,是面向?qū)ο笳Z言發(fā)展史上的第一個(gè)里程碑。它引入了類的概念和繼承的機(jī)制。具有了面向?qū)ο笳Z言的重要特征,是面向?qū)ο笳Z言的先驅(qū)。

72年,Smalltalk-72問世,在Smalltalk-72中,任何東西都是對象

Smalltalk-72的問世,標(biāo)志著面向?qū)ο蟪绦蛟O(shè)計(jì)方法的正式形成。但作為語言還不完善,處于研究性和實(shí)驗(yàn)性階段。

2、完善階段

1981年,Smalltalk-80問世,成為面向?qū)ο蟀l(fā)展史上最重要的里程碑。它具備了絕大部分面向?qū)ο蟮幕靖拍詈蜋C(jī)制,是第一個(gè)能夠?qū)嶋H應(yīng)用的面向?qū)ο笳Z言,隨著應(yīng)用的深入,越來越多的人認(rèn)識(shí)并接收了面向?qū)ο蟮乃枷耄纬闪艘环N嶄新的程序設(shè)計(jì)風(fēng)格,引發(fā)了計(jì)算機(jī)軟件領(lǐng)域一場意義深遠(yuǎn)的變革。

(1)作為一種嶄新的軟件設(shè)計(jì)方法,被大家廣泛接受尚需一定的時(shí)間,即使目前,還沒有為所有人所接受。(2)Smalltalk-80本身的商品化軟件開發(fā)工作直到1987年才開始進(jìn)行。(3)太過理論化,追求一種純OO的宗旨,不能為許多講究實(shí)效的軟件開發(fā)人員接受。

3、繁榮階段

80年代中期到90年代,出現(xiàn)了大批實(shí)用的OOPL,如C++、Objective-C、ObjectPascal、Delphi等。大多都是一種混合型的面向?qū)ο笳Z言,更重視實(shí)用性。 特別是C++語言,它是在C語言的基礎(chǔ)上擴(kuò)充的,對C兼容,且十分重視代碼的執(zhí)行效率,所以以成為應(yīng)用最為廣泛的OOPL。 面向?qū)ο蟮木幊陶Z言的繁榮是面向?qū)ο蠓椒ㄗ呦驅(qū)嵱玫闹匾獦?biāo)志,也是面向?qū)ο蠓椒ㄔ谟?jì)算機(jī)學(xué)術(shù)界、產(chǎn)業(yè)界和教育界受到越來越高的重視面向?qū)ο蟮漠?dāng)前的研究及實(shí)踐領(lǐng)域OO方法誕生20多年以來,已經(jīng)進(jìn)入計(jì)算機(jī)科學(xué)的各個(gè)分支領(lǐng)域,并在繼續(xù)發(fā)展。1、面向?qū)ο蟮木幊陶Z言(OOPL)2、面向?qū)ο蟮姆治龊兔嫦驅(qū)ο蟮脑O(shè)計(jì)(OOA/OOD)

本課程的重點(diǎn)。產(chǎn)生于80年代末期,目前仍在發(fā)展和健全的過程。3、面向?qū)ο蟮臄?shù)據(jù)庫(OODB)

是傳統(tǒng)數(shù)據(jù)庫技術(shù)與面向?qū)ο蠓椒ǖ慕Y(jié)合。4、面向?qū)ο蟮能浖_發(fā)環(huán)境

已經(jīng)比較成熟,如C++Builder、VC6.0、Delphi等。5、面向?qū)ο蟮膱D形用戶界面(GUI)開發(fā)技術(shù)6、面向?qū)ο蟮闹悄艹绦蛟O(shè)計(jì)

即面向?qū)ο蠓椒ㄅc人工智能領(lǐng)域的專家系統(tǒng)的結(jié)合。7、面向?qū)ο蟮捏w系結(jié)構(gòu)

是一種新型的計(jì)算機(jī)體系結(jié)構(gòu),連同支持面向?qū)ο蠹夹g(shù)的新興操作系統(tǒng),可望從根本上提高面向?qū)ο蟮能浖_發(fā)效率和運(yùn)行效率,并形成從硬件到操作系統(tǒng)、語言、界面及上層應(yīng)用支持系統(tǒng)一體化的面向?qū)ο蟮拈_發(fā)及運(yùn)行環(huán)境。C++的發(fā)展歷史從C到C++

C語言是貝爾實(shí)驗(yàn)室在B語言的基礎(chǔ)上開發(fā)出來的,1972年在一臺(tái)DECPDP-11計(jì)算機(jī)上實(shí)現(xiàn)了最初的C語言。C是作為UNIX操作系統(tǒng)的開發(fā)語言而開始廣為人們所認(rèn)識(shí)。實(shí)際上,當(dāng)今許多新的重要的操作系統(tǒng)都是用C或C++編寫的。在過去20年內(nèi),C語言已經(jīng)能夠用在絕大多數(shù)計(jì)算機(jī)上了。C語言是與硬件無關(guān)的。由于C語言的嚴(yán)謹(jǐn)設(shè)計(jì),使得把用C語言編寫的程序移植到大多數(shù)計(jì)算機(jī)上成為可能。到70年代末,C已經(jīng)演化為現(xiàn)在所說的“傳統(tǒng)的C語言”。

C++入門

為了滿足管理程序的復(fù)雜性需要,1980年,貝爾實(shí)驗(yàn)室開始對C進(jìn)行改進(jìn)和擴(kuò)充。最初的成果稱為“帶類的C”,1983年正式取名為C++,在經(jīng)歷了3次C++修訂后,于1994年制定了ANSIC++標(biāo)準(zhǔn)的草案。以后又經(jīng)過不斷完善,成為目前的C++。C++仍在不斷發(fā)展中。

C++包含了整個(gè)C,C是建立C++的基礎(chǔ)。C++包括C的全部特征、屬性和優(yōu)點(diǎn),同時(shí)添加了對面向?qū)ο缶幊?OOP)的完全支持。

C語言盛行的同時(shí),也暴露出它的局限:

(1)C類型檢查機(jī)制相對較弱,這使得程序中的一些錯(cuò)誤不能在編譯時(shí)發(fā)現(xiàn)。

(2)C本身幾乎沒有支持代碼重用的語言結(jié)構(gòu),因此一個(gè)程序員精心設(shè)計(jì)的程序,很難為其他程序所用。

(3)當(dāng)程序的規(guī)模達(dá)到一定的程度時(shí),程序員很難控制程序的復(fù)雜性。C++的特點(diǎn)

(1)C++保持與C兼容。

(2)用C++編寫的程序可讀性更好,代碼結(jié)構(gòu)更為合理,支持面向?qū)ο蟮臋C(jī)制,可方便地構(gòu)造出模擬現(xiàn)實(shí)問題的實(shí)體和操作。

(3)生成代碼的質(zhì)量高,運(yùn)行效率僅比匯編語言代碼段慢10%到20%(4)從開發(fā)時(shí)間、費(fèi)用到形成的軟件的可重用性、可擴(kuò)充性、可維護(hù)性和可靠性等方面有了很大的提高,使得大中型的程序開發(fā)項(xiàng)目變得容易的多。學(xué)習(xí)C++的目的

1.本身是一門優(yōu)秀的設(shè)計(jì)語言;

2.同時(shí)是一門實(shí)用的軟件開發(fā)語言,

3.可觸類旁通其他語言,如C#,Java等;

4.掌握面向?qū)ο蟮能浖O(shè)計(jì)方法;學(xué)習(xí)方法

1.掌握基本概念,如類、繼承、多態(tài);

2.多實(shí)踐.交流;

3.多讀優(yōu)秀的源代碼;編譯器

1.BorlandC++Builder5.0/6.0,

2.BorlandC++BuilderX1.0;3.MicrosoftVisualC++6.0

課程考核要求

1.熟悉重要概念;

2.讀懂C++編寫的常用的典型程序;

3.可獨(dú)立編寫C++程序;初識(shí)C++的函數(shù)和對象首先看下面這個(gè)簡單的C++程序

//simple.cpp是一個(gè)簡單的C++程序#include<iostream>//包含頭文件Usingnamespacestd;//使用命名空間voidmain()//主函數(shù){inti;//初始化對象cout<<“HelloC++!\n”;//輸出提示信息cout<<"請輸入一個(gè)整數(shù):";cin>>i;//接受輸入數(shù)值cout<<"您輸入的整數(shù)是:";cout<<i;//輸出值cout<<'\n';}

C語言程序編譯預(yù)處理命令

(1)宏定義:不帶參數(shù)的宏;帶參數(shù)的宏;

#define<宏名><替換字串>

取消宏定義

#undef<宏名>(2)文件包含:兩種格式―――牽涉到C程序文件的組織方式:公用數(shù)據(jù)和函數(shù)說明放在頭文件(.h)中;實(shí)現(xiàn)函數(shù)功能的函數(shù)體和局部數(shù)據(jù)放在源文件(.cpp)中;

#include<文件名>

在系統(tǒng)指定的目錄中查找文件(系統(tǒng)設(shè)置時(shí)的include目錄)。

#include“文件名”在當(dāng)前目錄中查找文件,若找不到,再到系統(tǒng)指定的目錄中查找。我們對這個(gè)程序進(jìn)行解釋2.主函數(shù)

C++源程序可由一個(gè)main函數(shù)和其他函數(shù)構(gòu)成。

函數(shù)是c++程序的基本單位,一個(gè)C++程序有且只能有一個(gè)主函數(shù)main,是程序的入口,其他函數(shù)通過函數(shù)調(diào)用被執(zhí)行。用戶可自己定義函數(shù),也可使用系統(tǒng)提供的函數(shù)。3.使用注釋

注釋部分以“//…….”(或/*……*/)來標(biāo)志,系統(tǒng)對注釋不做任何處理,幫助人閱讀程序

//…….到行尾

/*……*/多行4.使用命名空間

這是新的C++標(biāo)準(zhǔn)引入了新標(biāo)準(zhǔn)類庫的頭文件載入方式,即省略“.h”。不過必須同時(shí)使用下述語句:

Usingnamespacestd;它提高了程序的性能和可靠性5.使用輸入和輸出對象C++中的輸入輸出操作由“流”來處理。C++將數(shù)據(jù)從一個(gè)對象流向另一個(gè)對象的流動(dòng)抽象為“流”提取操作:從流中獲取數(shù)據(jù)的操作;插入操作:向流中添加數(shù)據(jù)的操作;流對象(iostream.h)

cin:用來處理標(biāo)準(zhǔn)輸入,即鍵盤輸入;

cout:用來處理標(biāo)準(zhǔn)輸出,即屏幕輸出;

①數(shù)據(jù)輸出cout

(1)作用:將數(shù)據(jù)輸出到外設(shè)(如屏幕);(2)格式:cout<<表達(dá)式1<<表達(dá)式2<<表達(dá)式3<<…<<表達(dá)式n其中“<<”稱為插入運(yùn)算符,將其后表達(dá)式的值輸出到顯示器當(dāng)前光標(biāo)位置。例如,

inta=2,b=3;charc='x';cout<<"a="<<a<<'\t'<<"b="<<b<<'\n';cout<<"c="<<c<<'\n';則執(zhí)行后顯示器上顯示:

a=2 b=3c=x②數(shù)據(jù)輸出cin(1)作用:從外設(shè)(鍵盤)輸入數(shù)據(jù)到變量(2)格式:cin>>變量名1〔>>變量名2>>變量名3…>>變量名n〕;其中,“>>”稱為提取運(yùn)算符,表示將暫停程序執(zhí)行,等待用戶從鍵盤上輸入相應(yīng)的數(shù)據(jù)。在提取運(yùn)算符后只能跟一個(gè)變量名,但“>>變量名”可以重復(fù)多次,即可給一個(gè)變量輸入數(shù)據(jù),也可給多個(gè)變量輸入數(shù)據(jù)7.函數(shù)類型和返回值

函數(shù)由函數(shù)說明部分和函數(shù)體部分組成

floataverage(floata,floatb,floatc){ floatsum,average; sum=a+b+c; average=sum/3; returnaverage;}6.對象的定義和初始化

定義對象包括為它命名并賦予它數(shù)據(jù)類型。每個(gè)對象都隸屬于某個(gè)特定的數(shù)據(jù)類型。人們習(xí)慣于稱對象為變量,C++程序設(shè)計(jì)時(shí),為了盡快養(yǎng)成使用對象思考問題的習(xí)慣,建議改成對象。本程序使用整型對象:inti8.程序運(yùn)行結(jié)果:

HelloC++!

請輸入一個(gè)整數(shù):2

您輸入的整數(shù)是:2

C++語言對C語言擴(kuò)充和增強(qiáng)的幾點(diǎn)具體體現(xiàn)1.更加靈活的變量說明

在傳統(tǒng)的C語言中,局部變量的說明必須集中放在執(zhí)行代碼的前面,數(shù)據(jù)說明語句和執(zhí)行語句的混合將引起編譯錯(cuò)誤。而在C++中,可以在程序代碼塊的任何地方中卻可進(jìn)行局部變量的說明。比如下面的代碼在C語言中是不正確的,在C++語言以正常運(yùn)行。

for(inti=1;i<=100;i++);

這樣做的好處是使變量的定義和它的使用集中在一起,意義一目了然。

2.更加嚴(yán)格的函數(shù)原型說明

C++摒棄了C語言對函數(shù)原型隨意簡化的方式,這種簡化是許多C語言程序錯(cuò)誤的根源。C++語言要求編程者為函數(shù)提供完整的原型,包括全部參數(shù)的類型和返回值得說明。

例如,有字符型和雙精度類型兩個(gè)參數(shù)、返回整型值的函數(shù)f,原型應(yīng)該寫為:

intf(char,double);

而C語言中允許將這個(gè)原型寫成"f();"。

在函數(shù)原型說明中,參數(shù)名可有可無,并且可以和函數(shù)定義中的參數(shù)名不一致。3.函數(shù)缺省參數(shù)

C++中允許函數(shù)有缺省參數(shù)。所謂缺省,是指函數(shù)調(diào)用時(shí)可以不給出實(shí)際的參數(shù)值。下面是一個(gè)有缺省參數(shù)的函數(shù)定義的實(shí)例:例:

intf(inta,intb=1)

{

returna*b;

}

此后,函數(shù)調(diào)用f(3,1)和f(3)將返回同樣的結(jié)果。4.增加了內(nèi)聯(lián)函數(shù)(InlineFunction)

5.增加了函數(shù)重載機(jī)制

6.更加方便的動(dòng)態(tài)存儲(chǔ)分配函數(shù)部分講7.

作用域限定運(yùn)算符

::

作用域限定運(yùn)算符::用于對當(dāng)前作用域之外的同名變量進(jìn)行訪問。例如在下面的例子中,我們可以利用::實(shí)現(xiàn)在局部變量a的作用域范圍內(nèi)對全局變量a的訪問。

例:#include<iostream.h>

inta;

voidmain()

{

floata;

a=3.14;

::a=6;

cout<<“l(fā)ocalvariablea=”<<a<<endl;

cout<<“globalvariablea=”<<::a<<endl;

}程序執(zhí)行結(jié)果如下:

localvariablea=3.14

globalvariablea=6

程序的調(diào)試與運(yùn)行一、C++程序的編輯、編譯和運(yùn)行二、VisualC++6.01.編輯:輸入、編輯、保存成源文件(多個(gè))2.編譯、鏈接源程序文件:預(yù)處理;編譯生成目標(biāo)程序文件.obj;鏈接生成可執(zhí)行文件.exe3.運(yùn)行程序:4.程序調(diào)試:編譯錯(cuò)誤、鏈接錯(cuò)誤、算法錯(cuò)誤啟動(dòng)VisualC++:方法:開始菜單—>程序—>MicrosoftVisualstudio6.0—>MicrosoftVisualC++6.0;或:

雙擊桌面上的MicrosoftVisualstudio6.0的快捷方式;標(biāo)題欄菜單欄工具欄工作區(qū)窗口Workspace輸出窗口Output編輯區(qū)狀態(tài)欄VC++集成環(huán)境簡介:VisualC++6.0主窗口(實(shí)驗(yàn)P1)Project:

一個(gè)VC++應(yīng)用程序稱為一個(gè)項(xiàng)目

項(xiàng)目是一些相互關(guān)聯(lián)的源文件的集合,包括:

SourceFiles源程序代碼文件.cppHeaderFiles頭文件.hResourceFiles資源文件程序結(jié)構(gòu)信息文件系統(tǒng)參數(shù)設(shè)置文件等

一個(gè)項(xiàng)目的文件可以存放在不同的文件夾和驅(qū)動(dòng)器中項(xiàng)目(project)※可包含多個(gè)項(xiàng)目,一般只包含一個(gè)項(xiàng)目※VisualC++以項(xiàng)目工作區(qū)方式組織文件、項(xiàng)目和項(xiàng)目配置?!㈨?xiàng)目時(shí),自動(dòng)建立項(xiàng)目工作區(qū)文件.dsw

用于描述項(xiàng)目工作區(qū)的內(nèi)容和設(shè)置※同時(shí)建立工程文件.dsp和工作區(qū)選項(xiàng)文件

.opt

用于保存項(xiàng)目工作區(qū)的設(shè)置※在項(xiàng)目工作區(qū)中可查看和訪問項(xiàng)目中的各種元素項(xiàng)目工作區(qū)(workspace)1.啟動(dòng)VisualC++6.02.創(chuàng)建新項(xiàng)目,要添加到項(xiàng)目工作區(qū),有兩種選擇:

(1)添加到新創(chuàng)建的項(xiàng)目工作區(qū)(2)添加到當(dāng)前指定的項(xiàng)目工作區(qū)3.建立新的源文件,要添加到指定項(xiàng)目中4.編輯/輸入源程序,保存程序.cpp(.h)注意:一個(gè)項(xiàng)目中只能有一個(gè)含main函數(shù)的文件5.編譯源程序:Build菜單中的Compile命令(ctrl+F7),形成目標(biāo)文件.obj。6.鏈接目標(biāo)程序,形成可執(zhí)行文件:Build菜單中的Build命令(F7),形成可執(zhí)行文件.exe。7.運(yùn)行程序:Build菜單中的Execute命令(ctrl+F5)VisualC++6.0中創(chuàng)建一個(gè)C/C++程序(新項(xiàng)目)的步驟:知識(shí)點(diǎn):本章主要講述程序設(shè)計(jì)的基本概念和方法,并簡單介紹了C++語言的特點(diǎn)以及VisualC++集成開發(fā)環(huán)境的使用。學(xué)習(xí)C++,不一定非要學(xué)過C。但學(xué)過C能促進(jìn)C++的學(xué)習(xí)。

C++程序由函數(shù)構(gòu)成,它總是從主函數(shù)main()開始運(yùn)行。但并不是說,main()函數(shù)非得要寫在程序的最前面。

函數(shù)有兩種:標(biāo)準(zhǔn)庫函數(shù)和用戶定義函數(shù)。main()函數(shù)是特殊的用戶定義函數(shù)。每個(gè)程序只能有一個(gè)main()函數(shù),并且必須要有一個(gè)main()函數(shù)。

一個(gè)語句可以寫在多個(gè)程序行上,一個(gè)程序行可以寫多個(gè)語句。語句以分號(hào)結(jié)束。

C++通過標(biāo)準(zhǔn)輸入輸出流進(jìn)行輸入輸出。

C++程序經(jīng)過編輯、編譯和連接,產(chǎn)生可運(yùn)行的exe文件。

內(nèi)容小結(jié):§

3-3運(yùn)算符和表達(dá)式(續(xù))一、關(guān)系運(yùn)算符和關(guān)系表達(dá)式二、邏輯運(yùn)算符和邏輯表達(dá)式一、關(guān)系運(yùn)算符和表達(dá)式:

關(guān)系運(yùn)算符:>>=<<===!=高低雙目,左結(jié)合性

關(guān)系表達(dá)式格式:<表達(dá)式><關(guān)系運(yùn)算符><表達(dá)式>例:x>5y>=x+3x==y*2

值:條件成立為真1

條件不成立為假,0二、邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符:

操作數(shù)為0代表假,非0為真

值!單目&&||雙目0:假1:真如何表示3<x<=10?x>3&&x<=10右結(jié)合性左結(jié)合性高低*小結(jié)*:條件幾種表示形式復(fù)合條件如:條件

復(fù)合條件

3≤x<100x>=3&&x<100

判字符變量c的值是大寫字母?

(c

>=‘A’&&c<=‘Z’)判字符變量c的值不是大寫字母?(c

<

‘A’||c>‘Z’)判字符變量c的值是小寫字母?(c>=‘a(chǎn)’&&c<=‘z’)判字符變量c的值不是小寫字母?(c<‘a(chǎn)’||c>‘z’)判字符變量c的值是字母?if(c>=‘a(chǎn)’&&c<=‘z’||

c>=‘A’&&c<=‘Z’)判字符變量c的值不是字母?if((c<‘a(chǎn)’||c>‘z’)&&

(c<‘A’||c>‘Z’))

注意:是與不是的條件互為反條件§

3-4分支(選擇)結(jié)構(gòu)一、if語句的簡單分支三、if語句的嵌套二、if語句的雙分支四、switch語句(多分支)表達(dá)式語句真假一、if語句的簡單分支

語句:if(表達(dá)式)語句

表達(dá)式為任意表達(dá)式

若有若干語句,要構(gòu)成復(fù)合語句

執(zhí)行:計(jì)算表達(dá)式的值,若為真(不為0)則執(zhí)行語句;否則不執(zhí)行語句例如:求x的絕對值#include<iostream.h>voidmain(){intx,absx;cout<<“pleaseinputx=“;cin>>x;absx=x;if(x<0)absx=-x;cout<<“x=“<<x<<endl;cout<<“|x|=”<<absx;}

if(x>=0)absx=x;elseabsx=-x;absx=fabs(double(x))#include<math.h>例如:C若為大寫字母,則把它變?yōu)樾懽帜福駝t為c本身#include<iostream.h>voidmain(){charch;cin>>ch;if(ch>=‘A’&&ch<=‘Z’)ch=ch+32;cout<<ch;}

c=(c>=‘A’&&c<=‘Z’)?(c+32):c

條件運(yùn)算符:

格式:表達(dá)式1?表達(dá)式2:表達(dá)式3先求表達(dá)式1的值若不等于0(為真),求表達(dá)式2的值,并把它作為整個(gè)表達(dá)式的值若等于0(為假),求表達(dá)式3的值,并把它作為整個(gè)表達(dá)式的值相當(dāng)于分支結(jié)構(gòu)三目運(yùn)算符,右結(jié)合性?:

計(jì)算:條件運(yùn)算符if(ch>=‘A’&&ch<=‘Z’)ch=ch+32;如:c=(c>=‘A’&&c<=‘Z’)?(c+32):c二、if語句的雙分支if(表達(dá)式)語句1else語句2表達(dá)式語句1語句2真假入口出口

執(zhí)行:若表達(dá)式的值不為0,執(zhí)行語句1,否則執(zhí)行語句2

語句:#include<iostream.h>voidmain()

{ inta,b,x; cin>>a>>b; if(a>b) x=a; x*=x; else x=b; cout<<x;}例如:輸入兩個(gè)數(shù)a,b,若a大,則輸出a的平方,若b大,輸出b。

復(fù)合語句一定要加大括號(hào){x=a;x*=a;}嵌套的兩種形式:(1)嵌套if--else(2)嵌套elseif三、if語句的嵌套(處理多分支問題)(1)嵌套if—elseif(表達(dá)式1)if(表達(dá)式3)語句1;if(表達(dá)式2)else語句2;else語句3;else語句4;外層內(nèi)層中層

若表達(dá)式1的值為非0,即真,則執(zhí)行中層if—else結(jié)構(gòu);否則,執(zhí)行語句4。執(zhí)行中層時(shí),若表達(dá)式2的值為非0,即真,則執(zhí)行內(nèi)層if—else結(jié)構(gòu);否則,執(zhí)行語句3。執(zhí)行內(nèi)層時(shí),若表達(dá)式3的值為非0,即真,則執(zhí)行語句1;否則,執(zhí)行語句2。if_else嵌套流程圖if(表達(dá)式1)語句1;

elseif(表達(dá)式2)語句2;

elseif(表達(dá)式3)語句3;….elseif(表達(dá)式n)語句n;else

語句n+1;/*前面n個(gè)條件均不成立,執(zhí)行語句n+1*/(2)嵌套elseifelse_if嵌套流程圖例如:編寫程序計(jì)算函數(shù)

x*x-4(x<=0)y=x(0<x<=3)x*x+4(x>3)解:

根據(jù)題目的三個(gè)區(qū)間,兩個(gè)判斷點(diǎn),形成三分支,可采用三種選擇結(jié)構(gòu)設(shè)計(jì)。

方法1:else_if嵌套結(jié)構(gòu)設(shè)計(jì)方法2:三個(gè)并列的if結(jié)構(gòu)設(shè)計(jì)方法3:if_else嵌套結(jié)構(gòu)設(shè)計(jì)

方法1:else_if嵌套結(jié)構(gòu)----源程序:注:這種方法是判判斷點(diǎn)法

各條件互相關(guān)聯(lián)形成區(qū)間要考慮條件成立與不成立//X>3//0<X<=3//X<=0#include<iostream.h>voidmain(){intx,y;cout<<“pleaseenterthenumber:”;cin>>x;if(x>3) y=x*x+4;elseif(x>0) y=x;else y=x*x-4;cout<<“y=“<<y<<endl;} 方法2三個(gè)并列的if結(jié)構(gòu)------源程序#include<iostream.h>voidmain(){intx,y;cout<<“pleaseenterthenumber:”;cin>>x;

if(x>3)y=x*x+4;

if(x>0&&x<=3)y=x;

if

(x<=0)y=x*x-4;cout<<“y=“<<y<<endl;}注:這種方法是判區(qū)間法。方法3:if_else嵌套結(jié)構(gòu)設(shè)計(jì)#include<iostream.h>voidmain(){intx,y;cout<<“pleaseenterthenumber:”;cin>>x;

if(x>0)

if(x<=3) y=x;

else

y=x*x+4;else

y=x*x-4;cout<<“y=“<<y<<endl;}注:這種方法也是判判斷點(diǎn)法

各條件互相關(guān)聯(lián)形成區(qū)間要考慮條件成立與不成立S=t2t2-1t2-2t+1t2+4t-170<t<11≤t<22≤t<33≤t<4Attention!這題中有無效區(qū)間,用并列if結(jié)構(gòu)時(shí)要排除無效區(qū)間,當(dāng)t在無效區(qū)間時(shí),應(yīng)給s賦一個(gè)無效區(qū)間的任意值。例當(dāng)t=-5則使s=-1//the1stMethod#include<iostream.h>voidmain(){ intt;cout<<"pleaseinputt="; cin>>t; if(t>0) if(t>=1) if(t>=2) if(t>=3) if(t>=4) cout<<"error,tcantbemorehan4!“; elsecout<<"s="<<t*t+4*t-7; elsecout<<"s="<<t*t-2*t+1 elsecout<<"s="<<t*t-1; elsecout<<"s="<<t*t; elsecout<<"error,tcantbelessthan0!“;

}例如:輸入年份,判斷是否為閏年,若是,回 答“Yes”,否則回答“No”。什么樣的年份是閏年?能被4整除:是閏年能被4整除,也能被100整除:不一定是閏年能被4整除,也能被100整除,也能被400整除:是閏年#include<iostream.h>voidmain(){intyear;cout<<“pleaseinputtheyear:”;cin>>year; if(year%100==0)}if(year%400==0)cout<<“Yes”<<endl;elsecout<<“No”<<endl;/*不能被400整除*/elsecout<<“No”<<endl;/*不能被4整除*/elsecout<<“Yes”<<endl;/*不能被100整除*/if(year%4==0)if(year%4)/*不能被4整除*/

cout<<“No”<<endl;elseif(year%100)/*不能被100整除*/

cout<<“Yes”<<endl;elseif(year%400)/*不能被400整除*/

cout<<“No”<<endl;elsecout<<“Yes”<<endl;用一個(gè)邏輯表達(dá)式包含所有條件:if((year%4==0&&year%100!=0)||(year%400==0))leap=1;elseleap=0;四、switch語句(開關(guān)語句)

形式:switch(表達(dá)式){case常量表達(dá)式1:語句序列1;case常量表達(dá)式2:語句序列2;

…..

case常量表達(dá)式n:語句序列n;default:語句序列n+1;}switch語句是多分支選擇語句先計(jì)算switch中表達(dá)式的值,在大括號(hào)中若找到一個(gè)匹配的值就從該語句開始,依次向下執(zhí)行.否則,執(zhí)行default后面的語句組。執(zhí)行:注意:

語句序列中可以有若干條語句,不用復(fù)合語句序列;case后的常量表達(dá)式的值必須為整型和字符型,起標(biāo)號(hào)的作用。

大括號(hào)cin>>N;cout<<x;cin>>N;cout<<x;switch通常與break語句聯(lián)用:break用于中斷或結(jié)束語句(只能用在switch語句和循環(huán)語句中)例:輸入成績,若:90—100:A70—89:B60—69:C<60:Dbreak語句:#include<iostream.h>voidmain(){intcj;cin>>cj;switch(cj/10){ case10: case9:cout<<“\nA”;

case8:case7:cout<<“\nB”;case6:cout<<“\nC”;default:cout<<“\nD”;}}break;break;break;分支結(jié)構(gòu)總結(jié)1、if語句的簡單分支2、if語句的雙分支:if--else3、if的嵌套4、switch語句的使用§3-5循環(huán)結(jié)構(gòu)(滲透簡單算法)一、while語句*二、do--while語句*三、for語句*四、break語句五、循環(huán)的嵌套六、continue語句七、goto語句主要學(xué)習(xí)語句的執(zhí)行過程、使用方法一、while語句循環(huán):重復(fù)執(zhí)行一段語句語句格式:while(表達(dá)式)語句執(zhí)行過程:先求表達(dá)式的值,判斷為真為假,若為真,則執(zhí)行語句真假表達(dá)式語句假注意:語句:一個(gè)語句,不是語句序列表達(dá)式后面不能有分號(hào)例如:求1+2+3+…+100的和#include<iostream.h>voidmain(){ints,i;s=0;/*s為累加和*/

i=1;/*i為循環(huán)控制變量*/

while(i<=100)/*循環(huán)條件*/{s+=i;i++;}cout<<s;}返回#include<iostream.h>voidmain(){ints,i;10:s=0;20:i=1;30:while(i<=4)40:{s+=i;50:i++;}

60:cout<<s;}s=0循環(huán)過程:102040305060i=1s=0+1i=21s=1+2i=311i=4s=3+30s=6+4i=5s=101二、do--while語句格式do語句while(表達(dá)式);執(zhí)行情況:先執(zhí)行語句,在計(jì)算表達(dá)式的值,若非0,再執(zhí)行語句,否則執(zhí)行下面的語句真表達(dá)式語句假do后若有多條語句,需使用復(fù)合語句語句至少被執(zhí)行一次,不同于while語句注意while語句與do-while語句#include<iostream.h>voidmain(){ints,i;s=0;cin>>i;while(i<=100){s+=i;i++;}cout<<s;}#include<iostream.h>voidmain(){ints,i;s=0;cin>>i;do{s+=i;i++;}while(i<=100);cout<<s;}輸入:101輸出:0輸出:101三、for語句(當(dāng)型循環(huán))

格式for(

表達(dá)式1;表達(dá)式2;表達(dá)式3)語句表達(dá)式2語句表達(dá)式1表達(dá)式3表達(dá)式1:作為初始化先執(zhí)行表達(dá)式1的值,再執(zhí)行表達(dá)式2,如果值為真,執(zhí)行語句,再執(zhí)行表達(dá)式3,否則執(zhí)行下面的語句。

執(zhí)行情況真假表達(dá)式2:作為循環(huán)控制,是循環(huán)條件表達(dá)式3:每次都要做改變循環(huán)變量for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)語句for(s=0,i=1;i<=100;i++)

s+=i;注意:

這三個(gè)表達(dá)式都可以忽略,但分號(hào)不能省for(;;)

不能構(gòu)成死循環(huán),死循環(huán)只能用ctrl+c強(qiáng)行中止,所以源程序編輯后應(yīng)先存盤。**全部省略表達(dá)式或省略表達(dá)式2**例如:#include<iostream.h>voidmain(){inti;i=100;while(i>=20) {cout<<“\t“<<i; i-=20; }}#include<iostream.h>voidmain(){inti;for(i=100;i>=20;i-=20)cout<<“\t”<<i;}例如:求n!(n的值由鍵盤輸入)#include<iostream.h>voidmain(){ intn;

doubles=1.0; cout<<"pleaseinputn="; cin>>n; for(inti=1;i<=n;i++) s*=i; cout<<n<<"!="<<s<<endl;}四、break語句

只用于switch語句和循環(huán)中,用在循環(huán)中,用來中止循環(huán),提前跳出循環(huán)體#include<iostream.h>voidmain(){inti=1,s=0;while(i<=100) {if(s>=2000)break; s+=i; i++; }cout<<“s=“<<s<<“i=”<<i;}Example1:結(jié)果:s=2016i=64Example2:輸入一個(gè)數(shù),判斷是否為素?cái)?shù)#include<iostream.h>voidmain(){intn,i;cin>>n;for(i=2;i<n;i++) if(n%i==0)break;if(i==n) cout<<“\nYes”;elsecout<<“\nNo”;}例如:打印出100到200之間的素?cái)?shù)。#include<iostream.h>voidmain(){inti,j;for(i=100;i<=200;i++) { for(j=2;j<i;j++) if(i%j==0)break; if(j>=i)cout<<“\t”<<i; }}五、循環(huán)嵌套內(nèi)循環(huán)外循環(huán)

嵌套不能有交叉

在循環(huán)嵌套中,break語句只能退出一層循環(huán)#include<iostream.h>voidmain(){inti,j;longints=0,m=1;for(i=1;i<=5;i++){m*=i;s+=m;}cout<<s<<endl;}

單重for循環(huán):例:求1!+2!+3!…+5!雙重for循環(huán)的執(zhí)行過程:例:求1!+2!+3!…+5!#include<iostream.h>Voidmain(){inti,j;longints=0,m;for(i=1;i<=5;i++){m=1;for(j=1;j<=i;j++)m*=j;s+=m;}cout<<s<<endl;}

m=1;s=0;當(dāng)i<=5當(dāng)j<=im*=j;j++;s+=m;i++;cout<<s<<endl;#include<iostream.h>10s=0;voidmain()20for(i=1;i<=3;i++){inti,j;30{m=1;longintm,s;40for(j=1;j<=i;j++)50m*=j;60s+=m;}70cout<<s<<endl;}102030405060m=1s=0i=1j=1m=1*1s=0+1i=2j=1m=1m=1*1j=2m=1*2s=1+2i=3j=1j=2j=4m=1m=1*1m=1*2m=2*3s=3+670s=9i=4外走一次內(nèi)走一遍j=2j=3j=3打印一九乘法表1*1=11*2=21*3=3…1*9=9#include<iostream.h>voidmain(){

inti=1,j;cout<<“\n”;for(j=1;j<=9;j++)cout<<i<<“*”<<j<<“=“<<i*j;}inti,j;for(i=1;i<=9;i++) {cout<<“\n”;

for(j=1;j<=9;j++)

/*循環(huán)嵌套*/ cout<<i<<“*”<<j<<“=“<<i*j<<“\t”; }}inti,j;for(i=1;i<=9;i++) {cout<<“\n”;

for(j=1;j<=i;j++)

/*循環(huán)嵌套*/ cout<<i<<“*”<<j<<“=“<<i*j<<“\t”; }}1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=16…1*9=92*9=183*9=274*9=36...六、continue語句

只能用在循環(huán)中continue通常與if語句結(jié)合,一同用于循環(huán)結(jié)構(gòu)

注意:與break語句的區(qū)別continue:結(jié)束本次循環(huán),繼續(xù)下次循環(huán)break:中止循環(huán)的進(jìn)行例:把1到10之間的奇數(shù)輸出出來#include<iostream.h>voidmain(){inti=0;While(++i<=10){if(i%2==0)continue; cout<<i<<““; }}

continue語句的學(xué)習(xí)

//程序1:#include<iostream.h>voidmain(){inti=100;while(i<=200){if(i%3==0)continue;cout<<i<<endl;i++;}}#include<iostream.h>voidmain(){inti=99;while(i<=200){i++;if(i%3==0)continue;cout<<i<<'\t';} cout<<endl;}七、goto語句goto語句的一般形式goto<語句標(biāo)號(hào)>;程序舉例累加累乘判素?cái)?shù)牛頓迭代法數(shù)值積分*算法:§3-1C++輸入輸出流一、無格式輸入輸出二、指定格式輸入輸出返回

輸入:從標(biāo)準(zhǔn)輸入設(shè)備上輸入數(shù)據(jù)到計(jì)算機(jī)內(nèi)存中輸出:將計(jì)算機(jī)中的數(shù)據(jù)在標(biāo)準(zhǔn)輸出設(shè)備上輸出出來一、無格式輸入輸出(系統(tǒng)默認(rèn)的格式)C++中除了可以繼續(xù)使用C語言中標(biāo)準(zhǔn)I/O函數(shù)(printf和scanf)外,還增加了特有的流輸入(cin)和流輸出(cout)。它們被定義在頭文件iostream.h中,在使用cin和cout前,要用預(yù)編譯命令#include將頭文件包含到用戶源文件中(輸入輸出預(yù)說明)。#include“iostream.h”

:在當(dāng)前目錄和系統(tǒng)指定的目錄中找該文件#include<iostream.h>

:在由系統(tǒng)指定的文件目錄中找該文件返回1、無格式輸出cout輸出流是輸出一系列字節(jié),當(dāng)程序需要在屏幕上顯示待輸出的數(shù)據(jù)時(shí),操作符cout必須和操作符<<(插入操作符)配合使用。格式如下:cout<<變量1<<變量2<<...<<變量n;或cout<<變量1<<變量2...<<變量n;返回注:兩種形式輸出效果相同例如:

#include<iostream.h>voidmain(){inta,b;charc;a=1;b=2;c=‘a(chǎn)’;cout<<a<<b<<c;}結(jié)果為:12acout<<“a=“<<a<<“b=“<<b<<“c=“<<c;雙引號(hào)內(nèi)的內(nèi)容原樣輸出a=1b=2c=a#include“iostream.h”voidmain()

{cout<<“hello!\n”;cout<<“Iamastudent”;}例如:輸出結(jié)果為:helloIamastudent311返回2、無格式輸入cin當(dāng)程序需要從鍵盤輸入數(shù)據(jù)(到變量)時(shí),可以使用抽取操作符“>>”從cin輸入流中抽取字符。對于不同類型的數(shù)據(jù)cin格式都相同。格式:

cin>>變量1>>變量2>>...>>變量n;或cin>>變量1>>變量2 ...>>變量n;

返回#include“iostream.h”voidmain()

{inta,b;charc1,c2;cout<<“Pleaseinput2integers\n”;cin>>a>>b;cout<<a+b<<“\n”;cout<<“Pleaseinput2character\n”cin>>c1>>c2;cout<<c1<<c2<<endl;}例如:輸出結(jié)果為:Pleaseinput2integers102030Pleaseinput2characterabab312返回二、指定格式輸入輸出返回返回流的默認(rèn)格式輸出有時(shí)不能滿足特殊要求,如:

doubleaverage=9.400067; cout<<average<<endl;結(jié)果顯示9.40007(默認(rèn)顯示6位有效數(shù)字),而用戶若希望顯示9.40(保留兩位小數(shù))結(jié)果,流默認(rèn)格式就無能為力了。C++用控制符可以對I/O流的格式進(jìn)行控制,可以滿足用戶的要求??刂品陬^文件iomanip.h中,使用控制符時(shí)要在程序的頭上加頭文件iomanip.h。I/O流的常用控制符參P551、控制浮點(diǎn)數(shù)值顯示返回C++默認(rèn)的流輸出數(shù)值有效位是6,使用setprecision(n)可控制輸出流顯示浮點(diǎn)數(shù)的數(shù)字個(gè)數(shù)。setprecision(n)與setiosflags(ios::fixed)合用,可以控制以定點(diǎn)方式輸出數(shù)據(jù)的小數(shù)點(diǎn)右邊的數(shù)字個(gè)數(shù)。ssetprecision(n)與setiosflags(ios::scientific)合用,可以控制指數(shù)表示法的小數(shù)位數(shù)。注意:小數(shù)位數(shù)截短時(shí),進(jìn)行4舍5入處理返回例:分別用浮點(diǎn)、定點(diǎn)和指數(shù)方式表示一個(gè)實(shí)數(shù)。#include<iostream.h>#include<iomanip.h>voidmain(){doubleaverage=9.400067;cout<<average<<endl;cout<<setprecision(1)<<average<<endl;cout<<setiosflags(ios::scientific);cout<<setprecision(6)<<average<<endl;cout<<setiosflags(ios::fixed)<<setprecision(8)<<average<<endl;}流按默認(rèn)值6輸出有效數(shù)字位1小數(shù)點(diǎn)后的位數(shù)8設(shè)置以指數(shù)形式輸出2、設(shè)置值的輸出寬度為控制輸出間隔,除了可以使用空格強(qiáng)行控制外,還可以用setw(n)控制符,它包含在iomanip.h中。setw(n)主要用來輸出欲留空間的格數(shù),若空間多余則向右對齊;否則按實(shí)際數(shù)據(jù)長度輸出。返回注意:setw(n)設(shè)置的間隔方式不保留其效力,僅影響緊接其后的數(shù)值輸出。例如:返回#include<iostream.h>#include<iomanip.h>voidmain(){inta=80;intb=8000;cout<<setw(5)<<a<<endl;cout<<setw(2)<<b;}結(jié)果:???808000cout<<b;3、輸出8進(jìn)制和16進(jìn)制控制符hex、oct和dec分別對應(yīng)16進(jìn)制、8進(jìn)制和10進(jìn)制數(shù)的顯示,它們在iostream.h頭文件中已定義。例如:返回#include<iostream.h>voidmain(){intnumber=1001;cout<<“Decimal:”<<dec<<number<<endl<<“Hexadecimal:”<<hex<<number<<endl<<“Octal:”<<oct<<number<<endl;}結(jié)果為:Decimal:1001Hexdecimal:3e9Octal:17514、設(shè)置填充字符在默認(rèn)狀態(tài)下,使用空格來保證字符間的正確間隔,C++也可以用setfill控制符使一個(gè)非空格字符作為字符間的間隔(一般配合setw控制符使用)。setfill在頭文件iomanip.h中已定義。setfill用法如下:返回例#include<iostream.h>#include<iomanip.h>voidmain(){cout<<setfill(‘*’)<<setw(2)<<12<<endl;<<setw(3)<<12<<endl;<<setw(4)<<12<<endl;}

運(yùn)行結(jié)果:322返回12*12**12自學(xué)5、左右對齊輸出返回6、強(qiáng)制顯示小數(shù)點(diǎn)和符號(hào)7、控制換行endl§3-2結(jié)構(gòu)化程序設(shè)計(jì)概念一、順序結(jié)構(gòu)二、分支結(jié)構(gòu)三、循環(huán)結(jié)構(gòu)返回一、順序結(jié)構(gòu)BAABNS圖流程圖返回

#include<iostream.h>voidmain(){inta,b,t;cin<<a<<b;t=a;a=b;b=t;cout<<“a=”<<a<<“b=“<<b;}abt1234341212a=34b=12輸出:順序結(jié)構(gòu)程序設(shè)計(jì)。#include<iostream.h>#include<math.h>voidmain(){floata,b,c,s,area;cin>>a>>b>>c;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));cout<<“area=“<<area<<endl;}B二、分支結(jié)構(gòu)N如果

成績<60

那么通知補(bǔ)考否則告知你考試成績AY條件PABNY條件P返回2-1標(biāo)識(shí)符

標(biāo)識(shí)符是一個(gè)字符序列,用來標(biāo)記常量、變量、數(shù)據(jù)類型函數(shù)及程序的名字。標(biāo)識(shí)符的命名規(guī)則:

1.所有標(biāo)識(shí)符必須由一個(gè)字母(a~z或A~Z)或下劃線(_)開頭;

2.標(biāo)識(shí)符的其它部分可以用字母、下劃線或數(shù)字(0~9)組成;

3.大小寫字母表示不同意義,即代表不同的標(biāo)識(shí)符,如前面的AGE和age;C++語言中的標(biāo)識(shí)符可以分為3類:關(guān)鍵字、特定字、一般標(biāo)識(shí)符(附錄A,B)

在定義標(biāo)識(shí)符時(shí),雖然語法上允許用下劃線開頭,但是,我們最好避免定義用下劃線開頭的標(biāo)識(shí)符,因?yàn)榫幾g器常常定義一些下劃線開頭的標(biāo)識(shí)符。

C++沒有限制一個(gè)標(biāo)識(shí)符中字符的個(gè)數(shù),但是,大多數(shù)的編譯器都會(huì)有限制。不過,我們在定義標(biāo)識(shí)符時(shí),通常并不用擔(dān)心標(biāo)識(shí)符中字符數(shù)會(huì)不會(huì)超過編譯器的限制,因?yàn)榫幾g器限制的數(shù)字很大(例如255)。

一個(gè)寫得好的程序,標(biāo)識(shí)符應(yīng)該盡量有意義。比如表示年可以用year,表示長度可以用length,表示累加和可以用sum等,這樣的標(biāo)識(shí)符本身就增加了程序的可讀性,使程序更加清晰易懂。匈牙利命名法

正確地的利用命名有助于程序的查錯(cuò)。通過在數(shù)據(jù)和函數(shù)名中加入額外的信息。既增進(jìn)程序員對程序的理解,也方便查錯(cuò)?;驹瓌t是:變量名=類型+對象描述

char8位字符chchGrade

BOOL布爾值bbEnable

int整型nnLength

long32位有符號(hào)整型llOffset

*指針ppDoc數(shù)組構(gòu)造類型:基本類型

:結(jié)構(gòu)體共用體指針類型空類型數(shù)據(jù)類型字符型實(shí)型整型

枚舉型類略基本型短整型長整型無符號(hào)型2-2基本數(shù)據(jù)類型基本類型

整型字符型實(shí)型枚舉型表1基本的數(shù)據(jù)類型及其表示范圍

1、常量(1)整型常量:沒有小數(shù)點(diǎn)十進(jìn)制:不能用數(shù)字0開頭;如123,-23八進(jìn)制:必須以數(shù)字0開頭;如0123十六進(jìn)制:必須以0x或0X開頭,如0x123長整常量:數(shù)字后加l(或L),如123L2.3常量與變量(2)實(shí)型常量:又稱浮點(diǎn)數(shù)十進(jìn)制形式:由數(shù)字和小數(shù)點(diǎn)組成(必須有小數(shù)點(diǎn))如.123,0.123指數(shù)形式:由尾符、尾數(shù)、階碼標(biāo)志e(E)階符、整數(shù)階碼構(gòu)成如:

0.31415926×10=0.314159e+1

31.4159×10

=31.4159e-1注:浮點(diǎn)常量總是以雙精度形式出現(xiàn),若要表示float型數(shù),則必須在實(shí)型數(shù)后面加上f或F,若表示longdouble則加l或L。如:12.3(double型)12.3F(float),12.3L(longdouble)-11(3)字符型常量:

一般字符:鍵盤上有該符號(hào)

轉(zhuǎn)義字符:不能從鍵盤上直接輸入(P28)以“\”開始的字符序列,表示控制代碼單引號(hào)括起來的單個(gè)字符,‘a(chǎn)’’A’’2’單引號(hào)是定界符,不是常量本身的內(nèi)容如

‘\n’表示回車換行(endl)‘\’’表示打印單引號(hào)‘\“’表示打印雙引號(hào)A:65a:970:48(4)字符串常量:3a9d#=s\0存儲(chǔ):依次存放各自的ASCII碼,尾部自動(dòng)加字符串結(jié)束標(biāo)志‘\0’,即:長度:為其本身的長度雙引號(hào)括起來的一串字符例“3a9d#=s”“2天津ABC”

‘a(chǎn)’:字符常量,存儲(chǔ)其ASCII碼值,占據(jù)一個(gè)字節(jié)

“a”:字符串常量,占據(jù)兩個(gè)字節(jié),即:a與\0的ASCII碼值‘a(chǎn)’與“a”的區(qū)別:charc1,c2;inti;c1=‘A’;c2=c1+32;i=c2;注:字符的ASCII碼與整型數(shù)據(jù)可以通用,可以相互賦值注:

在字符串里,可以使用轉(zhuǎn)義字符的書寫方式cout<<“\”Iamastudent!\””;例如:在屏幕上輸出:“Iamastudent!”“A\Sk3”或cout<<“A\\Sk3”;

(5)符號(hào)常量

C++中常量可以是常數(shù),也可以是代表固定不變的值的名字—符號(hào)常量。比如程序中經(jīng)常用到某個(gè)常數(shù),此時(shí)可以定義一個(gè)名字來表示此常數(shù),以便改進(jìn)程序的可讀性。例如計(jì)算圓面積或圓周長要用到3.1415926(不能直接用

),可定義為符號(hào)常量。定義符號(hào)常量一般形式:const

數(shù)據(jù)類型符號(hào)常量=表達(dá)式;例如:constfloatPI=3.1415926;

注意:(1)符號(hào)常量定義時(shí)必須初始化。如:

constfloatPI; PI=3.1415926; //error(2)定義中“表達(dá)式”只能是常量表達(dá)式,不能含有變量和函數(shù)。(6)枚舉常量使用關(guān)鍵字enum定義枚舉類型常量,枚舉常量是一種符號(hào)常量,在內(nèi)存中表示整型數(shù).enum

類型名{枚舉常量1,枚舉常量2,….};例如:

enumCOLOR{RED,BLUE,GREEN,WHITE,BLACK};其中COLOR是枚舉類型名,不是變量名,不占內(nèi)存空間.RED,BLUE…是符號(hào)常量,如果沒有專門規(guī)定,第一個(gè)符號(hào)常量的枚舉值就是0,其他依次為:1,2,3,….,故RED的值為0,BLUE的值為1.可以給符號(hào)常量指定枚舉值,也可以部分指定枚舉值.

enumCOLOR{RED=100,BLUE=200,GREEN,WHITE=400};其中GREEN自動(dòng)被賦值為201.例:

in

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論