電腦課-第3章程序設(shè)計(jì)初步_第1頁(yè)
電腦課-第3章程序設(shè)計(jì)初步_第2頁(yè)
電腦課-第3章程序設(shè)計(jì)初步_第3頁(yè)
電腦課-第3章程序設(shè)計(jì)初步_第4頁(yè)
電腦課-第3章程序設(shè)計(jì)初步_第5頁(yè)
已閱讀5頁(yè),還剩68頁(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)介

第3章程序設(shè)計(jì)初步面向過(guò)程的程序設(shè)計(jì)和算法C++的輸入與輸出編寫(xiě)順序結(jié)構(gòu)的程序關(guān)系運(yùn)算與邏輯運(yùn)算分支結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)轉(zhuǎn)向語(yǔ)句3.1

面向過(guò)程的程序設(shè)計(jì)和算法在面向過(guò)程的程序設(shè)計(jì)中,程序設(shè)計(jì)者必須指定計(jì)算機(jī)執(zhí)行的具體步驟,程序設(shè)計(jì)者不僅要考慮程序要“做什么”,還要解決“怎么做”的問(wèn)題,根據(jù)程序要“做什么”的要求,寫(xiě)出一個(gè)個(gè)語(yǔ)句,安排好它們的執(zhí)行順序。怎樣設(shè)計(jì)這些步驟,怎樣保證它的正確性和具有較高的效率,這就是算法需要解決的問(wèn)題。3.1.1

算法的概念一個(gè)面向過(guò)程的程序應(yīng)包括以下兩方面內(nèi)容:(1)對(duì)數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)(data

structure)。(2)

對(duì)操作的描述。即操作步驟,也就是算法(algorithm)。對(duì)于面向過(guò)程的程序,可以用下面的公式表示:程序=算法+數(shù)據(jù)結(jié)構(gòu)作為程序設(shè)計(jì)

,必須認(rèn)真考慮和設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)和操作步驟(即算法)。算法是處理問(wèn)題的一系列的步驟。算法必須具體地在執(zhí)行時(shí)每一步應(yīng)當(dāng)怎樣做。算法是求解特定問(wèn)題的一組有限的操作序列。計(jì)算機(jī)算法可分為兩大類別:數(shù)值算法和非數(shù)值算法。數(shù)值算法的目的是求數(shù)值解。非數(shù)值算法包括的面十分廣泛,最常見(jiàn)的是用于事務(wù)管理領(lǐng)域。目前,計(jì)算機(jī)在非數(shù)值方面的應(yīng)用遠(yuǎn)遠(yuǎn)超過(guò)了在數(shù)值方面的應(yīng)用。一個(gè)算法應(yīng)該具有以下特點(diǎn):①有窮性

一個(gè)算法應(yīng)包含有限的操作步驟,不能是無(wú)限的。②確定性

算法中的每一步驟都應(yīng)當(dāng)是確定的,而不應(yīng)當(dāng)是含糊的,

的。③有零個(gè)或多個(gè)輸入,一個(gè)或多個(gè)輸出。④有效性算法中的每一個(gè)步驟都應(yīng)當(dāng)能有效地執(zhí)行。C++既支持面向過(guò)程的程序設(shè)計(jì),又支持面象的程序設(shè)計(jì)。無(wú)論面向過(guò)程的程序設(shè)計(jì)還是面

象的程序設(shè)計(jì),都離不開(kāi)算法設(shè)計(jì)。3.1.2

算法的表示1.自然語(yǔ)言用中文或英文等自然語(yǔ)言描述算法。但容易產(chǎn)生歧義性,在程序設(shè)計(jì)中一般不用自然語(yǔ)言表示算法。2.流程圖可以用傳統(tǒng)的流程圖或結(jié)構(gòu)化流程圖。用圖的形式表示算法,比較形象直觀,但修改算法時(shí)顯得不大方便。3.偽代碼(pseudo

code)偽代碼是用介于自然語(yǔ)言和計(jì)算機(jī)語(yǔ)言之間的文字和符號(hào)來(lái)描述算法。如if

x

is

positive

thenprint

xelseprint

-x用偽代碼寫(xiě)算法并無(wú)固定的、嚴(yán)格的語(yǔ)

則,只需把意思表達(dá)清楚,并且書(shū)寫(xiě)的格式要寫(xiě)成清晰易讀的形式。它不用圖形符號(hào),因此書(shū)寫(xiě)方便、格式緊湊,容易修改,便于向計(jì)算機(jī)語(yǔ)言算法(即程序)過(guò)渡。4.用計(jì)算機(jī)語(yǔ)言表示算法用一種計(jì)算機(jī)語(yǔ)言去描述算法,這就是計(jì)算機(jī)程序。算法例:求1×2×3×4×5A:①先求1×2,得到結(jié)果2。②將步驟①得到的結(jié)果2再乘以3,得到結(jié)果6。③將6再乘以4,得24。④將24再乘以5,得120。這就是最后結(jié)果。這樣的算法雖然是正確的,但太繁瑣。B:設(shè)P為被乘數(shù),i為乘數(shù)。①1

P②2

i③P×i

P④i+1

→i⑤if

i≤5返回步驟③,否則算法結(jié)束,返回P的值開(kāi)始P=1i=2P=P

×ii=i+1i≤5

?false結(jié)束true3.2C++的輸入與輸出標(biāo)準(zhǔn)I/O流C/C++語(yǔ)言本身并不帶輸入和輸出(即I/O)

功能,而是提供了輸入輸出庫(kù),也稱為I/O庫(kù)。通過(guò)I/O庫(kù),

可以完成輸入和輸出的操作。大多數(shù)C程序使用一種稱為stdio(標(biāo)準(zhǔn)I/O)的I/O庫(kù),該庫(kù)也能夠在C++中使用。但是,

在C++程序中,一種稱為iostream(I/O

流庫(kù))的I/O庫(kù)用得

。在C++中,I/O使用了流的概念――字符(或字節(jié))流。每一個(gè)I/O

設(shè)備傳送和接收一系列的字節(jié),稱之為流。輸入操作可以看成是字節(jié)從一個(gè)設(shè)備流入內(nèi)存,而輸出操作可以看成是字節(jié)從內(nèi)存流出到一個(gè)設(shè)備?!?/p>

o”cin>>變量要使用C++標(biāo)準(zhǔn)的I/O流庫(kù)的功能,必須包括頭文件:#include<iostream>iostream文件提供基本的輸入輸出功能。通過(guò)包含iostream流庫(kù),內(nèi)存中就創(chuàng)建了一些用于處理輸入和輸出操作的對(duì)象。標(biāo)準(zhǔn)的輸出流(通常是屏幕)稱為cout,標(biāo)準(zhǔn)的輸入流(通常是鍵盤(pán))稱為cin。int

v1,v2;//

...cout<<

"The

sum

of

v1

+

v2

=

";cout

<<

v1

+

v2;cout

<<

'\n';“\n”表示換行符(newline),輸出換行符時(shí)它結(jié)束當(dāng)前的行并將隨后的輸出導(dǎo)向到下一行。除了顯式地使用換行符外 還可以使用預(yù)定義的iostream

符(manipulator

)endl。符在iostream

上執(zhí)行的是一個(gè)操作而不只是簡(jiǎn)一個(gè)換行單地提供數(shù)據(jù),例如endl在輸出流中符,然后刷新輸出緩沖區(qū)。一般不寫(xiě)cout

<<

'\n';而是寫(xiě)成cout

<<

endl;連續(xù)出現(xiàn)的輸出操作符可以連接在一起例如:cout

<<

"The

sum

of

v1+

v2

=

"

<<

v1

+v2

<<

endl;連續(xù)的輸出操作符按順序應(yīng)用在cout

上。為了便于閱讀連接在一起的輸出操作符可以分寫(xiě)在幾行下面的三行組成一條輸出語(yǔ)句cout

<<

"The

sum

of

"<<

v1

<<

"

+

"<<

v2

<<

"

=

"

<<

v1

+

v2

<<

endl;類似地輸入操作符>>用來(lái)從標(biāo)準(zhǔn)輸入讀入一個(gè)值,例如:double

a;//

...cout

<<

"Please

enter

a

number:

";cin

>>

a;連續(xù)出現(xiàn)的輸入操作符也可以連接起來(lái),例如:char

a,b;//

...cout

<<

"Pleaseentertwo

char:

";cin

>>a

>>b;cin為緩沖流。鍵盤(pán)輸入的數(shù)據(jù)保存在緩沖區(qū)中,當(dāng)要提取時(shí),是從緩沖區(qū)中取。如果一次輸入過(guò)多,就會(huì)留在那兒慢慢用。輸入的數(shù)據(jù)類型必須與要提取的數(shù)據(jù)類型一致,否則會(huì)出錯(cuò)。缺省情況下,輸入操作符丟棄任何中間空白(空格、制表符、換行符以及回車)。#include

<iostream>#include<cstdlib>usingnamespacestd;int

main(){char

a,b,c;cin>>a;cout<<"a:

"<<a<<endl;cin>>b;cout<<"b:

"<<b<<endl;cin>>c;cout<<"c:

"<<c<<endl;system("pause");//暫停return

0;}如果希望將鍵盤(pán)上輸入的所有字符(包括間隔字符)都作為輸入字符賦給字符變量,則必須使用函數(shù)cin.get()。#include

<iostream>using

namespace

std;int

main(){char

a,b,c;cin.get(a);cin.get(b);cin.get(c);cout<<a<<b<<c;}清空輸入緩沖輸入緩沖的清空可以通過(guò)sync()來(lái)完成。cin.sync();//使得所有輸入緩沖中未被

的內(nèi)容從此被忽略。ignore(int,

int)第1個(gè)參數(shù)為要提取的字符數(shù)量,第2個(gè)參數(shù)表示遇到該字符則結(jié)束(提取該結(jié)束字符),對(duì)所提取的字符不保存、不處理,作用是空讀。cin.ignore(255,

‘\n’);//清除多余的字符和回車符。向一個(gè)字符數(shù)組中輸入字符串時(shí),可用函數(shù)cin.getline()。getline()以回車作為結(jié)束,在此之前輸入的所有字符都會(huì)放入字符數(shù)組中。例:#include

<iostream>using

namespace

std;int

main(){char

city[11];cin.getline(city,10);cout<<"城市名:"<<city;}注意:與get不同的是,getline會(huì)從輸入流中刪除分隔符(即字符并刪除它),而get會(huì)將分隔符留在流中。3.2.2

格式控制每一個(gè)iostream

庫(kù)對(duì)象都

一個(gè)格式狀態(tài)(format

state),它控制格式化操作的細(xì)節(jié),比如整型值的進(jìn)制基數(shù)或浮點(diǎn)數(shù)值的精度。C++為程序員提供了一組預(yù)定義的

符(manipulator),可用來(lái)修改對(duì)象的格式狀態(tài)。例:int

a=123;cout<<showpos<<a;顯示結(jié)果:+123缺省情況下,浮點(diǎn)值顯示6位有效位數(shù),這個(gè)值可以用成員函數(shù)precision(int)來(lái)修改。cout.precision(int)//設(shè)置有效位數(shù)(普通顯示方式)//設(shè)置精度(定點(diǎn)或科學(xué)記數(shù)方式)cout.precision(

)//返回當(dāng)前的有效位(精度)設(shè)置值fixed//定點(diǎn)數(shù)格式輸出(默認(rèn)6位精度)例:#include

<iostream>using

namespace

std;int

main(){double

n=1234567.123456789;cout

<<

"Precision:"<<cout.precision()

<<

endl<<n

<<

endl;cout.precision(8);cout

<<

"\nPrecision:

"<<

cout.precision()<<

endl<<

n

<<endl;cout<<"\nfixed:"<<fixed<<endl<<n;return

0;}Precision:

61.23457e+006Precision:

81234567.1fixed:1234567.12345679cout.width(int)//設(shè)置顯示寬度,只對(duì)緊隨其后的輸出有效cout.fill(char)//設(shè)置填充字符(系統(tǒng)默認(rèn)為空格)#include

<iostream>using

namespace

std;int

main(){int

a=1234;cout<<a<<endl;cout.width(8);cout<<a<<endl;cout<<a<<endl;cout.fill('0');cout.width(8);cout<<a<<endl;cout.width(8);cout<<a<<endl;return

0;}1234123412340000123400001234練習(xí):1、依次輸入學(xué)號(hào)和

,并輸出。2、取圓周率為3.1415926,分別輸入半徑為40和928.335,求圓面積要求各數(shù)據(jù)按域?qū)?0位輸出,先輸出半徑,再輸出其面積,輸出精度為小數(shù)點(diǎn)后10位。3.2.3

在輸入流與輸出流中使用控制符iomanip頭文件中提供了在輸入輸出流中使用的控制符,其用法參見(jiàn)

P53。本節(jié)內(nèi)容

,要求編程測(cè)試表3.1中的所有控制符。3.2.4

文件的輸入與輸出iostream庫(kù)也支持文件的輸入和輸出,所有能應(yīng)用在標(biāo)準(zhǔn)輸入和輸出上的操作符,也都

可以應(yīng)用到已經(jīng)被打開(kāi)的輸入或輸出或兩者

兼有文件上。為了打開(kāi)一個(gè)文件供輸入或輸

出除了iostream

頭文件外還必須包含頭文件:#include

<fstream>為了打開(kāi)一個(gè)輸出文件

一個(gè)ofstream

類型的對(duì)象:可以使用如ofstream

outfile(

"name-of-file"

);為了測(cè)試是否已經(jīng)成功地打開(kāi)了一個(gè)文件,下代碼:if

(

!outfile

)//如文件能打開(kāi),!outfile返回truecerr<<"文件不能打開(kāi)!\n";須一個(gè)類似地,為了打開(kāi)一個(gè)文件供輸入,ifstream

類型的對(duì)象:ifstream

infile(

"name

of

file"

);if(

!infile

)cerr<<"文件不能打開(kāi)!\n";例:輸出文件data.txt中的數(shù)#include

<iostream>#include

<fstream>using

namespace

std;int

main(){ifstream

infile("data.txt");int

a=0;if

(!infile){cerr<<"錯(cuò)誤:輸入文件不能打開(kāi)!\n";return

-1;}for

(;infile>>a;)cout<<a<<'\t';cout<<endl;return

0;}123

4

723

15

7924data.txt例:將文件a.txt中的內(nèi)容讀入數(shù)組s,再寫(xiě)入文件b.txt中#include

<iostream>#include

<fstream>using

namespace

std;int

main(){ifstream

infile("a.txt");ofstream

outfile("b.txt");if

(!infile){cerr<<"錯(cuò)誤:輸入文件不能打開(kāi)!\n";return

-1;}if

(!outfile){cerr<<"錯(cuò)誤:輸出文件不能打開(kāi)!\n";return

-2;}char

s[20];infile.getline(s,19);cout<<s<<endl;if

(outfile<<s)cout<<"輸出完成!";return

0;}o

world!a.txt例2:從文件a.txt讀入一個(gè)矩陣到二維數(shù)組中。#include

<iostream>#include

<fstream>using

namespace

std;int

main(){ifstream

infile;int

m[3][3];infile.open("a.txt");//打開(kāi)文件for(int

i=0;i<3;i++)for(int

j=0;j<3;j++)infile>>m[i][j];infile.close();//關(guān)閉文件for(int

i=0;i<3;i++){for(int

j=0;j<3;j++)cout<<m[i][j]<<"\t";cout<<endl;}return

0;}123422211110355415a.txt3.3

編寫(xiě)順序結(jié)構(gòu)的程序例3.5

求一元二次方程式ax2+bx+c=0的根。a,b,c的值在運(yùn)行時(shí)由鍵盤(pán)輸入,它們的值滿足b2-4ac≥0。根據(jù)求x1,x2的算法。它可以編寫(xiě)出以下C++程序:#include

<iostream>//由于程序要用到數(shù)學(xué)函數(shù)sqrt,故應(yīng)包含頭文件cmath#include

<cmath>using

namespace

std;int

main(

){double

a,b,c,x1,x2;cin>>a>>b>>c;x1=(-b+sqrt(b*b-4*a*c))/(2*a);x2=(-b-sqrt(b*b-4*a*c))/(2*a);cout<<"x1="<<x1<<endl;cout<<"x2="<<x2<<endl;return

0;}順序結(jié)構(gòu)的程序中的各執(zhí)行語(yǔ)句是順序執(zhí)行的。這種程序最簡(jiǎn)單,最容易理解。3.4

關(guān)系運(yùn)算與邏輯運(yùn)算關(guān)系運(yùn)算所謂的關(guān)系運(yùn)算,在C,C++語(yǔ)言里,就是比較運(yùn)算。算術(shù)運(yùn)算所得的結(jié)果是數(shù)值,而關(guān)系運(yùn)算所得的結(jié)果為邏輯值,也稱布爾值。即以前所學(xué)的bool類型允許的值:真或假。真用true表示,假用false表示。邏輯值與數(shù)值的關(guān)系邏輯值數(shù)值true→1false→0false←0true←非0while('3')b++;while(a=3)b++;while('3')b++;while(0.3)b++;while(3)b++;while(-3)b++;while(a=3)b++;關(guān)系操作符有:

==(比較左右值是否相等)>

(比較左值是否大于右值)>=(比較左值是否大于或等于右值,也稱為不小于)<

(比較左值是否小于右值)<=(比較左值是否小于或等于右值,也稱為不大于)!=(比較左右值是否不相等)比較是否相等,使用兩個(gè)連寫(xiě)的等號(hào)表示。因此

==和=是兩個(gè)不同的概念,后者指賦值運(yùn)算。C/C++的不等于用

!=

表示,而不是

更常見(jiàn)的

<>,請(qǐng)注意!3.4.2

邏輯運(yùn)算邏輯運(yùn)算有三個(gè)操作符:!

(非,取邏輯反,NOT)&&(邏輯與,并且,AND)||(邏輯或,或者,OR)①&&(與)操作的所有可能條件及結(jié)果:真&&

真=真真&&

假=假假&&

假=假②||

(或)操作的所有可能條件及結(jié)果:真||

真=真真||假=真假|(zhì)|

假=假③!操作:!真=假!假=真短路求值只要a為0,后面的表達(dá)式不再執(zhí)行。只要a為1,后面的表達(dá)式不再執(zhí)行。a&&ba||b如:int

a=1,b=0,c=2;c=b&&a/b>2;c=a||++b;3.4.3

運(yùn)算優(yōu)先級(jí)例:a+b>a+c

(a+b)>(a+c)a>b&&x>y

(a>b)&&(x>y)!a||a>b

(!a)||(a>b)5>3&&8<4-!0

自左至右掃描求解。高!↑算術(shù)運(yùn)算符關(guān)系運(yùn)算符&&和||低賦值運(yùn)算符3.5

分支結(jié)構(gòu)程序設(shè)計(jì)if語(yǔ)句if(條件表達(dá)式)語(yǔ)句;或if(條件表達(dá)式){語(yǔ)句1;語(yǔ)句2;…}編譯器必須在if條件表達(dá)式的后面找到1個(gè)作為語(yǔ)句結(jié)束符的“;”號(hào)以標(biāo)志語(yǔ)句的結(jié)束。從語(yǔ)法上來(lái)說(shuō),塊可以被認(rèn)為是單個(gè)語(yǔ)句。例:#include

<iostream>using

namespace

std;int

main(){char

c;cout<<"press

a

key

:

";cin.get(c);if(c=='b')cout<<'\a';return

0;}3.5.2

if…else語(yǔ)句if(條件表達(dá)式)語(yǔ)句1;else語(yǔ)句2;例:#include

<iostream>using

namespace

std;int

main(){char

c;cout<<"press

a

key

:

";cin.get(c);if(c=='b')cout<<'\a';elsecout<<"bye!"<<endl;return

0;}3.5.3

if語(yǔ)句的嵌套if(表達(dá)式1)語(yǔ)句1;else

if(表達(dá)式2)語(yǔ)句2;else語(yǔ)句3;else連接到其上面第1個(gè)沒(méi)有配對(duì)的且為可見(jiàn)的if上(就近配對(duì))。思考:int

a=0,b=0;cin>>a;if(a>10)b=1;else

if(a>5)b=2;elseb=3;cout<<b<<endl;int

a=0,b=0;cin>>a;if(a>10)b=1;if(a>5)b=2;elseb=3;cout<<b<<endl;3.5.4

switch語(yǔ)句switch語(yǔ)句也稱為開(kāi)關(guān)語(yǔ)句,它是多分支結(jié)構(gòu),而if語(yǔ)句是兩分支結(jié)構(gòu),在實(shí)際中常常會(huì)碰到多分支選擇問(wèn)題,例如學(xué)生成績(jī)分類(90分以上為A,80-89分為B,70-79分為C)。當(dāng)條件值為一系列整數(shù)值時(shí),用switch語(yǔ)句比較簡(jiǎn)捷。switch語(yǔ)句的格式:switch(整型或字符型變量){case變量可能值1

:分支一;[break;]case變量可能值2

:分支二;[break;]case

變量可能值3

:分支三;[break;]...default:最后分支;}當(dāng)表達(dá)式的值與某一個(gè)case后面的常量表達(dá)值相等時(shí),就執(zhí)行此case后面的語(yǔ)句,若所有

case中的常量表達(dá)式都沒(méi)有與表達(dá)式值匹配,就執(zhí)行default后面的語(yǔ)句。例:根據(jù)考試成績(jī)grade的等級(jí)值’A’,’B’,’C’,’D’和’E’,輸出百分制分?jǐn)?shù)段。#include

<iostream>usingnamespace

std;int

main(){chargrade='D';switch(grade){case

'A':cout<<"90--100\n";

break;case'B':cout<<"80--89\n";

break;case'C':cout<<"70--79\n";

break;case'D':cout<<"60--69\n";

break;case'E':cout<<"<60\n";

break;default:cout<<"error\n";}return

0;}注意:①switch后面括號(hào)中的表達(dá)式只能是整型、字符型或枚舉型表達(dá)式。②各個(gè)case(包括default)的出現(xiàn)次序可以任意。③case常量表達(dá)式的值必須唯一。④case與default并不改變控制流程,程序從相匹配的語(yǔ)句起向下執(zhí)行,不再判斷?、輎f與switch互相彌補(bǔ)。例:double

grade;cin>>grade;if(grade>=90&&grade<=100)cout<<"A\n";else

if(grade>=80&&grade<90)cout<<"B\n";…例:重已知郵寄

的計(jì)費(fèi)標(biāo)準(zhǔn)如下,輸入量以及郵寄距離,計(jì)算出郵資。重量(克)郵資(元/件)15530945126014(每千公里加收1元)75及以上15(每千公里加收1元)重量在檔次之間按高檔靠3.5.5

條件運(yùn)算符條件運(yùn)算符要求有3個(gè)操作對(duì)象,稱三目(元)運(yùn)算符,它是C++中惟一的一個(gè)三目運(yùn)算符。條件表達(dá)式的一般形式為表達(dá)式1?表達(dá)式2

∶表達(dá)式3條件運(yùn)算符的執(zhí)行順序是:先求解表達(dá)式1,若為非0(真)則求解表達(dá)式2,此時(shí)表達(dá)式2的值就作為整個(gè)條件表達(dá)式的值。若表達(dá)式1的值為0(假),則求解表達(dá)式3,表達(dá)式3的值就是整個(gè)條件表達(dá)式的值。例輸入一個(gè)字符,判別它是否為大寫(xiě)字母,如果是,將它轉(zhuǎn)

換成小寫(xiě)字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。#include

<iostream>using

namespace

std;int

main(

){charch;cin>>ch;ch=(ch>='A'

&&

ch<='Z')?(ch+32):ch;//判別ch是否大寫(xiě)字母,是則轉(zhuǎn)換cout<<ch<<endl;return0;}3.6

循環(huán)結(jié)構(gòu)程序設(shè)計(jì)C++提供了3種循環(huán)語(yǔ)句的形式來(lái)描述循環(huán)結(jié)構(gòu),分別是while語(yǔ)句、do-while語(yǔ)句和for語(yǔ)句。3.6.1

while語(yǔ)句while語(yǔ)句的作用是判斷一個(gè)條件表達(dá)式,以便決定是否應(yīng)當(dāng)進(jìn)入和執(zhí)行循環(huán)體。當(dāng)滿足該條件時(shí)進(jìn)行循環(huán),不滿足該條件時(shí),則不再執(zhí)行循環(huán),其表現(xiàn)形式為:while(條件表達(dá)式)循環(huán)體while循環(huán)由4個(gè)部分組成:循環(huán)變量初始化,繼續(xù)條件,循環(huán)體和改變循環(huán)變量的值。循環(huán)變量初始化繼續(xù)條件循環(huán)體

改變循環(huán)變量非00inti=1;//循環(huán)變量初始化while(i<=10){sum+=i;//繼續(xù)條件//循環(huán)體i++;//改變循環(huán)變量的值}3.6.2

do…while語(yǔ)句do…while語(yǔ)句的形式為:do循環(huán)體while(條件表達(dá)式);當(dāng)流程到達(dá)do后立即執(zhí)行循環(huán)體語(yǔ)句,然后再對(duì)條件表達(dá)式進(jìn) 試,若條件表達(dá)式的值為非0,則重復(fù)循環(huán),否則退出。do…while循環(huán)在循環(huán)體底部進(jìn)行繼續(xù)條件的測(cè)試,所以它至少將執(zhí)行一次循環(huán)體;而while循環(huán)在循環(huán)的頂部測(cè)試,有可能

不執(zhí)行循環(huán)體。循環(huán)變量初始化循環(huán)體

改變循環(huán)變量繼續(xù)條件非00例:#include

<iostream>using

namespacestd;int

main(){char

c;do

{cout<<"請(qǐng)輸入一個(gè)字母:"<<endl;cin>>c;}

while(c<'A'||(c>'Z'&&c<'a')||c>'z');cout<<c<<endl;return

0;}3.6.3

for語(yǔ)句for語(yǔ)句是C++編程中最主要的循環(huán)語(yǔ)句。for語(yǔ)句的一般表現(xiàn)形式為:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體例:for(int

i=1;i<=10;i++)cout<<"

o!"<<endl;for語(yǔ)句頭上的括號(hào)由兩個(gè)分號(hào)隔開(kāi)了三個(gè)部分,分別表示:①循環(huán)變量初始化(int

i=1);②條件判斷(i<=10),表示循環(huán)的繼續(xù)判斷,當(dāng)條件為真時(shí)繼續(xù)循環(huán),否則結(jié)束循環(huán)。③循環(huán)變量的增量(i++),表示循環(huán)的狀態(tài)修正。for語(yǔ)句的執(zhí)行過(guò)程:①先求解表達(dá)式1。②求解表達(dá)式2,若為0,則結(jié)束循環(huán),轉(zhuǎn)到⑤。③若表達(dá)式2為真,執(zhí)行循環(huán)體,然后求解表達(dá)式3。④轉(zhuǎn)回②。⑤執(zhí)行for語(yǔ)句下面的一個(gè)語(yǔ)句。表達(dá)式1

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論