C++程序設(shè)計(jì)-教學(xué)幻燈片_第1頁(yè)
C++程序設(shè)計(jì)-教學(xué)幻燈片_第2頁(yè)
C++程序設(shè)計(jì)-教學(xué)幻燈片_第3頁(yè)
C++程序設(shè)計(jì)-教學(xué)幻燈片_第4頁(yè)
C++程序設(shè)計(jì)-教學(xué)幻燈片_第5頁(yè)
已閱讀5頁(yè),還剩497頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C++程序設(shè)計(jì)課程安排及要求課程信息:總學(xué)時(shí):48學(xué)時(shí)上課:24學(xué)時(shí)上機(jī):24學(xué)時(shí)考試方式:待定課堂要求:1.不允許無(wú)故缺席,缺席一次,平時(shí)成績(jī)扣10分。2.采取不定時(shí)點(diǎn)名,累積缺席達(dá)3次,取消該門(mén)課考試資格。上機(jī)要求:上機(jī)玩游戲、聊天者,發(fā)現(xiàn)一次扣平時(shí)成績(jī)2分,累計(jì)8次,平時(shí)成績(jī)記0分關(guān)于C++語(yǔ)言課程C與C++(C加加,see-plus-plus)貝爾實(shí)驗(yàn)室于二十世紀(jì)八十年代在C語(yǔ)言的基礎(chǔ)上開(kāi)發(fā)的。C++是C語(yǔ)言的超集,包含了C語(yǔ)言的所有內(nèi)容,同時(shí)增加了面向?qū)ο缶幊谭矫娴膬?nèi)容。C++與Java和C#C++是Java和C#的始祖。Java和C#是C++的子集與簡(jiǎn)化因此,學(xué)習(xí)C++后學(xué)習(xí)Java與C#會(huì)事半工倍、倍感輕松。參考書(shū)目與課時(shí)安排參考書(shū)目C++程序設(shè)計(jì)導(dǎo)學(xué).李春葆著.北京:清華大學(xué)出版社C++語(yǔ)言程序設(shè)計(jì)教程楊進(jìn)才沈顯君劉蓉編著清華大學(xué)出版社C++Primer(3RD)中文版.StanleyB.Lippman,Josee

Lajoie

著.潘愛(ài)民,張麗譯.北京:中國(guó)電力出版社

如何學(xué)好C++能細(xì)能粗在面向過(guò)程編程部分,對(duì)數(shù)據(jù)類(lèi)型、運(yùn)算符、語(yǔ)句等要注重細(xì)節(jié)。做到細(xì)致掌握。在面向?qū)ο蟛糠种卦趯?duì)概念的掌握,對(duì)每個(gè)概念回答是什么?為什么?如何?這三個(gè)問(wèn)題。做到掌握思想。重視實(shí)踐和學(xué)好所有編程語(yǔ)言一樣,做到“上機(jī)、上機(jī)、再上機(jī)”。利用資源利用網(wǎng)絡(luò)資源進(jìn)行學(xué)習(xí)、交流、答疑。如清華大學(xué)的BBS站的C++學(xué)習(xí)園地上有大量的帖子。地址:第1章C++編程簡(jiǎn)介本章內(nèi)容1.1計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言1.2面向過(guò)程的程序設(shè)計(jì)1.3面向?qū)ο蟮某绦蛟O(shè)計(jì)1.4C++概述1.5C++程序?qū)嵗?/p>

1.1計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言面向過(guò)程面向?qū)ο驝PU指令系統(tǒng),由0、1序列構(gòu)成的指令碼組成如:10000000加

10010000減用助記符號(hào)描述的指令系統(tǒng)如ADDAX,BX面向機(jī)器的語(yǔ)言程序設(shè)計(jì)依賴(lài)解決問(wèn)題的過(guò)程客觀事物描述成具有屬性和行為的對(duì)象;同一類(lèi)對(duì)象的共同屬性和行為形成類(lèi);封裝對(duì)象間通過(guò)發(fā)送和接受消息發(fā)生聯(lián)系;類(lèi)的繼承與多態(tài)性可以提供使用現(xiàn)成類(lèi)的機(jī)制,從而實(shí)現(xiàn)代碼的重用.

程序設(shè)計(jì)關(guān)鍵是定義類(lèi),并由類(lèi)實(shí)例化成對(duì)象接近人的自然語(yǔ)言習(xí)慣,如:100+200

1.2面向過(guò)程的程序設(shè)計(jì)本質(zhì):通過(guò)程序來(lái)進(jìn)行數(shù)據(jù)處理高級(jí)語(yǔ)言:1、面向過(guò)程的語(yǔ)言BASIC、PASCAL、C2、面向?qū)ο蟮恼Z(yǔ)言C++、JAVA

1.2面向過(guò)程的程序設(shè)計(jì)例如:要向屏幕打印一個(gè)“A”字符1、BASIC語(yǔ)言:PRINT“A”2、PASCAL語(yǔ)言:writeln(‘A’);3、C語(yǔ)言:printf(“A”);4、C++語(yǔ)言:cout<<“A”;5、JAVA語(yǔ)言:System.out.print("A");主要思想自頂向下逐步求精核心算法:為解決某一應(yīng)用問(wèn)題而采用的解題步驟。 一個(gè)計(jì)算機(jī)程序可以看成是由一系列任務(wù)組成的,任何一項(xiàng)任務(wù)如果過(guò)于復(fù)雜就將其分解成一系列較小的子任務(wù),直至每一項(xiàng)任務(wù)都很小,很容易解決。1.2面向過(guò)程的程序設(shè)計(jì)基本結(jié)構(gòu)1.2面向過(guò)程的程序設(shè)計(jì)“面向過(guò)程的程序設(shè)計(jì)”不足:1、生產(chǎn)率低下,軟件代碼重用程度低;2、軟件維護(hù)困難。“面向?qū)ο蟮某绦蛟O(shè)計(jì)”本質(zhì):把數(shù)據(jù)和處理數(shù)據(jù)的過(guò)程當(dāng)成一個(gè)整體即對(duì)象?!懊嫦?qū)ο蟮某绦蛟O(shè)計(jì)”優(yōu)點(diǎn):與人類(lèi)習(xí)慣的思維方式一致??芍赜眯院谩?删S護(hù)性好。1.3面向?qū)ο蟮某绦蛟O(shè)計(jì)對(duì)象是實(shí)現(xiàn)世界中的一個(gè)實(shí)際存在的事物張三李四抽象類(lèi)是具有相同屬性和服務(wù)的一組對(duì)象的概括屬性服務(wù)性別,年齡…說(shuō)話(huà),行走…具體化繼承新類(lèi)人說(shuō)話(huà),行走…性別,年齡…大學(xué)生性別,年齡,專(zhuān)業(yè)…說(shuō)話(huà),行走,學(xué)習(xí)…消息1.3面向?qū)ο蟮某绦蛟O(shè)計(jì)封裝:信息隱蔽:通過(guò)將類(lèi)定義的成員設(shè)置成不同的訪問(wèn)權(quán)限來(lái)實(shí)現(xiàn)。繼承和派生:在程序中定義類(lèi),當(dāng)出現(xiàn)兩個(gè)或多個(gè)類(lèi)享有相似的情況,就不必重復(fù)在類(lèi)中定義,可通過(guò)繼承,從其他類(lèi)派生出其他類(lèi)。多態(tài)性:指在一般類(lèi)中定義的屬性和行為,被特殊類(lèi)繼承之后,可以具有不同的數(shù)據(jù)類(lèi)型或表現(xiàn)出不同的行為。1.3面向?qū)ο蟮某绦蛟O(shè)計(jì)1.4C++語(yǔ)言概述全面支持C

C++語(yǔ)言的產(chǎn)生

1983加入類(lèi)CC++ANSIC++1994標(biāo)準(zhǔn)化C++語(yǔ)言的特點(diǎn)

面向?qū)ο蟊菴更完善、安全、高效

1.3C++程序開(kāi)發(fā)過(guò)程程序代碼的錄入、修改執(zhí)行預(yù)處理指令,詞法分析、語(yǔ)法分析后生成目標(biāo)程序與其它目標(biāo)程序或庫(kù)連接,生成可執(zhí)行程序1.4C++程序?qū)嵗?/p>

/*************************************************程序文件名:p1_1.cpp**本程序顯示:HelloC++!**設(shè)計(jì)者:魯瑩時(shí)間:8-27-2007************************************************/#include<iostream>//載入頭文件usingnamespacestd;//使用命名空間stdvoidmain()//程序入口{

cout<<"HelloC++!"<<endl;}

預(yù)處理命令無(wú)返回值無(wú)參數(shù)、無(wú)返回值的主函數(shù)主函數(shù)名函數(shù)開(kāi)始函數(shù)體語(yǔ)句結(jié)束標(biāo)志函數(shù)結(jié)束運(yùn)行結(jié)果:

HelloC++!注釋塊注釋行在C++程序中,注釋塊由“/*”開(kāi)始,由“*/”結(jié)束,可以實(shí)現(xiàn)多行注釋

。也可使用“//”進(jìn)行單行注釋。

C++語(yǔ)言的預(yù)處理命令都是以“#”號(hào)開(kāi)頭。iostream是一個(gè)頭文件,系統(tǒng)頭文件不帶.h后綴

cout為標(biāo)準(zhǔn)輸出流對(duì)象,它與顯示器相連。<<是插入操作符,endl為換行符號(hào)。整個(gè)語(yǔ)句的功能是將”HelloC++!”字符串與endl依次插入到cout中

main是主函數(shù)名,一個(gè)C++語(yǔ)言程序有且僅有一個(gè)main函數(shù)。C++程序執(zhí)行時(shí)就是從main函數(shù)開(kāi)始.

C++語(yǔ)言規(guī)定:語(yǔ)句以分號(hào)結(jié)束

?為什么:標(biāo)準(zhǔn)C++庫(kù)提供的對(duì)象等都放在標(biāo)準(zhǔn)名字空間std中,要使用它們,必須要聲明使用標(biāo)準(zhǔn)名字空間std.

使用標(biāo)準(zhǔn)名字空間std有3種方式:整體聲明

usingnamespacestd;使用時(shí)單個(gè)對(duì)象臨時(shí)聲明

std::cout<<"HelloC++"<<std::endl;單個(gè)對(duì)象使用前聲明

usingstd::cout;

整體聲明#include<iostream>usingnamespacestd;voidmain(){

cout<<"HelloC++!"<<endl;}單個(gè)對(duì)象臨時(shí)聲明#include<iostream>voidmain()

{

std::cout<<”HelloC++!”<<std::endl;}單個(gè)對(duì)象使用前聲明#include<iostream>usingstd::cout;usingstd::endl;voidmain(){

cout<<”HelloC++!”<<endl;}使用名字空間相同的名字放在不同空間以防止命名沖突

cin>>對(duì)象1>>對(duì)象2>>...>>對(duì)象n;

cout<<對(duì)象1<<對(duì)象2<<...<<對(duì)象n;C++中使用對(duì)象cin

作為標(biāo)準(zhǔn)輸入流對(duì)象,通常代表鍵盤(pán),cin與提取操作符>>連用,使用格式為:意思是從標(biāo)準(zhǔn)輸入流對(duì)象鍵盤(pán)上提取n個(gè)數(shù)據(jù)分別給對(duì)象1、對(duì)象2、...、對(duì)象n。C++中使用對(duì)象cout

作為標(biāo)準(zhǔn)輸出流對(duì)象,通常代表顯示設(shè)備,cout

與插入操作符<<連用,使用格式為:意思是依次從將對(duì)象1、對(duì)象2、...、對(duì)象n插入到標(biāo)準(zhǔn)輸出流對(duì)象中,從而實(shí)現(xiàn)了對(duì)象在顯示器上的輸出.C++輸入/輸出簡(jiǎn)介本章小結(jié)程序設(shè)計(jì)語(yǔ)言經(jīng)歷了從機(jī)器語(yǔ)言、匯編語(yǔ)言、高級(jí)語(yǔ)言、面向?qū)ο蟮恼Z(yǔ)言的發(fā)展過(guò)程,使得編程語(yǔ)言與人的自然語(yǔ)言越來(lái)越接近,編程效率越來(lái)越高。程序設(shè)計(jì)方法經(jīng)歷了面向過(guò)程的方法、結(jié)構(gòu)化的方法、面向?qū)ο蟮姆椒ǖ陌l(fā)展過(guò)程。C++語(yǔ)言具有全面兼容C與面向?qū)ο蟮奶攸c(diǎn),支持結(jié)構(gòu)化與面向?qū)ο蟪绦蛟O(shè)計(jì)方法。面向?qū)ο蟮幕靖拍钣校簩?duì)象、類(lèi)、封裝、繼承、消息、多態(tài)性。C++程序設(shè)計(jì)的步驟有編輯、預(yù)編譯、編譯、連接、調(diào)試與運(yùn)行。程序注釋有兩種方法,應(yīng)培養(yǎng)給程序?qū)懽⑨尩暮昧?xí)慣。預(yù)處理指令include在編譯的預(yù)處理階段將頭文件搬到程序中,包含文件是C++程序的必不可少的部分。標(biāo)準(zhǔn)C++的類(lèi)庫(kù)定義在名字空間std中,可以通過(guò)三種方法使用名字空間。實(shí)驗(yàn)一熟悉Vc++上機(jī)環(huán)境編程實(shí)現(xiàn)在屏幕上顯示輸出“Hello,VC++!”實(shí)現(xiàn)在屏幕上顯示輸出以下圖形:

*********第2章C++數(shù)據(jù)類(lèi)型主講:魯瑩本章內(nèi)容2.1

數(shù)據(jù)類(lèi)型概述2.2

常量與變量2.3

基本類(lèi)型2.4

運(yùn)算符和表達(dá)式2.5

類(lèi)型轉(zhuǎn)換

基本整型(int)

短整型(short)

整型長(zhǎng)整型(long)

無(wú)符號(hào)型(unsigned)

基本類(lèi)型

單精度型(float)

實(shí)型(浮點(diǎn)型)雙精度型(double)

字符型(char)擴(kuò)展雙精度型(longdouble)數(shù)據(jù)類(lèi)型布爾型(bool)

空類(lèi)型(void)

數(shù)組類(lèi)型([])

指針類(lèi)型

(*)

構(gòu)造類(lèi)型結(jié)構(gòu)體類(lèi)型(struct)

共用體類(lèi)型(union)

枚舉型(enum)

類(lèi)(class)2.1數(shù)據(jù)類(lèi)型概述C++中新增2.1數(shù)據(jù)類(lèi)型概述數(shù)據(jù)類(lèi)型和內(nèi)存空間不同的數(shù)據(jù)類(lèi)型,加上不同的修飾符就具有了不同的特點(diǎn),在內(nèi)存中占用的空間也不同,因而其所能表示的數(shù)值范圍也不盡相同。內(nèi)存單元的單位是字節(jié),因此用來(lái)表示數(shù)據(jù)類(lèi)型的長(zhǎng)度的單位也是字節(jié)。2.1數(shù)據(jù)類(lèi)型概述注意整型int的長(zhǎng)度等于機(jī)器的字長(zhǎng):16位機(jī):int=2字節(jié);32位機(jī):int=4字節(jié)。但是short和long表示的數(shù)據(jù)長(zhǎng)度是固定的,任何支持標(biāo)準(zhǔn)C++的編譯器都是如此,因而如果需要編寫(xiě)可移植性好的程序,應(yīng)將整型聲明為short或long。2.1數(shù)據(jù)類(lèi)型概述例題編寫(xiě)一個(gè)程序,輸出基本數(shù)據(jù)類(lèi)型char,int,float,double,bool的長(zhǎng)度。提示:使用sizeof(數(shù)據(jù)類(lèi)型)能夠獲取不同數(shù)據(jù)類(lèi)型的長(zhǎng)度。2.1數(shù)據(jù)類(lèi)型概述//輸出基本數(shù)據(jù)類(lèi)型的長(zhǎng)度#include<iostream>usingnamespacestd;voidmain(){cout<<“char:”<<sizeof(char)<<“字節(jié)\n";cout<<"int:"<<sizeof(int)<<"字節(jié)\n";cout<<"float:"<<sizeof(float)<<"字節(jié)\n";cout<<"double:"<<sizeof(double)<<"字節(jié)\n";cout<<"bool:"<<sizeof(bool)<<"字節(jié)\n";}2.2常量與變量2.2.1常量2.2.2變量#include<iostream>usingnamespacestd;voidmain(void){constintPRICE=30;

intnum,total;floatv,r,h;num=10;total=num*PRICE;

cout<<total<<endl;r=2.5;h=3.2;v=3.14159*r*r*h;

cout<<v<<endl;}常量變量變量先聲明后使用Page31字符常量2.2.1常量嚴(yán)格來(lái)說(shuō),常量又分成符號(hào)常量和常數(shù)。符號(hào)常量:代表一個(gè)固定不變值的名字常數(shù)(整型和浮點(diǎn)型):程序中使用的具體的數(shù)據(jù)2.2.1常量與符號(hào)常量符號(hào)常量C++中提供了一個(gè)關(guān)鍵字const,用來(lái)區(qū)分常量和變量。并且由于常量代表一個(gè)固定的值,并且該值在程序運(yùn)行過(guò)程中不能夠被改變,所以要求常量在定義的時(shí)候必須進(jìn)行初始化。定義形式有:⑴

const

數(shù)據(jù)類(lèi)型符號(hào)常量名=初始值;

例如:constdoublePI=3.1415926;注意:①

constdoublePI;

PI=3.1415926;

//error

constdoublePI=;

//error

constintM=max(15,23);

//error

⑵#define

符號(hào)常量名初始值例如:#definePI3.14159262.2.1常量與符號(hào)常量2.2.2變量什么是變量?在C++中,變量是存儲(chǔ)信息的地方。變量的實(shí)質(zhì)是內(nèi)存中的一個(gè)地址空間,在這個(gè)地址空間中可以進(jìn)行數(shù)據(jù)的存儲(chǔ)和讀取。2.2.2變量變量有三個(gè)基本要素:名字、類(lèi)型和值。C++的程序設(shè)計(jì)中,在使用變量前必須首先定義變量,即指定變量的名稱(chēng)與數(shù)據(jù)類(lèi)型。變量一經(jīng)定義,系統(tǒng)根據(jù)其數(shù)據(jù)類(lèi)型在內(nèi)存中為該變量分配一定的存儲(chǔ)單元,在該存儲(chǔ)單元中可存放變量的值。變量的定義

一般格式為:

數(shù)據(jù)類(lèi)型關(guān)鍵字變量名表;

說(shuō)明:(1)變量名表:可以包含若干個(gè)變量,彼此間用

逗號(hào)分開(kāi)。變量名必須是合法的標(biāo)識(shí)符,不能用C++的關(guān)鍵字作為變量名。

(2)數(shù)據(jù)類(lèi)型:變量可以被定義為基本數(shù)據(jù)類(lèi)型和構(gòu)造類(lèi)型。

例如:

intx;

floatarea,width,length;

變量的定義

注意:

與C語(yǔ)言不同,C++語(yǔ)言中的變量定義不必位于程序的開(kāi)始,可以穿插在其它語(yǔ)句中間。變量最好在使用時(shí)才定義,這樣可以增加程序的可讀性,避免變量發(fā)生混淆。初始化變量在定義變量的同時(shí)給其一個(gè)初始值,稱(chēng)為初始化變量。例如:

unsignedshortwidth=5;

longwidth=8,length=8;

doublearea,radius=20;或unsignedshortwidth(5);

longwidth(8),length(8);

“函數(shù)表示法”

doublearea,radius(20);初始化變量#include<iostream>usingnamespacestd;voidmain(){Int

myAge=18;cout<<“myAge=”<<myAge<<endl;myAge=20;cout<<“myAge=”<<myAge<<endl;}運(yùn)行結(jié)果:myAge=18myAge=201.整型2.實(shí)型(浮點(diǎn)型)3.字符型4.布爾類(lèi)型5.void類(lèi)型小結(jié)2.3基本類(lèi)型voidmain()整型

1.

整型常量的表示

2.

整型變量的分類(lèi)關(guān)鍵字:int整型常量的表示(1)十進(jìn)制整數(shù):非0開(kāi)頭的,以0至9數(shù)字、正負(fù)號(hào)組成的常數(shù),如1234,-10為合法十進(jìn)制整常數(shù),而123.0,1.23E+2是非法的十進(jìn)制整常數(shù)。(2)八進(jìn)制整數(shù):以O(shè)開(kāi)頭的,由0至7數(shù)字組成的數(shù)字串,不能帶符號(hào),如O1234,O10為合法八進(jìn)制整常數(shù),而1234,028則是非法的八進(jìn)制整常數(shù)。整型常量的表示(3)十六進(jìn)制整數(shù):以0x(或0X)開(kāi)頭的,由0至9數(shù)字和a至f(或A至F)字符組成,不能帶符號(hào),如0x10,0x2f,0xa為合法的十六進(jìn)制整常數(shù),而12,0xgf,20H是非法的十六進(jìn)制整常數(shù)。注意:C++中,十進(jìn)制數(shù)有正負(fù)之分,但八進(jìn)制和十六進(jìn)制數(shù)只能表示無(wú)符號(hào)整數(shù)。以下選項(xiàng)中可以作為C/C++語(yǔ)言合法整數(shù)的是

A)10110BB)0368C)0XffaD)x2a2整型變量的分類(lèi)(1)signed:表示有符號(hào)位(可缺省,int型);(2)unsighed:表示無(wú)符號(hào)位(unsigned[int]型);(3)long:表示長(zhǎng)型(long[int]

型和unsignedlong型);(4)short:表示短型(short[int]

型和unsignedshort型);例如:signedinta;等價(jià)于inta;

unsigned

inta;等價(jià)于unsigneda;

long

inta;等價(jià)于

longa;

short

inta;等價(jià)于

shorta;整型變量的分類(lèi)

在十進(jìn)制、八進(jìn)制和十六進(jìn)制表示的整常數(shù)中,若數(shù)字串的后面加上字母l(或L),則說(shuō)明該常數(shù)為長(zhǎng)整數(shù),如12L,027l,0xa1L,0x9FL。若數(shù)字串的后面加上字母u(或U),則說(shuō)明該常數(shù)為無(wú)符號(hào)整數(shù),如5U。說(shuō)明:實(shí)型

1.

實(shí)型常量表示法

2.

實(shí)型變量的分類(lèi)關(guān)鍵字:float和double(1)小數(shù)表示法:由符號(hào)、數(shù)字和小數(shù)點(diǎn)組成的常數(shù),可以省去整數(shù)部分,只保留小數(shù)部分,但絕對(duì)不能沒(méi)有小數(shù)點(diǎn)。如2.55,0.0,-12.3,.234,250.等都是合法的十進(jìn)制小數(shù)。(2)科學(xué)表示法:在小數(shù)表示法后加e(或E)及指數(shù)部分。注意:E或e的前面必須要有數(shù)字,且E后面的指數(shù)必須為整數(shù),指數(shù)部分可正可負(fù)。如2.1E+5,123E-3,123e3,123.e3都是合法的,而345,-.5,3.E,e5等都是非法的指數(shù)形式。實(shí)型常量表示法實(shí)型變量的分類(lèi)(1)單精度型:float型;(數(shù)據(jù)長(zhǎng)度為4個(gè)字節(jié))(2)雙精度型:double型;(數(shù)據(jù)長(zhǎng)度為8個(gè)字節(jié))(3)擴(kuò)展雙精度型:longdouble型;(數(shù)據(jù)長(zhǎng)度為16個(gè)字節(jié))實(shí)型變量的分類(lèi)

1.在C++中,一個(gè)實(shí)型常數(shù)如果沒(méi)有任何說(shuō)明,則表示double型(默認(rèn)型),如:12.3。

2.若要表示float型數(shù),則必須在實(shí)型數(shù)后面加上F或f,如:12.3f,12.3e4f。

3.若要表示longdouble型數(shù),則必須在實(shí)數(shù)后加上L或l,如:12.3L,12.3e4L。

說(shuō)明:字符型

1.

字符型常量

2.

字符串常量關(guān)鍵字:char

例如:charc;

/*字符變量c在內(nèi)存中占用一個(gè)字節(jié)*/一般字符常量:用單引號(hào)括起來(lái)的一個(gè)字符,其值為ASCII代碼值。如‘a(chǎn)’,‘A’,‘#’,‘$’。在內(nèi)存中,字符數(shù)據(jù)是以ASCII碼值存儲(chǔ)的(即以整數(shù)表示),占據(jù)一個(gè)字節(jié)。因此C++使字符數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。如:

‘A’=65=0101=0x41=01000001‘A’和‘a(chǎn)’是不‘a(chǎn)’=97=0141=0x61=01100001同的字符常量‘0’=48=060=0x30‘0’和0是截然‘1’=49=061=0x31不同的兩個(gè)數(shù)字符型常量HELLO\0

字符串常量字符串常量

是用一對(duì)雙引號(hào)括起來(lái)的字符序列。如“a”,“a\\\””,“123”,“Howdoyoudo?\n”,“¥1.23”等都是字符串常量。字符串中可以出現(xiàn)空格或其他字符,也可以包含C++以外的字符,如漢字等。

在C++中,字符串常量和字符常量是不同的,字符串常量中的字符連續(xù)存儲(chǔ),并在最后加上字符‘\0’作為字符串結(jié)束的標(biāo)志。例如字符串“HELLO”在內(nèi)存中占連續(xù)6個(gè)內(nèi)存單元,如圖:字符串常量

字符串常量和字符常量的區(qū)別為:①表現(xiàn)形式不同:“x”,

‘x’

②在內(nèi)存中存放時(shí)所占空間不同:字符常量占1字節(jié)用于存放字符的ASCII碼值;而字符串常量除每個(gè)字符占用1字節(jié)存放其ASCII碼值外,還需1字節(jié)存放結(jié)束標(biāo)志‘\0’。例如“x”在內(nèi)存中占連續(xù)兩個(gè)單元(即2個(gè)字節(jié)),第二個(gè)單元存放‘\0’結(jié)束符,而字符常量‘x’占一個(gè)字節(jié)。③操作不同:字符常量可以在一定范圍與整數(shù)進(jìn)行加減運(yùn)算。如‘r’-‘a(chǎn)’+3是合法的,而“r”-“a”+3是非法的。④存放兩者的變量不同:字符常量存放在字符變量中,而字符串常量需要存放在一個(gè)一維字符數(shù)組中。如:charch=‘a(chǎn)’;是正確的,而charch=“a”;是不正確的。即不能將字符串常量賦給字符變量。布爾類(lèi)型布爾“bool”是表示邏輯變量的專(zhuān)有名詞,所代表的意義就只有“真true”和“假false”兩種。布爾數(shù)據(jù)是用來(lái)控制程序的執(zhí)行方式的,或者說(shuō)是用來(lái)處理程序中判斷或比較結(jié)果的。例如:boolflag=true;//聲明一個(gè)布爾變量

doubled=5.32;

if(flag==false)d=3.24;

由定義,true轉(zhuǎn)為整型值時(shí)為1,false為0。相應(yīng)的,非零值可以隱式地轉(zhuǎn)為true,而0為false。bool類(lèi)型的變量至少占據(jù)和char一樣的空間。2.4運(yùn)算符與表達(dá)式算術(shù)運(yùn)算符與算術(shù)表達(dá)式基本算術(shù)運(yùn)算符

+-*/(若整數(shù)相除,結(jié)果取整)%(取余,操作數(shù)為整數(shù))優(yōu)先級(jí)與結(jié)合性先乘除,后加減,同級(jí)自左至右++,--(自增、自減)例:i++;--j;Page57基本數(shù)據(jù)類(lèi)型和表達(dá)式賦值運(yùn)算符和賦值表達(dá)式

簡(jiǎn)單的賦值運(yùn)算符"="舉例

n=n+5表達(dá)式的類(lèi)型

等號(hào)左邊對(duì)象的類(lèi)型表達(dá)式的值

等號(hào)左邊對(duì)象被賦值后的值Page58基本數(shù)據(jù)類(lèi)型和表達(dá)式賦值運(yùn)算符和賦值表達(dá)式

復(fù)合的賦值運(yùn)算符有10種復(fù)合運(yùn)算符:

+=,-=,*=,/=,%=,

<<=,>>=,&=,^=,|=例

a+=3

等價(jià)于a=a+3

x*=y+8

等價(jià)于x=x*(y+8)基本數(shù)據(jù)類(lèi)型和表達(dá)式賦值運(yùn)算符和賦值表達(dá)式

——賦值表達(dá)式舉例a=5 表達(dá)式值為5a=b=c=5

表達(dá)式值為5,a,b,c均為5a=5+(c=6)

表達(dá)式值為11,a為11,c為6a=(b=4)+(c=6)

表達(dá)式值為10,a為10,b為4,c為6a=(b=10)/(c=2)

表達(dá)式值為5,a為5,b為10,c為2a+=a-=a*a相當(dāng)于

a=a+(a=a-a*a)Page60基本數(shù)據(jù)類(lèi)型和表達(dá)式逗號(hào)運(yùn)算和逗號(hào)表達(dá)式格式表達(dá)式1,表達(dá)式2求解順序及結(jié)果先求解1,再求解2,最終結(jié)果為表達(dá)式2的值例a=3*5,a*4

最終結(jié)果為60Page61基本數(shù)據(jù)類(lèi)型和表達(dá)式關(guān)系運(yùn)算與關(guān)系表達(dá)式關(guān)系運(yùn)算是比較簡(jiǎn)單的一種邏輯運(yùn)算,優(yōu)先次序?yàn)椋?/p>

<<=>>===!=

優(yōu)先級(jí)相同(高)優(yōu)先級(jí)相同(低)關(guān)系表達(dá)式是一種最簡(jiǎn)單的邏輯表達(dá)式其結(jié)果類(lèi)型為bool,值只能為true

或false。例如:a>b,c<=a+b,x+y==3基本數(shù)據(jù)類(lèi)型和表達(dá)式邏輯運(yùn)算與邏輯表達(dá)式邏輯運(yùn)算符

!(非)&&(與)||(或)

優(yōu)先次序:高→低邏輯表達(dá)式

例如:(a>b)&&(x>y)

其結(jié)果類(lèi)型為bool,值只能為true

或false基本數(shù)據(jù)類(lèi)型和表達(dá)式條件運(yùn)算符與條件表達(dá)式一般形式表達(dá)式1?表達(dá)式2:表達(dá)式3表達(dá)式1必須是bool

類(lèi)型執(zhí)行順序先求解表達(dá)式1,若表達(dá)式1的值為true,則求解表達(dá)式2,表達(dá)式2的值為最終結(jié)果若表達(dá)式1的值為false,則求解表達(dá)式3,表達(dá)式3的值為最終結(jié)果例:x=a>b?a:b;基本數(shù)據(jù)類(lèi)型和表達(dá)式條件運(yùn)算符與條件表達(dá)式注意:條件運(yùn)算符優(yōu)級(jí)高于賦值運(yùn)算符,低于邏輯運(yùn)算符表達(dá)式2、3的類(lèi)型可以不同,條件表達(dá)式的最終類(lèi)型為2和3中較高的類(lèi)型。例:x=a>b?a:b;基本數(shù)據(jù)類(lèi)型和表達(dá)式①②sizeof

運(yùn)算符語(yǔ)法形式

sizeof(類(lèi)型名)

或sizeof(表達(dá)式)結(jié)果值:

“類(lèi)型名”所指定的類(lèi)型或“表達(dá)式”的結(jié)果類(lèi)型所占的字節(jié)數(shù)。例:sizeof(short)sizeof(x)基本數(shù)據(jù)類(lèi)型和表達(dá)式位運(yùn)算——按位與(&)運(yùn)算規(guī)則將兩個(gè)運(yùn)算量的每一個(gè)位進(jìn)行邏輯與操作舉例:計(jì)算3&53:000000115:(&)000001013&5:00000001用途:將某一位置0,其它位不變。例如:

將char

型變量a

的最低位置

0:

a=a&0376;取指定位。

例如:有charc;inta;

取出a的低字節(jié),置于

c中:c=a&0377;基本數(shù)據(jù)類(lèi)型和表達(dá)式位運(yùn)算——按位或(|)運(yùn)算規(guī)則將兩個(gè)運(yùn)算量的每一個(gè)位進(jìn)行邏輯或操作舉例:計(jì)算3|53:000000115:(|)000001013|5:00000111用途:將某些位置1,其它位不變。

例如:將int

型變量a

的低字節(jié)置

1

a=a|0xff;基本數(shù)據(jù)類(lèi)型和表達(dá)式位運(yùn)算——按位異或(^)運(yùn)算規(guī)則兩個(gè)操作數(shù)進(jìn)行異或:

若對(duì)應(yīng)位相同,則結(jié)果該位為0,

若對(duì)應(yīng)位不同,則結(jié)果該位為1,舉例:計(jì)算071^052071: 00111001052:(^)00101010071^052: 00010011基本數(shù)據(jù)類(lèi)型和表達(dá)式位運(yùn)算——按位異或(^)用途:使特定位翻轉(zhuǎn)(與0異或保持原值,與1異或取反)例如:要使01111010

低四位翻轉(zhuǎn):

01111010(^) 00001111 01110101基本數(shù)據(jù)類(lèi)型和表達(dá)式位運(yùn)算——取反(~)單目運(yùn)算符,對(duì)一個(gè)二進(jìn)制數(shù)按位取反。例:025:0000000000010101~025:1111111111101010基本數(shù)據(jù)類(lèi)型和表達(dá)式位運(yùn)算——移位左移運(yùn)算(<<)左移后,低位補(bǔ)0,高位舍棄。右移運(yùn)算(>>)右移后,低位:舍棄

高位:無(wú)符號(hào)數(shù):補(bǔ)0

有符號(hào)數(shù):補(bǔ)“符號(hào)位”基本數(shù)據(jù)類(lèi)型和表達(dá)式運(yùn)算符優(yōu)先級(jí)基本數(shù)據(jù)類(lèi)型和表達(dá)式

(1)運(yùn)算符的優(yōu)先級(jí)按單目、雙目、三目、賦值依次降低。

(2)算術(shù)、移位、關(guān)系、按位、邏輯運(yùn)算的優(yōu)先級(jí)依次降低。運(yùn)算符優(yōu)先級(jí)括號(hào)++,--,sizeof*,/,%+,-==,!=位運(yùn)算&&||?:賦值運(yùn)算逗號(hào)運(yùn)算低高基本數(shù)據(jù)類(lèi)型和表達(dá)式2.5

類(lèi)型轉(zhuǎn)換2.5.1自動(dòng)類(lèi)型轉(zhuǎn)換2.5.2強(qiáng)制類(lèi)型轉(zhuǎn)換2.5.1自動(dòng)類(lèi)型轉(zhuǎn)換基本原則: 編譯系統(tǒng)自動(dòng)將低類(lèi)型數(shù)據(jù)轉(zhuǎn)換為高類(lèi)型數(shù)據(jù)。

longdouble

高doublefloatunsignedlonglongunsigned

低intchar,short

強(qiáng)制類(lèi)型轉(zhuǎn)換是靠強(qiáng)制類(lèi)型轉(zhuǎn)換控制運(yùn)算符實(shí)現(xiàn)的,其一般形式為:

數(shù)據(jù)類(lèi)型(操作數(shù))(第一種C++格式)或(數(shù)據(jù)類(lèi)型)操作數(shù)(第二種C++格式)

其中操作數(shù)可以是變量名或表達(dá)式,功能是把操作數(shù)值的數(shù)據(jù)類(lèi)型暫時(shí)強(qiáng)行轉(zhuǎn)換為指定的數(shù)據(jù)類(lèi)型。例如:double(a)、int(x+y)、float(5%3)。2.5.2強(qiáng)制類(lèi)型轉(zhuǎn)換注意:

數(shù)據(jù)類(lèi)型轉(zhuǎn)換僅僅是為了本次操作中對(duì)操作數(shù)進(jìn)行一時(shí)的轉(zhuǎn)換,并不能改變?cè)瓟?shù)據(jù)類(lèi)型說(shuō)明中所規(guī)定的數(shù)據(jù)類(lèi)型。如果使用第二種格式,當(dāng)操作數(shù)為表達(dá)式時(shí),表達(dá)式應(yīng)用括號(hào)括起來(lái)。例如:(int)(x+y)不能寫(xiě)成(int)x+y

。實(shí)驗(yàn)二C++基礎(chǔ)編程練習(xí)編程實(shí)現(xiàn)三個(gè)數(shù)求最大值。編程實(shí)現(xiàn)求解一元二次方程的解。C++語(yǔ)言程序設(shè)計(jì)Programming

inC++

主講:魯瑩第3章結(jié)構(gòu)化程序設(shè)計(jì)第三章結(jié)構(gòu)化程序設(shè)計(jì)3.1C++語(yǔ)言輸入輸出流3.2

結(jié)構(gòu)化程序設(shè)計(jì)概述3.3

順序結(jié)構(gòu)程序設(shè)計(jì)3.4

選擇結(jié)構(gòu)程序設(shè)計(jì)3.5

循環(huán)結(jié)構(gòu)程序設(shè)計(jì)3.6

程序設(shè)計(jì)舉例3.1C++語(yǔ)言輸入輸出流在C++中,將數(shù)據(jù)從一個(gè)對(duì)象到另一個(gè)對(duì)象的流動(dòng)抽象為“流”。從流中獲取數(shù)據(jù)的操作稱(chēng)為提取操作,向流中添加數(shù)據(jù)的操作稱(chēng)為插入操作。數(shù)據(jù)的輸入輸出是通過(guò)輸入輸出I/O流來(lái)實(shí)現(xiàn)的。

C++提供了I/O流機(jī)制,完成對(duì)輸入輸出的操作管理,包括流輸入和流輸出。cin和cout是預(yù)定義的流對(duì)象。cin用來(lái)處理標(biāo)準(zhǔn)輸入,即鍵盤(pán)輸入;cout用來(lái)處理標(biāo)準(zhǔn)輸出,即屏幕輸出。由于cin和cout被定義在“iostream.h”頭文件中,在使用它們之前,要用預(yù)編譯命令“#include”將“iostream.h”(即所使用的頭文件)包括到用戶(hù)的源程序中。即源文件中需有:

#include

<iostream.h>1.無(wú)格式輸出cout

“<<”是預(yù)定義的插入符,使用“<<”向cout輸出流中插入數(shù)據(jù),便可實(shí)現(xiàn)在屏幕上顯示輸出。格式如下:

cout<<表達(dá)式1<<表達(dá)式2…<<表達(dá)式n;

或分成多行:

cout<<表達(dá)式1<<表達(dá)式2…<<表達(dá)式n;//輸出效果同單行格式

3.1.1C++語(yǔ)言無(wú)格式輸入輸出

3.1.1C++語(yǔ)言無(wú)格式輸入輸出

2.無(wú)格式輸入cin

“>>”是預(yù)定義的提取符,使用“>>”從cin輸入流中提取數(shù)據(jù),便可實(shí)現(xiàn)鍵盤(pán)輸入。格式如下:

cin

>>

數(shù)據(jù)1>>數(shù)據(jù)2……>>數(shù)據(jù)n;

也可寫(xiě)成多行:

cin>>數(shù)據(jù)1>>數(shù)據(jù)2……

>>數(shù)據(jù)n;floatf;longl;cin>>f>>l;按特定的格式進(jìn)行輸入輸出,例如對(duì)

doublepi=3.1415;

如果希望顯示的是3.14,即保留兩位小數(shù),且域?qū)挒?個(gè)字符并換行,此時(shí)如用下面的語(yǔ)句則不能完成。

cout<<pi<<“\n”;

//系統(tǒng)默認(rèn)顯示6位有效數(shù)字

為此C++提供了控制符(manipulators),用于對(duì)I/O流的格式進(jìn)行控制。使用控制符,把上述語(yǔ)句改為如下形式則可以完成需求。

cout<<setw(5)<<setprecision(3)<<pi<<endl;

控制符是在頭文件iomanip.h中預(yù)定義的對(duì)象,可以直接插入流中。使用控制符時(shí),要在源文件中添加#include<iomanip.h>預(yù)處理命令。常用控制符如表3.1所示。3.1.2C++語(yǔ)言格式輸入輸出表3.1I/O流的常用控制符

控制符

描述

endldecocthexsetiosflags(ios::uppercase)resetiosflags(ios::uppercase)setw(n)setfill(‘c’)setprecision(n)setiosflags(ios::fixed)setiosflags(ios::scientific)setiosflags(ios::left)setiosflags(ios::right)setiosflags(ios::showpoint)setiosflags(ios::showpos)

插入換行符并刷新流數(shù)值數(shù)據(jù)采用十進(jìn)制表示(默認(rèn))數(shù)值數(shù)據(jù)采用八進(jìn)制表示數(shù)值數(shù)據(jù)采用十六進(jìn)制表示設(shè)置16進(jìn)制數(shù)大寫(xiě)輸出取消16進(jìn)制數(shù)大寫(xiě)輸出(默認(rèn))設(shè)域?qū)挒閚個(gè)字符(默認(rèn)實(shí)寬)設(shè)填充字符為c(默認(rèn)空格)設(shè)顯示小數(shù)精度為n位(默認(rèn)6位)用定點(diǎn)方式表示實(shí)數(shù)用科學(xué)計(jì)數(shù)法表示浮點(diǎn)數(shù)左對(duì)齊(默認(rèn))右對(duì)齊強(qiáng)制顯示小數(shù)點(diǎn)和無(wú)效0強(qiáng)制顯示正數(shù)符號(hào)

Whatisexactoutput?#include<iostream>#include<iomanip> //forsetprecision()usingnamespacestd;voidmain(){floatmyNumber=123.4587;

cout<<fixed<<showpoint; //usedecimalformat

//printdecimalpoints

cout<<“Numberis”<<setprecision(3)<<myNumber<<endl;

//setprecision}Outputofprogram:Numberis123.459#include<iomanip> #include<iostream>usingnamespacestd;voidmain(){

int

myNumber=123;

int

yourNumber=5;

cout<<setw(10)<<“Mine” <<setw(10)<<“Yours”<<endl;

cout<<setw(10)<<myNumber <<setw(10)<<yourNumber<<endl;}Whatisexactoutput?12345678901234567890

MineYours1235#include<iostream>#include<iomanip> //forsetprecision()usingnamespacestd;voidmain(){floatmyNumber=123.4;floatyourNumber=3.14159;

cout<<fixed<<showpoint; //usedecimalformat

//printdecimalpoints

cout<<“Numbersare:”<<setprecision(4)<<endl

<<setw(10)<<myNumber<<endl <<setw(10)<<yourNumber<<endl;}Numbersare:123.40003.1416Whatisexactoutput?

floatx=312.0; floaty=4.827;

cout<<fixed<<showpoint;

cout<<setprecision(2)<<setw(10)<<x<<endl

’’’’

3

1

2.00 <<setw(10)<<y<<endl; ’’’’’’

4.83

cout<<setprecision(1)<<setw(10)<<x<<endl

’’’’’

3

1

2.0 <<setw(10)<<y<<endl; ’’’’’’’

4.8

cout<<setprecision(5)<<setw(7)<<x<<endl

312.00000 <<setw(7)<<y<<endl; 4.82700MoreExamples3.2結(jié)構(gòu)化程序設(shè)計(jì)概述1.結(jié)構(gòu)化程序的基本結(jié)構(gòu)2.結(jié)構(gòu)化程序的設(shè)計(jì)方法3.結(jié)構(gòu)化程序的組織結(jié)構(gòu)結(jié)構(gòu)化程序的基本結(jié)構(gòu)順序結(jié)構(gòu):是一種最簡(jiǎn)單、最基本的結(jié)構(gòu),在順序結(jié)構(gòu)內(nèi),各塊按照它們出現(xiàn)的先后順序依次執(zhí)行。它有一個(gè)入口,一個(gè)出口。選擇結(jié)構(gòu):選擇結(jié)構(gòu)中包含一個(gè)判斷框,根據(jù)給定的條件是否成立而選擇執(zhí)行,它也只具有一個(gè)入口和一個(gè)出口。循環(huán)結(jié)構(gòu):循環(huán)結(jié)構(gòu)又稱(chēng)重復(fù)結(jié)構(gòu),是指在一定條件下反復(fù)執(zhí)行一個(gè)程序塊的結(jié)構(gòu)。循環(huán)結(jié)構(gòu)也是只有一個(gè)入口,一個(gè)出口。結(jié)構(gòu)化程序的設(shè)計(jì)方法

結(jié)構(gòu)化程序主要采用自上而下、逐步細(xì)化的設(shè)計(jì)方法,即先全局后局部、先整體后細(xì)節(jié)、先抽象后具體的設(shè)計(jì)方法。由于實(shí)際問(wèn)題往往比較復(fù)雜,為了提高效率,在進(jìn)行結(jié)構(gòu)化程序設(shè)計(jì)時(shí),常常伴隨著使用關(guān)鍵部分優(yōu)先考慮的設(shè)計(jì)方法。結(jié)構(gòu)化程序的組織結(jié)構(gòu)模塊A1模塊A1(小功能)模塊A2模塊A2(小功能)模塊A(較小功能)模塊CC1C2C3C4模塊BB1B2主模塊(主功能)圖3.1程序模塊化示意圖順序結(jié)構(gòu):順序結(jié)構(gòu)是最簡(jiǎn)單、最基本的結(jié)構(gòu),在順序結(jié)構(gòu)內(nèi),順序執(zhí)行各個(gè)語(yǔ)句。圖3.2表示了一個(gè)順序結(jié)構(gòu)形式。例3.12

ABab圖3.2順序結(jié)構(gòu)示意圖3.3順序結(jié)構(gòu)程序設(shè)計(jì)【例3.12】順序結(jié)構(gòu)程序舉例(求表達(dá)式值)

#include<iostream.h>voidmain(){

int

a,b,result;

cout<<“pleaseinputtwonumber:\n”;

cin>>a;

cin>>b;result=3*a-2*b+1;

cout<<“resultis”<<result<<endl;}程序的運(yùn)行結(jié)果為:

pleaseinputtwonumber:12345↙resultis280在C++語(yǔ)言中,實(shí)現(xiàn)順序結(jié)構(gòu)除了一般的語(yǔ)句如表達(dá)式語(yǔ)句、輸入輸出函數(shù)的調(diào)用語(yǔ)句外,還有兩種特殊形式的語(yǔ)句:空語(yǔ)句和復(fù)合語(yǔ)句。。①空語(yǔ)句:C++語(yǔ)言中,只有一個(gè)分號(hào)的語(yǔ)句稱(chēng)為空語(yǔ)句,即:;它在語(yǔ)法上要占據(jù)一個(gè)語(yǔ)句的位置,但它沒(méi)有任何功能操作。②復(fù)合語(yǔ)句:復(fù)合語(yǔ)句是由花括號(hào){}括起來(lái)的多個(gè)語(yǔ)句組成,在語(yǔ)法上它等價(jià)于一個(gè)語(yǔ)句,一般形式為:

{

語(yǔ)句1;

語(yǔ)句2;…

語(yǔ)句n

}程序舉例:例3.13、例3.14、例3.15、例3.16。3.3順序結(jié)構(gòu)程序設(shè)計(jì)3.4選擇結(jié)構(gòu)的實(shí)現(xiàn)3.4.1

用if

語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)設(shè)計(jì)3.4.2

用switch語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)設(shè)計(jì)基本形式一:if(表達(dá)式)

語(yǔ)句;

其執(zhí)行過(guò)程是:首先計(jì)算表達(dá)式的值,若不為0,條件判斷為真,則執(zhí)行()后面的語(yǔ)句,否則,不執(zhí)行()后面的語(yǔ)句。

基本形式二:if(表達(dá)式)

語(yǔ)句1;

else

語(yǔ)句2;

其執(zhí)行過(guò)程是:首先計(jì)算表達(dá)式的值,若不為0,條件判斷為真,則執(zhí)行語(yǔ)句1,否則執(zhí)行語(yǔ)句2。if語(yǔ)句的基本形式例3.17

輸入兩個(gè)數(shù)a,b,輸出其中的大數(shù)(用if

)

。#include<iostream.h>voidmain(){int

a,b,x;

cin>>a>>b;x=b;

if(a>b)x=a;

cout<<x<<endl;}

#include<iostream.h>voidmain(){int

a,b,x;

cin>>a>>b;

if(a>b)x=a;elsex=b;

cout<<x<<endl;}例3.18用if-else

結(jié)構(gòu)形式改寫(xiě)上例。一般形式(常用):

if(表達(dá)式1)

語(yǔ)句1;

elseif

(表達(dá)式2)

語(yǔ)句2;

elseif

(表達(dá)式3)

語(yǔ)句3;…

elseif

(表達(dá)式n)

語(yǔ)句n;

else

語(yǔ)句n+1;例3.19

if語(yǔ)句嵌套的使用。if語(yǔ)句的嵌套真假真真真假假假表達(dá)式1表達(dá)式2表達(dá)式3表達(dá)式4語(yǔ)句1語(yǔ)句2語(yǔ)句3語(yǔ)句4語(yǔ)句5if語(yǔ)句的嵌套示意圖其他形式:

①if(){

if()語(yǔ)句1;

}

else

語(yǔ)句2;

if()

if

()語(yǔ)句1;

else

語(yǔ)句2;③

If(){if()語(yǔ)句1;

else

語(yǔ)句2;}

else

語(yǔ)句3;例3.20

編寫(xiě)一程序計(jì)算函數(shù)(用if-else嵌套)。if語(yǔ)句的嵌套

switch語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)C++語(yǔ)言提供了switch語(yǔ)句可用來(lái)直接處理多分支選擇問(wèn)題,其流程圖

語(yǔ)句組1break;語(yǔ)句組2break;語(yǔ)句組nbreak;缺省語(yǔ)句組……表達(dá)式case常量1case常量2case常量ndefaultSwitch

語(yǔ)句又稱(chēng)為開(kāi)關(guān)分支語(yǔ)句,它的一般形式如下:

switch(表達(dá)式)

{

case常量表達(dá)式1:

語(yǔ)句組1;

break;

case

常量表達(dá)式2:

語(yǔ)句組2;

break;…

case

常量表達(dá)式n:

語(yǔ)句組n;

break;

default

:

語(yǔ)句組n+1;

}

例.21。

switch語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)switch允許多個(gè)case共同使用一個(gè)語(yǔ)句組,其結(jié)構(gòu)為:

switch(表達(dá)式){case

常量表達(dá)式1:

case

常量表達(dá)式m:

語(yǔ)句組m;

break;

case常量表達(dá)式m+1:

語(yǔ)句組m+1;

break;

case

常量表達(dá)式n:

語(yǔ)句組n;

break;

default

:

語(yǔ)句組n+1;}

switch語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)例3.22#include<iostream.h>voidmain(){ chargrade;

cout<<"Pleaseinputgrade=";

cin>>grade; if(grade>='a'&&grade<='z') grade-=32; switch(grade) {

case'A':

case'B':

case'C':cout<<"pass\n";break;

case'D':cout<<"fail\n";break;

default:cout<<"error\n"; }}實(shí)習(xí)4、5:1.順序結(jié)構(gòu)程序設(shè)計(jì):P253實(shí)驗(yàn)一:1~42.選擇結(jié)構(gòu)程序設(shè)計(jì):

P253實(shí)驗(yàn)二:3、4順序結(jié)構(gòu)與選擇結(jié)構(gòu)程序設(shè)計(jì)3.5循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu):循環(huán)結(jié)構(gòu)又稱(chēng)重復(fù)結(jié)構(gòu),是指在一定條件下反復(fù)執(zhí)行一個(gè)程序塊的結(jié)構(gòu)。循環(huán)結(jié)構(gòu)也是只有一個(gè)入口,一個(gè)出口。根據(jù)循環(huán)條件的不同,循環(huán)結(jié)構(gòu)分為當(dāng)型循環(huán)結(jié)構(gòu)和直到型循環(huán)結(jié)構(gòu)兩種。

3.5循環(huán)結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu):循環(huán)結(jié)構(gòu)又稱(chēng)重復(fù)結(jié)構(gòu),是指在一定條件下反復(fù)執(zhí)行一個(gè)程序塊的結(jié)構(gòu)。循環(huán)結(jié)構(gòu)也是只有一個(gè)入口,一個(gè)出口。根據(jù)循環(huán)條件的不同,循環(huán)結(jié)構(gòu)分為當(dāng)型循環(huán)結(jié)構(gòu)和直到型循環(huán)結(jié)構(gòu)兩種。

A條件PabYN圖3.6當(dāng)型循環(huán)結(jié)構(gòu)流程圖圖3.7直到型循環(huán)結(jié)構(gòu)流程圖abNY條件PA①當(dāng)型循環(huán)的結(jié)構(gòu):當(dāng)給定的條件p成立時(shí),執(zhí)行A框操作,執(zhí)行完A操作后,再判斷p條件是否成立,如果成立,再次執(zhí)行A操作,如此重復(fù)執(zhí)行A操作,直到判斷p條件不成立才停止循環(huán)。此時(shí)不執(zhí)行A操作,而從出口b脫離循環(huán)結(jié)構(gòu)。②直到型循環(huán)的結(jié)構(gòu):先執(zhí)行A框操作,然后判斷給定條件p是否成立,如果不成立,再次執(zhí)行A操作;然后再對(duì)p進(jìn)行判斷,如此反復(fù),直到給定的p條件成立為止。此時(shí)不再執(zhí)行A框,從出口b脫離循環(huán)。

一個(gè)循環(huán)結(jié)構(gòu)應(yīng)由四個(gè)主要部分構(gòu)成:

循環(huán)的工作部分。即循環(huán)體,完成循環(huán)程序的主要工作。

②循環(huán)的修改部分。它保證循環(huán)體在循環(huán)過(guò)程中,有關(guān)的量能按一定的規(guī)律變化(循環(huán)變量)。

③循環(huán)的控制部分。它保證循環(huán)程序按規(guī)定的循環(huán)條件控制循環(huán)正確進(jìn)行(循環(huán)條件)。

④循環(huán)的初始部分。它是保證循環(huán)結(jié)構(gòu)能夠開(kāi)始執(zhí)行的語(yǔ)句,往往編寫(xiě)在程序的開(kāi)頭部分,邏輯上先從這一部分開(kāi)始執(zhí)行(初始條件)。

3.5.1

while語(yǔ)句3.5.2

do-while語(yǔ)句3.5.3

for語(yǔ)句3.5.4

跳轉(zhuǎn)語(yǔ)句break和continue3.5.5

循環(huán)的嵌套3.5循環(huán)結(jié)構(gòu)程序設(shè)計(jì)3.5.1while語(yǔ)句一般形式:

while(表達(dá)式)

語(yǔ)句;//循環(huán)體執(zhí)行過(guò)程:首先判斷括號(hào)內(nèi)最初表達(dá)式的值,如為0則跳到循環(huán)體外;如為非0,就執(zhí)行語(yǔ)句(循環(huán)體),執(zhí)行完循環(huán)體后再次判斷表達(dá)式的值…,如此反復(fù)進(jìn)行直到(表達(dá)式)的值為假時(shí)結(jié)束while循環(huán)。

例3.23編寫(xiě)程序計(jì)算1+2+3+...+99+100

#include<iostream.h>

voidmain(){

int

sum,n;n=1;//初始部分(初始條件)

sum=0;

while(n<=100)//控制部分(循環(huán)條件)

{

//工作部分(循環(huán)體)

sum+=n;n++;//修改部分(循環(huán)變量)

}

cout<<"sum="<<sum<<endl;}運(yùn)行結(jié)果為:sum=5050

#include<iostream.h>

voidmain(){

intx,c1=0,c2=0;

cout<<“請(qǐng)輸入一個(gè)正整數(shù)(<=0退出):”;

cin>>x;

while(x>0)

{

if(x<60)c1++;

elsec2++;

cout<<“請(qǐng)輸入一個(gè)正整數(shù)(<=0退出):”;

cin>>x;}

cout<<“小于60的正整數(shù)個(gè)數(shù):”<<c1<<endl;

cout<<“大于60的正整數(shù)個(gè)數(shù):”<<c2<<endl;}

例3.24分別統(tǒng)計(jì)出鍵入的所有正整數(shù)中<60

和>=60的數(shù)據(jù)的個(gè)數(shù)。3.5.2do-while語(yǔ)句一般形式:

do

{

語(yǔ)句;//循環(huán)體

}while(表達(dá)式);

do-while與while比較:do-while語(yǔ)句是先執(zhí)行循環(huán)體,再進(jìn)行判斷,無(wú)論條件是否成立,do-while語(yǔ)句至少執(zhí)行循環(huán)體一次,它是直到型循環(huán)。而while語(yǔ)句則要先對(duì)條件進(jìn)行判斷,只有當(dāng)條件成立才執(zhí)行循環(huán)體,因此它是當(dāng)型循環(huán)。對(duì)于一個(gè)循環(huán)問(wèn)題,我們既可以用當(dāng)型循環(huán)也可以用直到型循環(huán)來(lái)解決問(wèn)題。

#include<iostream.h>//用do-while結(jié)構(gòu)

voidmain(){

int

sum,n;n=1;//初始部分(初始條件)

sum=0;

do{//工作部分(循環(huán)體)

sum+=n;n++;//修改部分(循環(huán)變量)

}while(n<=100);

//控制部分(循環(huán)條件)

cout<<"sum="<<sum<<endl;}

例3.25編寫(xiě)程序計(jì)算1+2+3+...+99+1003.5.3for語(yǔ)句一般形式:

for(表達(dá)式1;表達(dá)式2;表達(dá)式3){

語(yǔ)句;

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論