




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第3章 程序控制主講:李政偉2第3章 程序控制3.1 選擇結(jié)構(gòu)3.2 循環(huán)結(jié)構(gòu)3.3 跳轉(zhuǎn)結(jié)構(gòu)3.4 應(yīng)用實例3語句(statement)1. 聲明語句int a,b;可出現(xiàn)在函數(shù)中的任何行,即位置無限制。2. 執(zhí)行語句通知計算機(jī)完成一定的操作。42. 執(zhí)行語句(1) 控制語句 if( ) else (條件語句) for( ) (循環(huán)語句) while( ) (循環(huán)語句) do while( ) (循環(huán)語句) continue (結(jié)束本次循環(huán)語句) break (中止執(zhí)行switch或循環(huán)語句) switch (多分支選擇語句) goto (轉(zhuǎn)向語句) return (從函數(shù)返回語句)5(2)
2、 函數(shù)和流對象調(diào)用語句sort(x,y,z); /sort函數(shù)調(diào)用coutx100) z=z-100; coutz;語句(statement)83種基本結(jié)構(gòu)順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計的3種基本結(jié)構(gòu)。表達(dá)式語句YN表達(dá)式語句NY語句1語句29編寫順序結(jié)構(gòu)的程序例3.1 求一元二次方程式ax2+bx+c=0的根。a,b,c的值在運行時由鍵盤輸入。#include int main( ) float a,b,c,x1,x2; cinabc; x1=(-b+sqrt(b*b-4*a*c)/(2*a); x2=(-b-sqrt(b*b-4*a*c)/(2*a); coutx1=x1en
3、dl; coutx2=x2endl;4.5 8.8 2.4 x1=-0.327612x2=-1.177943.1 選擇結(jié)構(gòu)3.1.1 if語句if語句的兩種基本形式:(1)if(表達(dá)式) 語句(2)if(表達(dá)式) 語句1 else 語句211【例3-2】使用if語句實現(xiàn)考試成績判定。int main()int score; /考試成績cout score;if(score=60)cout及格!;elsecout60123.1.2 嵌套的if語句if (表達(dá)式1) 語句1else if (表達(dá)式2) 語句2else if (表達(dá)式3) 語句3else if (表達(dá)式m) 語句melse 語句n【
4、例3-2】 使用嵌套if語句實現(xiàn)考試成績判定。#include using namespace std;int main()int score; /考試成績coutscore;if(score0)cout=0 & score60else if(score60) cout =60 & score70else if(score70) cout =70 & score80else if(score80) cout =80cout 優(yōu)秀!;return 0;143.1.3 條件運算符? :的替代條件運算符(? :)一般形式表達(dá)式1 ? 表達(dá)式2: 表達(dá)式3運算規(guī)則:先計算表達(dá)式1的值,如果表達(dá)式1的值
5、為true,那么表達(dá)式2被求值;否則表達(dá)式3被求值。整個條件表達(dá)式的值就是被求值表達(dá)式(表達(dá)式2或表達(dá)式3)的值。double score=60.1;bool isPassed=scor60? false :true;double score=60.1;bool isPassed;if(scorech; ch=(ch=A & ch=Z)?(ch+32):ch; coutchendl; return 0;173.1.4 switch語句一般形式switch(表達(dá)式) case 常量表達(dá)式1:語句1 case 常量表達(dá)式2:語句2 . case 常量表達(dá)式n:語句n default:語句n+1 =
6、常量1=常量2=常量n表達(dá)式語句組1語句組2語句組n語句組n+1yyynnn18說明(1) 當(dāng)與某case子句匹配時,執(zhí)行此case子句,若與所有都不匹配,執(zhí)行default子句。(2) 每個case表達(dá)式的值須互不相同。(3) 各case和default的次序不影響執(zhí)行結(jié)果。(4) 執(zhí)行某case子句后,流程控制轉(zhuǎn)移到下一個case子句繼續(xù)執(zhí)行。(5) 多個case可共用一組執(zhí)行語句。19【例3-4】根據(jù)考試成績的等級輸出百分制分?jǐn)?shù)段。8510070846069 grade;switch(grade) case A : cout80100n;case B : cout7079n;case C
7、 : cout6069n;case D : cout60n;default: coutx1x2x100;sum=x1+x2+x100;coutsum/100;213.2.1 用while語句構(gòu)成循環(huán)當(dāng)型循環(huán)結(jié)構(gòu)形式:while (表達(dá)式) 語句作用: 表達(dá)式為真(非0)時,執(zhí)行其內(nèi)嵌語句。特點:先判斷,后執(zhí)行。表達(dá)式語句NY22int main( ) int i=1; double x,s=0; while (ix; s+=x; i+; coutavg=s/100 x; sum=sum+i; i+; while (i=100); cout“avg=sum/100endl;253.2.3 for
8、循環(huán)格式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 內(nèi)嵌語句for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值) 語句執(zhí)行過程(1) 求解表達(dá)式1。(2) 求解表達(dá)式2,若為真,則執(zhí)行內(nèi)嵌語句,然后執(zhí)行第(3)步。否則結(jié)束循環(huán),轉(zhuǎn)到第(5)步。(3) 求解表達(dá)式3。(4) 轉(zhuǎn)回第(2)步驟繼續(xù)執(zhí)行。(5) 執(zhí)行緊接for循環(huán)后的其他語句26表達(dá)式2內(nèi)嵌語句NY表達(dá)式1表達(dá)式33.2.3 for循環(huán)格式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 內(nèi)嵌語句27for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值) 語句 for(i=1,s=0;ix; s+=x;等價于i=1;s=0;do cinx; s+=x;
9、 i+; while(i=100);i=1;s=0;while(ix; s+=x; i+;3.2.3 for循環(huán)28(3) for(;) for(;) (4) while( ) do while( ); (5) for(; ) while( ) (6) do for (;) while( );3.2.4 循環(huán)嵌套(1) while( ) while( ) (2) do do while( );while( );void main()int i, j;for(i=1; i10; i+) for(j=i; j10; j+) couti“*”j“=”i*j“ ”;coutn;例3.6 打印九九乘法表
10、303.3 跳轉(zhuǎn)結(jié)構(gòu)1. break語句一般格式:break;兩種用途:(1)用在switch語句中終止某個case語句。(2)立即結(jié)束當(dāng)前所在層的循環(huán),程序從循環(huán)語句后面的第一個語句繼續(xù)執(zhí)行。只能用于循環(huán)和switch語句內(nèi)。The break statement terminates only the most tightly enclosing loop or switch statement 31continue語句2. continue語句一般格式continue;作用:結(jié)束本次循環(huán),即跳過循環(huán)體中剩余語句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定。continue和break的區(qū)別:con
11、tinue只結(jié)束本次循環(huán),不終止整個循環(huán)。break結(jié)束當(dāng)前循環(huán)過程。void main() for (int i=1;i=60;i+) if (i % 5!=0) couti“年不回”endl; else couti“年回礦大!”endl; break; cout“我愛礦大!”; 例3.7:何時再回礦大!void main() for (int i=1;i=60;i+) if (i % 5!=0) couti“年不回”endl; else couti“年回礦大!”endl; continue; cout“我愛礦大!”; 例3.8:判斷輸出結(jié)果?3.3.4 goto語句在程序設(shè)計時,不推薦用g
12、oto語句。因為goto語句容易造成程序混亂,降低可讀性,另外它還阻止某些編譯器優(yōu)化。但由于C+可用作替代匯編語言,所以goto語句還是不可缺少的。如程序中合理使用,還是有益處的。goto語句要求有一個標(biāo)號。標(biāo)號是一個后面跟有冒號的有效標(biāo)識符。標(biāo)號必須與使用它的goto語句在同一函數(shù)中,即不能在不同函數(shù)之間跳轉(zhuǎn)。goto語句的一般形式為:goto label;label:其中,label為標(biāo)號,既可以放在goto語句的前面,也可以放在goto語句的后面。 3.3.5 return語句return語句用來明確地從一個函數(shù)中返回。ANSI C+標(biāo)準(zhǔn)將它歸入跳轉(zhuǎn)結(jié)構(gòu),因為它使程序返回到(即跳回到)調(diào)
13、用函數(shù)的地方繼續(xù)執(zhí)行。return帶回的數(shù)值即為函數(shù)的返回值。3.4 應(yīng)用實例#include int main()int i,b,x;coutx; /C行b=sqrt(x); /計算x的算術(shù)平方根 for(i=2;i=b+1) /B行coutx是素數(shù);elsecoutx不是素數(shù);return 0; 【例3-9】判斷正整數(shù)是否為素數(shù)?!纠?-10】 求解300400范圍內(nèi)的所有素數(shù)。#include int main()int x, b,i,n=0; /n為素數(shù)計數(shù)器for(x=301; x400; x+=2) /2以外的偶數(shù)都不是素數(shù)b=sqrt(x); /計算x的算術(shù)平方根for(i=2;
14、i=b+1)coutx ;n+;if(n%10=0) /控制每行輸出10個數(shù) coutendl; return 0;38例3.11 求F數(shù)列前40個數(shù)。特點:第1、2個數(shù)為1、1。從第3數(shù),每個數(shù)是其前面兩數(shù)之和。即 F1=1 (n=1) F2=1 (n=2) Fn=Fn-1+Fn-2 (n3)古典數(shù)學(xué)問題:有一對兔子,從出生后第3個月起每月都生一對兔子。小兔子長到第3個月后每月又生一對兔子。設(shè)所有兔子都不死,問每月的兔子總數(shù)為多少?編寫循環(huán)結(jié)構(gòu)的程序39#include int main( ) long f1=1,f2=1; int i; for(i=1;i=20;i+) coutsetw(
15、12)f1setw(12)f2; if(i%2=0) coutendl; f1=f1+f2; f2=f2+f1; 編寫循環(huán)結(jié)構(gòu)的程序【例3-12】 求圓周率的近似值。#include #include int main()double s = 0, x = 1; /初始化long k = 1;int sign = 1;while (fabs(x)1e-8) /項值在比較前要先求絕對值s+=x; /累加求和k+=2;sign*= -1;x = sign/double(k); /強(qiáng)制轉(zhuǎn)換使x得到浮點數(shù)值s*=4; /值cout=sendl;return 0;3.5 小結(jié)選擇結(jié)構(gòu)包括if和switch語句。在if語句中,else子句為可選項。if和else if可以組成嵌套if語句。switch語句適合處理多分支情況。循環(huán)結(jié)構(gòu)包括while
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國增韌母料數(shù)據(jù)監(jiān)測研究報告
- 2025年軍隊文職人員招聘之軍隊文職教育學(xué)模擬考試試卷A卷含答案
- 2019-2025年消防設(shè)施操作員之消防設(shè)備初級技能模擬考試試卷A卷含答案
- 2021-2022學(xué)年廣東省廣州四中初中部逸彩校區(qū)七年級(下)期中數(shù)學(xué)試卷(含答案)
- 2025年天津市專業(yè)技術(shù)人員公需考試試題-為中國式現(xiàn)代化提供強(qiáng)大動力和制度保障-黨的二十屆三中全會暨《中共中央關(guān)于進(jìn)一步全面深化改革、推進(jìn)中國式現(xiàn)代化的決定》總體解讀
- 高等教育自學(xué)考試《00074中央銀行概論》模擬試卷一
- 2025年大學(xué)英語六級考試預(yù)測試卷一
- 2023年同等學(xué)力申碩《英語》試題真題及答案
- 美容整形手術(shù)服務(wù)合同協(xié)議
- 紡織服裝產(chǎn)品質(zhì)量免責(zé)承諾書
- 2025年海南??谑兴畡?wù)局招聘事業(yè)單位人員35人歷年高頻重點模擬試卷提升(共500題附帶答案詳解)
- COP生產(chǎn)一致性控制計劃
- 2025年電力人工智能多模態(tài)大模型創(chuàng)新技術(shù)及應(yīng)用報告-西安交通大學(xué)
- 天津2025年天津市機(jī)關(guān)后勤事務(wù)服務(wù)中心分支機(jī)構(gòu)天津市迎賓館招聘2人筆試歷年參考題庫附帶答案詳解
- 華東師大版七年級數(shù)學(xué)下冊“第1周周考”
- 教師論文撰寫培訓(xùn)
- 2024年道路運輸企業(yè)安全生產(chǎn)管理人員證考試題庫
- 學(xué)習(xí)雷鋒主題班會雷鋒日學(xué)習(xí)雷鋒精神-
- 事故隱患內(nèi)部舉報獎勵制度
- 2020-2024年安徽省初中學(xué)業(yè)水平考試中考?xì)v史試卷(5年真題+答案解析)
- 電工每日巡查簽到表
評論
0/150
提交評論