第章程序控制結(jié)構(gòu)_第1頁
第章程序控制結(jié)構(gòu)_第2頁
第章程序控制結(jié)構(gòu)_第3頁
第章程序控制結(jié)構(gòu)_第4頁
第章程序控制結(jié)構(gòu)_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1第2章程序控制結(jié)構(gòu)

2.1順序結(jié)構(gòu)

2.2選擇結(jié)構(gòu)

2.3循環(huán)結(jié)構(gòu)

2.4控制轉(zhuǎn)向語句

2.5程序?qū)嵗?/p>

2按照語句出現(xiàn)的先后順序依次執(zhí)行。2.1順序結(jié)構(gòu)

語句1語句2圖2.1順序結(jié)構(gòu)流程圖32.1.1定義語句說明語句在C++程序中,一個標(biāo)識符(變量名、常量名、函數(shù)名、對象名等)在使用之前必須先定義,通知編譯器為其分配存儲空間,或告訴編譯器它的存在及其特征。例如:intx=1,y=2; constdoublePI=3.14159; floatscore[30][3]; 42.1.2表達(dá)式語句形式:<表達(dá)式>;可以進(jìn)行的操作通常包括賦值操作,復(fù)合賦值操作,增量、減量操作,函數(shù)調(diào)用操作和輸入輸出操作。例如: n++; --m; abs(x); cin>>x>>y; cout<<x+y; s=x+y; m=n=t; a=10,b=20; z*=w;52.1.3復(fù)合語句形式:

{<語句1><語句2>……<語句n>}作用:當(dāng)程序中某個位置在語法上只允許一條語句,而在語義上要執(zhí)行多條語句才能完成某個操作時,需要使用復(fù)合語句。例如:if(x==0)

{cout<<a;cout<<b;}62.1.4空語句形式:;

作用:當(dāng)程序中某個位置在語法上需要一條語句,而在語義上又不要求執(zhí)行任何動作時,可放上一條空語句。一般適用于在循環(huán)語句中做空循環(huán)體例如:

for(m=0;m<1000;m++);72.1.5基本輸入輸出在C++中,所有輸入輸出是通過輸入輸出流來實(shí)現(xiàn)的。在C++中,將數(shù)據(jù)從一個對象到另一個對象的流動抽象為“流”。在iostream庫中包含一個標(biāo)準(zhǔn)輸入流對象cin和一個標(biāo)準(zhǔn)輸出流對象cout,分別用來實(shí)現(xiàn)從鍵盤讀取數(shù)據(jù),以及將數(shù)據(jù)在屏幕上輸出。要使用cin和cout,需要在C++程序開頭加上如下包含命令:#include<iostream>//新標(biāo)準(zhǔn)中的頭文件名usingnamespacestd;//引入std名字空間中的標(biāo)識符81.標(biāo)準(zhǔn)輸入流cincin負(fù)責(zé)從鍵盤讀取數(shù)據(jù),使用提取運(yùn)算符“>>”就可以將鍵盤鍵入的數(shù)據(jù)讀入到變量中。語法格式:

cin>>變量1>>變量2>>…>>變量n;

變量可以是任意數(shù)據(jù)類型,輸入時各個數(shù)據(jù)之間用空格鍵、Tab鍵或Enter鍵分隔。例如:intx,y;cin>>x>>y;鍵盤上輸入:5

8↙x5鍵盤y8鍵盤92.標(biāo)準(zhǔn)輸出流cout負(fù)責(zé)將數(shù)據(jù)輸出到屏幕上,使用插入運(yùn)算符“<<”就可以將數(shù)據(jù)顯示在屏幕上當(dāng)前光標(biāo)所在位置。語法格式:

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

表達(dá)式可以是任意類型的,數(shù)據(jù)輸出的格式由系統(tǒng)自動決定。10格式控制符說明示例語句結(jié)果endl輸出換行符cout<<123<<endl<<456;123

456dec整數(shù)按十進(jìn)制輸出cout<<dec<<18;18hex整數(shù)按十六進(jìn)制輸出cout<<hex<<18;12oct整數(shù)按八進(jìn)制輸出cout<<oct<<18;22setw(intn)設(shè)置數(shù)據(jù)輸出的寬度cout<<'a'<<setw(3)<<'b';ab

(中間有2個空格)11格式控制符說明示例語句結(jié)果setfill(charc)設(shè)置填充字符cout<<setfill('#')<<setw(6)<<123;###123setprecision(intn)設(shè)置浮點(diǎn)數(shù)的精度(有效數(shù)字位數(shù)或小數(shù)位數(shù))cout<<setprecision(5)<<63.3156;63.316setiosflags(ios::fixed)定點(diǎn)格式輸出cout<<setiosflags(ios::fixed)<<

32.1456789;32.145679setiosflags(ios::scientific)指數(shù)格式輸出cout<<setiosflags(ios::scientific)<<72.3456789;7.234568e+00112【例2.1】cout應(yīng)用示例#include<iostream>usingnamespacestd;intmain(){intx=12,y=83;doublepai_1=3.14159265;floatpai_2=3.141f;charch1='A',ch2='B';boolok=true;cout<<"x="<<x<<endl;cout<<"y="<<y<<endl;cout<<"pai_1="<<pai_1<<",pai_2="<<pai_2<<endl;cout<<"ch1="<<ch1<<",ch2="<<ch2<<endl;cout<<"ok="<<ok<<endl;cout<<"!ok="<<!ok<<endl;return0;}x=12y=83pai_1=3.14159,pai_2=3.141ch1=A,ch2=Bok=1!ok=013【例2.2】使用格式控控制符輸出出數(shù)據(jù)#include<iostream>#include<iomanip>usingnamespacestd;intmain(){inta=35;doubleb=21.3456789;cout<<dec<<a<<''<<hex<<a<<''<<oct<<a<<endl;cout<<b<<endl;cout<<setprecision(4)<<b<<endl;cout<<setw(10)<<b<<endl;cout<<setw(10)<<setfill('*')<<b<<endl;cout<<setiosflags(ios::scientific)<<b<<endl;cout<<setprecision(3)<<b<<endl;cout<<setprecision(2)<<b<<endl;return0;}35234321.345721.3521.35*****21.352.1346e+0012.135e+0012.13e+001142.2選擇結(jié)構(gòu)按照給定條條件有選擇擇地執(zhí)行程程序中的語語句C++中:if語句:實(shí)現(xiàn)n分支,要求求n個表達(dá)式。。switch語句:實(shí)現(xiàn)多分分支,只用用1個表達(dá)式。。152.2.1if語句1.if語句(單分分支)語法格式::if(表達(dá)式)語句說明:(1)表達(dá)式是是任意的數(shù)數(shù)值、字符符、關(guān)系、、邏輯表達(dá)達(dá)式,它表表示條件,,以true(非0)表示真,,false(0)表示假。。表達(dá)式必必須用圓括括號括起來來。(2)內(nèi)嵌語句句,可以是是單條語句句,或復(fù)合合語句。執(zhí)行順序16bat73773【例2.3】輸入兩個整整數(shù)a和b,按從小到到大的順序序輸出這兩兩個數(shù)。分析若若a>b,則將a、b交換,否則則不交換。。兩數(shù)交換換可采用借借助于第三三個變量間間接交換的的方法if(a>b){t=a;a=b;b=t;}17#include<iostream>usingnamespacestd;intmain(){inta,b,t;cout<<"請輸入兩個個整數(shù)a,b:"<<endl;cin>>a>>b;if(a>b){t=a;a=b;b=t;}cout<<a<<'<'<<b<<endl;return0;}{a=a+b;b=a-b;a=a-b;}請輸入兩個個整數(shù)a,b:854040<85{a=a^b;b=a^b;a=a^b;}182.if-else語句(雙分分支)if(表達(dá)式)語句1else語句2true表達(dá)式語句1false語句2雙分支if語句流程圖19【例2.4】輸入一個年年份,判斷斷是否為閏閏年。分析閏年年的年份可可以被4整除而不能能被100整除,或者者能被400整除。#include<iostream>usingnamespacestd;intmain(){intyear;cout<<"請輸入年份份:";cin>>year;if((year%4==0&&year%100!=0)||(year%400==0))cout<<year<<"年是閏年"<<endl;elsecout<<year<<"年不是閏年年"<<endl;return0;}203.if-elseif語句(多分分支)if(表達(dá)式1)語句1elseif(表達(dá)式2)語句2……elseif(表達(dá)式n)語句nelse語句n+1falsefalse…falsetruetrue表達(dá)式1

表達(dá)式2

表達(dá)式n

語句n語句n+1語句2語句1true21【例2.5】根據(jù)x的值,計算算分段函數(shù)數(shù)y的值。y的計算公式式為:(x<0)(0≤x<15)(15≤x<30)(x≥30)22#include<iostream>#include<cmath>usingnamespacestd;intmain(){doublex,y;cout<<"請輸入x:";cin>>x;if(x<0)y=fabs(x);elseif(x<15)y=exp(x)*cos(x);elseif(x<30)y=pow(x,5);elsey=(7+9*x)*log(x);cout<<"y="<<y<<endl;return0;}請輸輸入入x:-5y=5請輸輸入入x:10y=-18481.8請輸輸入入x:27y=1.43489e+007請輸輸入入x:38y=1269.52234.if語句句的的嵌嵌套套形形式式if或else后面面的的內(nèi)內(nèi)嵌嵌語語句句本本身身又又是是一一個個if語句句例如如::if(表達(dá)達(dá)式式1)if(表達(dá)達(dá)式式2)語句句1else語句句2elseif(表達(dá)達(dá)式式3)語句句3else語句句424(1)為為了了增增強(qiáng)強(qiáng)程程序序的的可可讀讀性性,,建建議議采采用用鋸鋸齒齒型型的的書書寫寫形形式式。。(2)if語句句嵌嵌套套時時,,else子句句總總是是與與在在它它前前面面、、距距它它最最近近、、且且尚尚未未匹匹配配的的if配對對。。(3)為為明明確確匹匹配配關(guān)關(guān)系系,,避避免免匹匹配配錯錯誤誤,,建建議議將將內(nèi)內(nèi)嵌嵌的的if語句句一一律律用用““{}””括起起來來。。if(x>0)if(y>0)cout<<"x與y均大大于于0";elsecout<<"x大于于0,y小于于等等于于0";注意意::如何何使使之之與與第第一一個個if配對對??25【例2.6】】從鍵鍵盤盤上上輸輸入入兩兩個個字字符符,,比比較較其其大大小小,,輸輸出出大大于于、、等等于于和和小小于于的的判判斷斷結(jié)結(jié)果果。。#include<iostream>usingnamespacestd;intmain(){charch1,ch2;cout<<"請輸輸入入兩兩個個字字符符::";cin>>ch1>>ch2;if(ch1!=ch2)if(ch1>ch2)cout<<ch1<<"大于于"<<ch2<<endl;elsecout<<ch1<<"小于于"<<ch2<<endl;elsecout<<ch1<<"等于于"<<ch2<<endl;return0;}請輸輸入入兩兩個個字字符符::hdh大于于d請輸輸入入兩兩個個字字符符::XYX小于于Y請輸輸入入兩兩個個字字符符::&&&等于于&26語句句switch(表達(dá)達(dá)式式){case常量量表表達(dá)達(dá)式式1:語句句1case常量量表表達(dá)達(dá)式式2:語句句2…case常量量表表達(dá)達(dá)式式n:語句句n[default:語句句序序列列n+1]}注意意::表表達(dá)達(dá)式式只只能能是是整整型型、、字字符符型型或或枚枚舉舉型型注意:常量表達(dá)式1~n的值必須各不相同。27有無無false有無falsetrue計算表達(dá)式的值常量表達(dá)式1語句1break常量表達(dá)式2語句2break無有false常量表達(dá)式ntrue語句nbreakdefault語句n+1true有switch語句執(zhí)行流程28【例2.7】】將輸輸入入的的百百分分制制成成績績按按以以下下規(guī)規(guī)定定轉(zhuǎn)轉(zhuǎn)換換成成相相應(yīng)應(yīng)的的等等級級::成績績等等級級100~90優(yōu)秀秀89~80良好好79~70中等等69~60及格格59~0不及及格格29#include<iostream>usingnamespacestd;intmain(){floatscore;cout<<"請輸輸入入成成績績:";cin>>score;if(score>=0&&score<=100)switch(int(score)/10){case10:case9:cout<<score<<"分::優(yōu)優(yōu)秀秀"<<endl;break;case8:cout<<score<<"分::良良好好"<<endl;break;case7:cout<<score<<"分::中中等等"<<endl;break;case6:cout<<score<<"分::及及格格"<<endl;break;default:cout<<score<<““分::不不及及格格””<<endl;}elsecout<<"輸入入數(shù)數(shù)據(jù)據(jù)有有誤誤!"<<endl;return0;}共用用同同一一個個語語句句組組思考考::若若省省去去break語句句,,情情況況會會怎怎樣樣??302.3循環(huán)環(huán)結(jié)結(jié)構(gòu)構(gòu)按照照給給定定規(guī)規(guī)則則重重復(fù)復(fù)地地執(zhí)執(zhí)行行程程序序中中的的語語句句語句句while(表達(dá)達(dá)式式)語句句falsetrue表達(dá)式語句圖2.14while語句流程圖循環(huán)環(huán)條條件件,,其其值值為為true(非非0)、、false(0)循環(huán)環(huán)體體31【例2.8】】求1+2+3+…………+100#include<iostream>usingnamespacestd;intmain(){inti(1),sum(0);//定義義變變量量,,初初始始化化while(i<=100)//構(gòu)造造循循環(huán)環(huán){sum+=i;//循環(huán)環(huán)體體,,多多次次執(zhí)執(zhí)行行i++;}cout<<"sum="<<sum<<endl;return0;}循環(huán)條件初值循環(huán)次數(shù)1234.....99100101sumi0112真33真64真105真真100真101真5050假sum=50500sum1i1233641005050101循環(huán)結(jié)束束!!實(shí)際上是是將i不停地累累加到一一起32【例2.9】求出滿足足不等式式的最小小n值:#include<iostream>usingnamespacestd;intmain(){inti=0;doubles=0;while(s<8)s+=double(1)/++i;cout<<"n="<<i<<endl;return0;}833語句do語句while(表達(dá)式);falsetrue表達(dá)式語句圖2.15do-while語句流程圖34【例2.10】求自然數(shù)數(shù)1~100之和,要要求用do-while語句實(shí)現(xiàn)現(xiàn)。#include<iostream>usingnamespacestd;intmain(){inti(1),sum(0);do{sum+=i;i++;}while(i<=100);cout<<"sum="<<sum<<endl;return0;}inti(1),sum(0);while(i<=100){sum+=i;i++;}循環(huán)體和和條件表表達(dá)式都都相同35while(1>2)cout<<””IlikeC++!””<<endl;//相當(dāng)于一一個空操操作語句句docout<<””IlikeC++!””<<endl;while(1>2);//輸出一行行文字信信息注意:do—while首先執(zhí)行行循環(huán)體體,然后后再判斷斷表達(dá)式式,至少少執(zhí)行一一次循環(huán)環(huán)體。當(dāng)?shù)谝淮未窝h(huán)表表達(dá)式的的值為真真時,while與do—while的結(jié)果完完全一樣樣,否則則結(jié)果不不相同。。36【例2.11】輸入一個個自然數(shù)數(shù),將該該數(shù)的每每一位數(shù)數(shù)字按反反序輸出出。例如如:輸入入12345,輸出54321。#include<iostream>usingnamespacestd;voidmain(){ unsignedlongintnum,dgt;cout<<"請輸入一一個自然然數(shù):";cin>>num;cout<<””倒置結(jié)果果為:””;do{dgt=num%10;cout<<dgt;num/=10;}while(num>0);cout<<endl;}37for(表達(dá)式1;表達(dá)式2;表達(dá)式3)<語句>表達(dá)式2執(zhí)行<語句>非00退出循環(huán)表達(dá)式1表達(dá)式3表達(dá)式1;while(表達(dá)式2){<語句>;表達(dá)式3;}語句38【例2.12】求自然數(shù)數(shù)1~100之和,要要求用for語句實(shí)現(xiàn)現(xiàn)。#include<iostream>usingnamespacestd;intmain(){inti,sum(0);for(i=1;i<=100;i++)sum+=i;cout<<"sum="<<sum<<endl;return0;}39【例2.13】一個小球球從100米高處落落下,每每次落地地后反彈彈回原高高度的一一半,再再落下。。求它在在第10次落地時時共經(jīng)過過多少米米?第10次反彈多多高?分析:設(shè)第i次落地共共經(jīng)過s米,反彈彈h米;則:i=1時:s=100;h=s/2;i=2時:s=s+h*2;h=h/2;i=3時:s=s+h*2;h=h/2;……i=123……h(huán)hh100米高40//例題2.13程序如下下:#include<iostream>#include<iomanip>usingnamespacestd;intmain(){floats=100.0,h=s/2;//第一次的的s、h值作為初初始值for(inti=2;i<=10;i++)//循環(huán)求第第2,…,10次的s、h值{s=s+h*2;//賦值號右右邊的s、h代表前一一次的數(shù)數(shù)據(jù)(舊數(shù)據(jù))h=h/2;//賦值號左左邊的s、h代表本次次的數(shù)據(jù)據(jù)(新數(shù)據(jù))}//循環(huán)結(jié)束束后,下下面輸出出的s、h值就是第第10次的數(shù)據(jù)據(jù)cout<<setiosflags(ios::fixed)<<setprecision(3);cout<<"第10次落地時時,共經(jīng)經(jīng)過"<<s<<"米;"<<"反彈的高高度是"<<h<<"米"<<endl;return0;}41注意:for語句中的的三個表表達(dá)式可可以部分分省略或或全部省省略,但但;不能省略略,若省省略表達(dá)達(dá)式2,則表示示循環(huán)條條件為真真。for(;i<=100;i++)//省略表達(dá)達(dá)式1,注意其其后的分分號不能能省sum+=i;intsum=0;for(inti=1;;i++)//省略表達(dá)達(dá)式2,注意其其后的分分號同樣樣不能省省{sum+=i;if(i>=100)break};//break語句用于于跳出循循環(huán)intsum=0;for(inti=1;i<=100;)//省略表達(dá)達(dá)式3sum+=i++;//在循環(huán)體體中對循循環(huán)變量量i遞增42inti=1,sum=0;for(;;){sum+=i++;if(i>100)break;}三個表達(dá)達(dá)式都可可以是任任何類型型的C++表達(dá)式。。inti,sum;for(i=1,sum=0;i<=100;sum+=i,i++);表達(dá)式1可以是變變量定義義語句,,即循環(huán)環(huán)控制變變量可在在其中定定義。intsum=0;for(inti=1;i<=100;i++)sum+=i;43多重循環(huán)環(huán)循環(huán)嵌套套:循環(huán)體內(nèi)內(nèi)包含另另一個完完整的循循環(huán)結(jié)構(gòu)構(gòu)。三種循環(huán)環(huán)語句皆皆可以相相互嵌套套?!璮or(…){…while(……){…}do{…}while(…);…}44【例2.14】編程顯示示輸出九九九乘法法表圖2.19九九乘法表運(yùn)行界面45truefalsei=1i<=9?truefalsej=1j<=9?顯示i*j表達(dá)式j(luò)++i++#include<iostream>usingnamespacestd;intmain(){cout<<"\t\t\t九九九乘乘法法表表"<<endl;cout<<"\t\t\t------------------"<<endl;for(inti=1;i<=9;i++){for(intj=1;j<=9;j++)cout<<i<<"××"<<j<<'='<<i*j<<'\t';cout<<endl;}return0;}圖2.22上三角的九九乘法表46圖2.21下三角的九九乘法表思考::打印上上三角角或下下三角角程序序如何何改動動?內(nèi)循環(huán)環(huán)改為為for(intj=1;j<=i;j++)內(nèi)循環(huán)環(huán)改為為for(intj=i;j<=9;j++)47注意::(1)內(nèi)循循環(huán)控控制變變量與與外循循環(huán)控控制變變量不不能同同名。。((2)外循循環(huán)必必須完完全包包含內(nèi)內(nèi)循環(huán)環(huán),不不能交交叉。。((3)若循循環(huán)體體內(nèi)有有if語句,,或if語句內(nèi)內(nèi)有循循環(huán)語語句,,也不不能交交叉。。((4)利用用goto語句可可以從從循環(huán)環(huán)體內(nèi)內(nèi)轉(zhuǎn)向向循環(huán)環(huán)體外外,但但絕對對不允允許從從循環(huán)環(huán)體外外轉(zhuǎn)入入循環(huán)環(huán)體內(nèi)內(nèi)。((5)當(dāng)嵌嵌套使使用各各種循循環(huán)語語句時時,特特別需需要嚴(yán)嚴(yán)格按按照縮縮進(jìn)規(guī)規(guī)則來來書寫寫程序序。有有時還還應(yīng)適適當(dāng)配配以注注釋,,以保保持清清晰易易辯的的結(jié)構(gòu)構(gòu)特征征。482.4控制轉(zhuǎn)轉(zhuǎn)向語語句語句僅可用用于以以下兩兩種情情況::(1)用于于switch語句中中,保保證多多分支支只執(zhí)執(zhí)行其其中一一句;;(2)用于于循環(huán)環(huán)語句句中,,以便便在某某一適適當(dāng)時時刻及及位置置終止止執(zhí)行行循環(huán)環(huán)體中中的語語句,,并使使流程程控制制退出出該循循環(huán)控控制結(jié)結(jié)構(gòu),,轉(zhuǎn)去去執(zhí)行行該循循環(huán)語語句的的下一一條語語句。。49【例2.15】】break語句應(yīng)應(yīng)用示示例。。已知知圓的的半徑徑為不不大于于10的正整整數(shù),,要求求輸出出所有有不大大于100的圓面面積值值。#include<iostream>usingnamespacestd;constfloatPI=3.14159;intmain(){intr;floatarea;cout<<"半徑不不大于于10且面積積不大大于100的圓,,其面面積如如下::"<<endl;for(r=1;r<=10;r++){area=PI*r*r;if(area>100)break;//如果面面積大大于100,則跳跳出循循環(huán)cout<<"圓半徑徑="<<r<<",面積積="<<area<<endl;}return0;}50語句格式::continue;功能::只用用在循循環(huán)體體中,,用來來結(jié)束該該次循循環(huán)。在循環(huán)環(huán)體中中遇到到continue語句時時,本本次循循環(huán)結(jié)結(jié)束,,回到到循環(huán)環(huán)條件件判斷斷是否否執(zhí)行行下一一次循循環(huán)。。51在while和do-while循環(huán)結(jié)構(gòu)中中,continue語句將使執(zhí)執(zhí)行流程直直接跳轉(zhuǎn)到到循環(huán)條件件的判定部部分,然后后決定循環(huán)環(huán)是否繼續(xù)續(xù)進(jìn)行。在for循環(huán)結(jié)構(gòu)中中,當(dāng)遇到到continue時,執(zhí)行流流程將跳過過循環(huán)體中中余下的語語句,而轉(zhuǎn)轉(zhuǎn)去執(zhí)行for語句中的表表達(dá)式3,然后根據(jù)據(jù)表達(dá)式2進(jìn)行循環(huán)條條件的判定定以決定是是否繼續(xù)執(zhí)執(zhí)行for循環(huán)體。52while(i<=100){break;}cout<<sum<<endl;while(i<=100){continue;}break和continue語句的區(qū)別別53例2.16】】continue語句應(yīng)用示示例。請寫寫出下列程程序的運(yùn)行行結(jié)果。#include<iostream>usingnamespacestd;intmain(){inti,s;for(i=1,s=0;i<=10;++i){if(i%2==0)continue;if(i%10==7)break;s+=i;//s=s+i}cout<<"s="<<s;return0;}s=9542.4.3goto語句goto標(biāo)號;標(biāo)號:語句;標(biāo)號語句將流程轉(zhuǎn)到到標(biāo)號所指指定的標(biāo)號號語句處。。55【例2.17】】利用goto語句實(shí)現(xiàn)求求一個自然然數(shù)的階乘乘并輸出結(jié)結(jié)果。#include<iostream>usingnamespacestd;intmain(){inti=1,m,s=1;cout<<”請輸入一個個自然數(shù)::”;cin>>m;loop:s*=i;++i;if(i<=m)gotoloop;cout<<"s="<<s<<endl;return0;}//求三個1位整數(shù)之積等于125的情況inti,j,k;for(i=1;i<10;++i)for(j=1;j<10;++j)for(k=1;k<10;++k)if(i*j*k==125)gotoEnd;End:cout<<i<<'*'<<j<<'*'<<k<<"=125\n";562.5程序?qū)嵗纠?.18】】輸入兩個正正整數(shù),求求最大公約約數(shù)和最小小公倍數(shù)。。算法思想::(1)對于已知兩兩數(shù)m,n,使得m>n(2)m除以n得余數(shù)r(3)若r=0,則n為最大公約約數(shù),結(jié)束束;否則執(zhí)執(zhí)行(4)(4)m←n,n←r,再重復(fù)執(zhí)執(zhí)行(2)mnr1252521210輾轉(zhuǎn)相除法法while((r=m%n)!=0){m=n;n=r;}cout<<n;57#include<iostream>usingnamespacestd;intmain(){intm,n,r,t;cout<<"請輸入兩個個正整數(shù)::";cin>>m>>n;t=m*n;if(m<n){r=m;m=n;n=r;}while((r=m%n)!=0){m=n;n=r;}cout<<"最大公約數(shù)數(shù):"<<n<<endl;cout<<"最小公倍數(shù)數(shù):"<<t/n<<endl;return0;}//m與n的最小公倍倍數(shù)=(m×n)/(m與n的最大公約約數(shù))58【例2.19】】順序輸出3~100之間的所有有素數(shù),并并計算輸出出素數(shù)之和和。分析:(1)素數(shù):一一個大于1的除了它自自身和1以外,不能能被其它任任何正整數(shù)數(shù)所整除的的整數(shù)。判判別某數(shù)m是否為素數(shù)數(shù),最簡單單的方法是是:用i=2,3,,m-1逐個除,只要有一個個能整除,,m就不是素數(shù)數(shù),可以用用break提前結(jié)束循循環(huán);若都都不能整除除,則m是素數(shù)。(2)如果m不是素數(shù),,則必然能能被分解為為兩個因子子a和b,并且其中中之一必然然小于等于于sqrt(m),另一個必必然大于等等于sqrt(m)。所以要判判斷m是否為素數(shù)數(shù),可簡化化為判斷它它能否被2至sqrt(m)之間的數(shù)整整除即可。因?yàn)闉槿鬽不能被2至sqrt(m)之間的數(shù)整整除,則必必然也不能能被sqrt(m)至m-1之間的數(shù)整整除。(3)在退出循環(huán)環(huán)以后,如如果是因?yàn)闉檎业搅艘灰粋€能整除除m的數(shù)而通過過break退出循環(huán)的的,則i<=sqrt(m);反之,如如果是正常常退出循環(huán)環(huán)的,則i=sqrt(m)+1。因此,在在循環(huán)結(jié)束束后,只要要判斷i是否大于sqrt(m),若是,則表表明m是素數(shù),輸輸出該素數(shù)數(shù)。(4)要判斷多個個數(shù)是否為為素數(shù),需需要使用雙雙重循環(huán)。。外循環(huán)每每循環(huán)一次次提供一個個數(shù),由內(nèi)內(nèi)循環(huán)通過過多次除法法判斷其是是否為素數(shù)數(shù)。59#include<iostream>#include<cmath>usingnamespacestd;intmain(){cout<<"3~100之間的素數(shù)數(shù)是:"<<endl;intm,i,s=0;for(m=3;m<100;m+=2){intk=int(sqrt(m));for(i=2;i<=k;i++)if(m%i==0)break;if(i>k){cout<<m<<'\t';s+=m;}}cout<<”\n3~100之間的素數(shù)數(shù)之和=”<<s;cout<<endl;return0;}60【例2.20】】輸入x,計算sin(x)。計算公式式為:當(dāng)?shù)趎項(xiàng)的絕對值值小于10-6時結(jié)束。分析:關(guān)鍵鍵要找出任意相鄰兩兩項(xiàng)之間的關(guān)系:注:此處與與書上表達(dá)達(dá)式略不同同!61#include<cmath>……intn=1;doublex,t,sinx(0);//給變量sinx賦初值0cout<<"請輸入x的值:";cin>>x;t=x;//將求和式的的第一項(xiàng)值值x賦給twhile(fabs(t)>=0.000001)//當(dāng)t的絕對值大大于等于10-6時{sinx+=t;t=-t*x*x/((2*n)*(2*n+1));//此處與書上上表達(dá)式略略不同!n+=1;//此處與書上上表達(dá)式略略不同!}cout<<"編程求得

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論