九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

《C語言程序設(shè)計》第4章控制結(jié)構(gòu).ppt

上傳人:xin****828 文檔編號:15475635 上傳時間:2020-08-12 格式:PPT 頁數(shù):63 大?。?71.50KB
收藏 版權(quán)申訴 舉報 下載
《C語言程序設(shè)計》第4章控制結(jié)構(gòu).ppt_第1頁
第1頁 / 共63頁
《C語言程序設(shè)計》第4章控制結(jié)構(gòu).ppt_第2頁
第2頁 / 共63頁
《C語言程序設(shè)計》第4章控制結(jié)構(gòu).ppt_第3頁
第3頁 / 共63頁

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《C語言程序設(shè)計》第4章控制結(jié)構(gòu).ppt》由會員分享,可在線閱讀,更多相關(guān)《《C語言程序設(shè)計》第4章控制結(jié)構(gòu).ppt(63頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、第4章 控制結(jié)構(gòu),本章要求:,掌握選擇控制語句if語句、switch語句以及他們的嵌套應(yīng)用; 掌握循環(huán)控制語句for語句、while語句、dowhile語句以及他們的嵌套應(yīng)用; 掌握break語句、continue語句的應(yīng)用; 能夠運用3種結(jié)構(gòu)進(jìn)行綜合程序設(shè)計。,4.1 關(guān)系運算與邏輯運算,例子: 三個數(shù)中找最大 判斷是否是閏年 判斷密碼的正確與否 關(guān)鍵點:判斷的條件如何確立?,選擇結(jié)構(gòu),4.1.1 關(guān)系運算符與關(guān)系表達(dá)式,比較兩個量的運算符稱為關(guān)系運算符: ,= , = ,!= 關(guān)系運算符的優(yōu)先級: “、=、 關(guān)系運算符 賦值運算符 一般形式為:表達(dá)式 關(guān)系運算符 表達(dá)式其值: 關(guān)系成立為“

2、真”,不成立則為“假” C語言中用 “1” 表示 “真” ; “0” 表示 “假”,如 56 x=3 xc)a!=(c=b) (a=3)(b=5),又如:當(dāng) a=5, b=4 時 a+=3b,-False(0),-True(1),-False(0),-6,4. 1. 2 邏輯運算符與邏輯表達(dá)式,1、邏輯運算符 ! 非運算 執(zhí)行過程:若表達(dá)式的值為真(非0)則執(zhí)行其后的語句, (0)否則不執(zhí)行該語句。,判斷0或非0可以是: 關(guān)系表達(dá)式 邏輯表達(dá)式 數(shù)學(xué)表達(dá)式 等等,只能是一個語句,若要執(zhí)行多個語句,可以使用 ,例:輸入任意兩個整數(shù)x , y,比較后,確保x要大于等于y,再輸出。 void mai

3、n() int x, y, t; printf(Enter x and y:n); scanf(%d%d, ,2雙分支結(jié)構(gòu)ifelse.語句 使用格式: if (表達(dá)式) ; else ; 語句的執(zhí)行過程: 當(dāng)表達(dá)式的值為非0(條件成立)時執(zhí)行, 否則執(zhí)行else后面。,例:輸入三個數(shù),然后輸出其中最大的數(shù)。 void main() int a, b, c, max; scanf(“%d%d%d”, ,3ifelse if語句(多分支結(jié)構(gòu)) 語句形式: if (表達(dá)式1) 語句1; else if (表達(dá)式2) 語句2; . else if (表達(dá)式n) 語句n; else 語句塊n+1;,例

4、:簡單計算器,例:已知百分制成績x,顯示對應(yīng)的五級制成績,下列哪些正確。,4. 使用if語句中應(yīng)注意以下問題,if(a=5) 語句; if(b) 語句; 都是允許的。,if(xy) t=x; x=y; y=t; ,if(ab) max=a;,5if語句的嵌套,當(dāng)if語句中的執(zhí)行語句又是if語句時,則構(gòu)成了if 語句嵌套的情形。如:,if(表達(dá)式1) if (表達(dá)式2) 語句;,if (表達(dá)式1) if (表達(dá)式2) 語句1; else 語句2; else if (表達(dá)式3) 語句3;,要特別注意if和else的配對問題。例如: 其中的else究竟是與哪一個if配對呢? if(表達(dá)式1) if(

5、表達(dá)式1) if(表達(dá)式2) if(表達(dá)式2) 語句1; 語句1; else else 語句2; 語句2;,語言規(guī)定:else 總是與它前面最近的if配對,4.2.2 條件運算符和條件表達(dá)式,條件運算符為 ? : 它是一個三目運算符。 條件表達(dá)式的一般形式為: 表達(dá)式1 ? 表達(dá)式2 :表達(dá)式3 其求值規(guī)則為:如果表達(dá)式1的值為真,則以表達(dá)式2 的值作為條件表達(dá)式的值,否則以表達(dá)式3的值作為整個條件表達(dá)式的值。 條件表達(dá)式通常用于賦值語句之中。例如:,if(ab) max=a; else max=b;,max=(ab)?a:b;,條件運算符的說明:,運算優(yōu)先級:低于關(guān)系運算符和算術(shù)運算符,高于

6、賦值符。如:max=ab?a:b 條件運算符? :是一對運算符,不能分開單獨使用。 結(jié)合方向:自右至左。例如:,ab?a:cd?c:d,cd?c:d,例:若輸入的大寫字母轉(zhuǎn)換成相應(yīng)的小寫字母,否則原樣輸出。,void main() char ch; scanf(%c, ,if (ch=A ,4.2.3 switch語句(開關(guān)語句),switch語句使用的一般形式為: switch(表達(dá)式) case 常量表達(dá)式1: 語句1; case 常量表達(dá)式2: 語句2; case 常量表達(dá)式n: 語句n; default : 語句n+1; ,計算表達(dá)式的值k,若k等于常量表達(dá)式的值,則執(zhí)行對應(yīng)語句,若k

7、與上訴常量均不相同,執(zhí)行該語句,例:使用switch語句實現(xiàn)百分制成績化五級制成績。,switch(x/10) case 10: case 9: printf(A); case 8: printf(B); case 7: printf(C); case 6: printf(D); default:printf(E); ,break; break; break; break;,使用switch語句的通常形式為:,switch(表達(dá)式) case 常量表達(dá)式1: 語句1; break; case 常量表達(dá)式2: 語句2; break; case 常量表達(dá)式n: 語句n; break; defaul

8、t : 語句n+1; ,添加break;后:,例:輸入17(分別代表星期一到星期天),輸出相應(yīng)的內(nèi)容。,void main() int a; printf(input integer number: ); scanf(%d, ,說明:,在case后的各常量表達(dá)式的值不能相同,否則會出現(xiàn)錯誤。 在case后,允許有多個語句,可以不用括起來。 各case和default子句的先后順序可以變動,而不會影響程序執(zhí)行結(jié)果。但需要配合“break;”使用。 default子句可以省略不用。,4.2.3 選擇結(jié)構(gòu)的嵌套,if (表達(dá)式1) 語句1; else if (表達(dá)式2) 語句2; . else if

9、 (表達(dá)式n) 語句n; else 語句n+1;,switch(表達(dá)式) case 常量表達(dá)式1: 語句1; break; case 常量表達(dá)式2: 語句2; break; case 常量表達(dá)式n: 語句n; break; default : 語句n+1; ,這些語句部分,都可以包含另一個完整的if語句或switch語句,例:輸入三個數(shù),從小到大排列,if(ab) t=a; a=b; b=t; if(bc) t=b; b=c; c=t; if(ab) t=a; a=b; b=t; ,說明:,嵌套只能在一個分支內(nèi)嵌套,不出現(xiàn)交叉。其嵌套的形式將有很多種,嵌套層次也可以任意多。 在swicth結(jié)構(gòu)

10、中,每一個case分支可以完整包含另一個ifelse結(jié)構(gòu),也可完整包含另一個swicth結(jié)構(gòu)。 提示:為了便于閱讀和維護,建議在寫含有多層嵌套的程序時,使用縮進(jìn)對齊方式。,4.2.5 選擇結(jié)構(gòu)程序舉例,例:小學(xué)數(shù)學(xué)題,要求: 隨機產(chǎn)生兩道數(shù)學(xué)題(參加運算的數(shù)在110之間),一道加法,一道減法。 產(chǎn)生一道題后,讓用戶輸入答案;判斷答案的正確性,并給出提示。 記錄用戶答對的題數(shù),并對最終的成績作出評價。 可以使用if語句,或switch語句。,4.3 循環(huán)結(jié)構(gòu),循環(huán)結(jié)構(gòu)的特點: 在給定條件成立時,反復(fù)執(zhí)行某程序段, 直到條件不成立為止。 注意兩個概念: 給定的條件稱為循環(huán)條件 反復(fù)執(zhí)行的程序段稱為

11、循環(huán)體 在C語言中,實現(xiàn)循環(huán)結(jié)構(gòu)的語句主要有3種: while doWhile for語句,4.3.1 while語句,while語句的一般形式為: while(表達(dá)式) 語句;表達(dá)式是循環(huán)條件,語句為循環(huán)體 執(zhí)行過程:計算表達(dá)式的值,當(dāng)值為真(非0)時, 執(zhí)行循環(huán)體語句。否則,退出,例:在屏幕上打印110,說明:,計算的值,若表達(dá)式的值為真(非0)時,則執(zhí)行循環(huán)體語句;不斷反復(fù),直到表達(dá)式的值為假(0),則不執(zhí)行循環(huán)體語句,而直接轉(zhuǎn)向循環(huán)體外的第一條語句。 是循環(huán)反復(fù)執(zhí)行的程序,稱為“循環(huán)體”,當(dāng)需要執(zhí)行多條語句時,應(yīng)使用“ ”括起來組成一個復(fù)合語句。 while語句是先判斷條件,后執(zhí)行循環(huán)

12、體,為“當(dāng)型”循環(huán),因此若條件不成立,有可能一次也不執(zhí)行循環(huán)體。,例: 編程序求:s=1+2+3+100,main() int s=0,n=1; while (n=100) s=s+n; n+; printf(S=%d,s); ,4.3.2 do.while語句,一般形式為: do 語句; while (表達(dá)式); 執(zhí)行過程:先執(zhí)行循環(huán)體語句一次,再判別表達(dá)式的值,若為真(非0)則繼續(xù)循環(huán),否則終止循環(huán)。,例: 編程序求:s=1+2+3+100,void main() int s=0,n=1; do s=s+n; n+; while (n=100); printf(S=%d,s); ,whil

13、e (n=100) s=s+n; n+; ,用輾轉(zhuǎn)相除法求兩自然數(shù)m,n的最大公約數(shù)和最小公倍數(shù)。 例 求 m=28 ,n=20 的最大公約數(shù). if (mn) t=m; m=n; n=t; r=m%n; while (r!= 0) m=n; n=r; r= m%n; ,循環(huán) m n r 賦好初值時:28 20 8 第一次結(jié)束:20 8 4 第二次結(jié)束: 8 4 0,注意以下幾點:,在if語句,while語句中,表達(dá)式后面都不能加分號,而在 do-while語句的表達(dá)式后面則必須加分號。 當(dāng)循環(huán)體由多個語句組成時,也必須用括起來組成一個復(fù)合語句。 如果循環(huán)至少要執(zhí)行一次, while和do-w

14、hile語句可以相互替換。,4.3.3 for循環(huán)語句,一般形式為: for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語句; 表達(dá)式1(控制變量的初始化):用來給循環(huán)變量賦初值,也允許在for語句外給循環(huán)變量賦初值,此時可以省略該表達(dá)式。 表達(dá)式2(循環(huán)的條件):循環(huán)條件,一般為關(guān)系表達(dá)式或邏輯表達(dá)式。 表達(dá)式3(循環(huán)控制變量的更新 ):用來修改循環(huán)變量的值,一般是賦值語句。,當(dāng)循環(huán)體由多個語句組成時,也必須用 ,for語句的執(zhí)行過程:,注意:在整個for循環(huán)過程中,表達(dá)式1只計算一次,表達(dá)式2和表達(dá)式3則可能計算多次。,例: 編程序求:s=1+2+3+100,void main() int n,s=

15、0; for(n=1;n=100;n+) s=s+n; printf(s=%dn,s); getch(); ,void main() int s=0,n=1; while (n=100) s=s+n; n+; printf(“s=%d,s); ,例:打印20個1020的隨機數(shù)在屏幕上。,for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 語句;,表達(dá)式1; while(表達(dá)式2) 語句; 表達(dá)式3; ,有關(guān)for語句的幾點說明:,for語句中的“表達(dá)式1”、“表達(dá)式2”和“表達(dá)式3”都可以省略,但兩個分號不能省略。 若 “表達(dá)式2”省略了,則判定循環(huán)控制條件為真(非0) “表達(dá)式1”和 “表達(dá)式3”,可以

16、是一個簡單的表達(dá)式,也可以是逗號表達(dá)式。 注意:三個表達(dá)式都可以是任何表達(dá)式。,4.3.4 循環(huán)的嵌套多重循環(huán)結(jié)構(gòu),一個循環(huán)內(nèi)完整地包含另一個循環(huán)結(jié)構(gòu),則稱為多重循環(huán) 嵌套一層稱為二重循環(huán),嵌套二層稱為三重循環(huán) 例子: 打印九九乘法表 打印由數(shù)字組成的如下所示金字塔圖案,4.3.5 三種循環(huán)語句比較,4.4 其它控制語句,4.4.1 break語句 作用范圍:switch 語句或循環(huán)語句 功能:跳出switch語句或跳出本層循環(huán), 轉(zhuǎn)去執(zhí)行后面的程序。 break語句的一般形式為: break; 注意:break語句用于循環(huán)體中,一般與if語句聯(lián)合使用,例:車牌抽取程序,要求,用戶可以有5次機

17、會選擇。 若選到中意的號碼,可以使用鍵盤中的Y鍵來確定 若已確定選中號碼,則無需再繼續(xù)選擇了。 若5次都沒有選中,進(jìn)行提示,表示選中失敗。,4.4.2 continue語句,作用范圍:只能用在循環(huán)體中 功能:結(jié)束本次循環(huán),轉(zhuǎn)入下一次循環(huán)條件的判斷與執(zhí)行。 其一般格式是: continue; 注意:本語句只結(jié)束本層本次的循環(huán),并不跳出循環(huán)。,例,計算半徑為1到15的圓的面積,僅打印出超過50的圓面積。,void main() int r; float area; for(r=1;r=15;r+) area=3.141593*r*r; if(area50.0) continue; printf(

18、square=%fn,area); ,break與continue的區(qū)別,continue:結(jié)束本次循環(huán),即不再執(zhí)行循環(huán)體中continue 語句之后的語句,轉(zhuǎn)入下一次循環(huán)條件的判斷與執(zhí)行。應(yīng)注意的是, 本語句只結(jié)束本層本次的循環(huán),并不跳出循環(huán)。,break:語句只能用在switch 語句或循環(huán)語句中, 其作用是跳出switch語句或跳出本層循環(huán),轉(zhuǎn)去執(zhí)行后面的程序。,4.4.3 goto語句(無條件轉(zhuǎn)移語句),一般格式: goto 語句標(biāo)號; 如: label: i+; goto label1; 注意:語言不限制程序中使用標(biāo)號的次數(shù),但不得重名。 注意:在結(jié)構(gòu)化程序設(shè)計中一般不主張使用got

19、o語句, 以免造成程序流程的混亂,使理解和調(diào)試程序都產(chǎn)生困難。,4.5 應(yīng)用程序舉例 4.5.1 素數(shù)與哥德巴赫猜想,例:判斷一個給定的整數(shù)是否為素數(shù) 基本思想: 把m作為被除數(shù),將2Int(Sqrt(m)作為除數(shù),如果都除不盡,m就是素數(shù),否則就不是。可用以下程序段實現(xiàn),k=sqrt(m); for(i=2;i=k) printf(Yesn); else printf(Non);,例:編一程序驗證哥德巴赫猜想,for(n1=3;n1k) printf(%d=%d+%dn,n,n1,n2); ,發(fā)現(xiàn)n1不是素數(shù)后無需判斷n2了,執(zhí)行continue;后,當(dāng)前次循環(huán)的后半部分無需執(zhí)行,4.5.2

20、 窮舉法,基本思想:一一列舉各種可能的情況,并判斷哪一種可能是符合要求 例:將一張面值為100元的人民幣等值換成100張5元、1元和0.5元的零鈔,要求每種零鈔不少于1張,問有哪幾種組合? 分析:5元的最少1張,最多100張 1元的最少1張,最多100張 0.5元的最少1張,最多100張列出所有的情況,把真正符合要求的情況打印出來。,void main() int x, y, z, n; printf( 5yuan 1yuan 0.5yuann); n=0; for(x=1; x=100;x+) for(y=1;y=100;y+) for(z=1;z=100;z+) if(x+y+z=100

21、,4.5.3 迭代法,遞推法:有一只猴子,撿到了一框桃子。它每天吃現(xiàn)存桃子的一半再多一個。到了第7天,它只有一個桃子了,問它第一天撿到了幾個桃子? 解:注意后一天和前一天的桃子數(shù)的關(guān)系。 x=(x+1)*2;,例,用迭代法求平方根,已知迭代公式為: 編程分析: 可假定一個初值x0=a/2(估計值), 根據(jù)迭代公式得到一個新的值x1,這個新值x1比初值x0更接近要求的值x; 再以新值作為初值,即:x1x0,重新按原來的方法求x1, 重復(fù)這一過程直到|x1-x0|(某一給定的精度)。此時可將x1作為問題的解。,x0 = a / 2; /* 取迭代初值 */ x1 = 0.5 * (x0 + a / x0); while (fabs(x1 - x0) 0.00001) x0 = x1; /* 為下一次迭代作準(zhǔn)備 */ x1 = 0.5 * (x0 + a / x0); printf(%f s sqrt is:%fn, a, x1);,迭代法求平方根部分代碼,

展開閱讀全文
溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!