C語言程序控制結(jié)構(gòu)ppt課件
《C語言程序控制結(jié)構(gòu)ppt課件》由會員分享,可在線閱讀,更多相關(guān)《C語言程序控制結(jié)構(gòu)ppt課件(100頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第4章程序控制結(jié)構(gòu) 1 主要內(nèi)容 4 1C語言的執(zhí)行語句4 2順序結(jié)構(gòu)4 3選擇結(jié)構(gòu)4 4循環(huán)結(jié)構(gòu) 2 4 1C語言的執(zhí)行語句 C語言的語句分為聲明語句和執(zhí)行語句 第3章介紹的變量定義語句是最常見的聲明語句 聲明語句在編譯時處理 在程序運行時不產(chǎn)生相應的操作 執(zhí)行語句的作用是在程序運行時向計算機系統(tǒng)發(fā)出操作命令 使計算機執(zhí)行特定的操作 C語句 以 作結(jié)束符 編譯后產(chǎn)生機器指令 C語句分類 表達式語句空語句控制語句復合語句 3 4 1 1表達式語句 表達式語句是在表達式的末尾加上分號構(gòu)成的語句 z x sin y a a a 賦值語句i 自增1語句x 0 y 1 逗號表達式語句x y 無意義printf ThisisaCprogram n 函數(shù)調(diào)用語句賦值語句和函數(shù)調(diào)用語句是使用最多的表達式語句 如 printf ThisisaCstatement func a 5 y max a b 4 4 1 2空語句 僅由一個 構(gòu)成的語句只是在邏輯上起到一個語句的作用 在編譯時不產(chǎn)生任何指令 在執(zhí)行時不產(chǎn)生任何操作 作用 構(gòu)成標號語句 標示流程的轉(zhuǎn)向點 構(gòu)成循環(huán)語句中空循環(huán)體 例如 while getchar n 只要從鍵盤上輸入的字符不是回車則重新輸入 5 4 1 3復合語句 用 括起來的一組語句 一般形式 執(zhí)行語句 說明 后不加分號其中最后一個語句后也要加分號語法上和單一語句相同復合語句可嵌套 如 z x y t z 100 printf f t 如 z x y t z 100 printf f t 6 4 1 4控制語句 控制語句 完成一定的控制功能 如 if x y z x elsez y 7 4 2順序結(jié)構(gòu) 流程圖流程圖是表示算法的一種工具 用一些圖框來表示各種操作 一個流程圖包括以下幾部分 表示相應操作的框 帶箭頭的流程線 框內(nèi)外必要的文字說明 8 順序結(jié)構(gòu) 常用的流程圖符號 N S流程圖 完全去掉了流程線 算法的每一步都用矩形框描述 把一個個矩形框按執(zhí)行的次序連接起來就是一個完整的算法描述 9 順序結(jié)構(gòu) 結(jié)構(gòu)化程序的三種基本結(jié)構(gòu)順序結(jié)構(gòu) 按書寫順序執(zhí)行的語句構(gòu)成的程序段 選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu) 10 例4 1輸入任意兩個整數(shù) 求它們的和及平均值 要求平均值取兩位小數(shù)輸出 例4 1 include includevoidmain intnum1 num2 floatsum aver printf Pleaseinputtwointegers n scanf d d 運行情況 30000 5005 sum 35005 aver 17502 50 11 例4 2給定一個三位正整數(shù) 分別輸出其個位數(shù) 十位數(shù)和百位數(shù) includevoidmain intm m0 m1 m2 printf Inputanumber 100 999 scanf d 運行結(jié)果 Inputanumber 100 999 263 輸出 3 6 2 12 例4 3取一個16位的二進制數(shù)a的7 6 5 4四個位 如圖4 2中加陰影的部分 voidmain unsigneda b c d scanf x 以十六進制輸出a和結(jié)果d 13 例4 4求ax2 bx c 0方程的根 a b c由鍵盤輸入 設(shè) 一元二次方程式的根為x1 x2 可以將上面的分式分為兩項 p q 則x1 p q x2 p q 順序結(jié)構(gòu) 14 include includevoidmain floata b c disc x1 x2 p q scanf a f b f c f 運行情況 輸入 a 1 b 3 c 2 輸出 x1 1 00 x2 2 00 15 4 3選擇結(jié)構(gòu) 選擇結(jié)構(gòu)是指在程序執(zhí)行過程中 根據(jù)指定條件的當前值在兩條或多條路徑中選擇一條執(zhí)行 C語言的選擇控制語句有兩條 條件選擇語句 if語句開關(guān)分支語句 switch語句 16 4 3 1if語句 1 if格式 單分支語句 if 判斷表達式 語句1 語句1可以是一條語句或復合語句 注意 滿足條件時想要執(zhí)行多條語句一定要用復合語句 當判斷表達式值不為零 即 真 則執(zhí)行語句1 再執(zhí)行其后繼語句 否則 不執(zhí)行語句1 執(zhí)行其后繼語句 17 單分支語句 判斷表達式應該是具有一定意義 有實用價值的表達式 因此 最常用關(guān)系表達式和邏輯表達式來表達 例如 if a b if a 0 等價于if a if a 0 等價于if a if a 5 a 10 例 輸入一個整數(shù) 求絕對值 main inti scanf d 例 執(zhí)行下列程序段后a的值是 inta 3 if 2 a 5 18 單分支語句 includemain charc printf inputaletter c getchar if c A 例4 5從鍵盤輸入一個字母 以小寫字母形式輸出該字母 19 單分支語句 例4 6從鍵盤輸入兩個整數(shù) 按升序輸出這兩個數(shù) includevoidmain inta b t scanf d d 20 例 輸入三個數(shù)a b c 要求按由小到大的順序輸出 Ifa b將a和b對換Ifa c將a和c對換Ifb c將b和c對換 單分支語句 21 單分支語句 includevoidmain floata b c t scanf f f f 必不可少 否則 會出現(xiàn)邏輯錯誤 22 2 if 表達式 語句1else語句2 雙分支if else語句 例 if x y printf d x elseprintf d y 23 雙分支if else語句 說明 在if和else后面可以只含有一條語句 也可以含有用花括號 括起來的復合語句 如 if a b c 24 例 輸入兩個數(shù)并判斷兩數(shù)是否相等 includevoidmain inta b printf Enterintegera scanf d 運行結(jié)果 Enterintegera 12 Enterintegerb 12 a b 運行結(jié)果 Enterintegera 12 Enterintegerb 9 a b 雙分支if else語句 25 分析以下程序的輸出結(jié)果 1 includevoidmain inta b scanf d 2 includevoidmain inta b t scanf d d 26 3 includevoidmain intx y scanf d 4 程序輸出結(jié)果 includevoidmain intx y scanf d 27 3 多分支語句 幾種形式 28 3 if 表達式1 語句1elseif 表達式2 語句2elseif 表達式3 語句3 elseif 表達式m 語句melse語句n 多分支語句 29 例 if number 500 cost 0 15 elseif number 300 cost 0 10 elseif number 100 cost 0 075 elseif number 50 cost 0 05 elsecost 0 多分支語句 30 多分支語句 匹配規(guī)則 Else總是與它上面的 最近的 統(tǒng)一復合語句中的 未配對的if語句配對 當if和else數(shù)目不同時 可以加花括號來確定配對關(guān)系 例 if a b if b c printf a b c elseprintf a b 修改 if a b if b c printf a b c elseprintf a b 31 1 x0 算法1 算法1 輸入x輸入x若x0 則y 1若x 0 則y 0輸出y若x 0 則y 1輸出y 多分支語句 32 程序 includevoidmain intx y scanf d 33 程序1 程序2 if x 0 y 1 if x 0 y 1 elseelsey 0 if x 0 y 0 elsey 1 elsey 1 程序3 程序4 y 1 y 0 if x 0 if x 0 if x 0 y 1 if x 0 y 1 elsey 0 elsey 1 正確 正確 上例中的程序段有四個 請判斷哪個是正確的 X 0時 y 0 X 0時 y 1 34 多分支語句 例4 7 輸入百分制成績 要求輸出相應的五級制成績 百分制成績與五級制成績之間的轉(zhuǎn)換標準為 90分以上為 A 80 89分為 B 70 79分為 C 60 69分為 D 60分以下為 E 35 If語句嵌套 voidmain intscore printf nPleaseinputthescore 0 100 scanf d 36 多分支語句 例4 8分段函數(shù)定義如右 根據(jù)所輸入的x的值 求函數(shù)值 main floatx y scanf f 37 4 3 2switch語句 switch語句的格式 switch 表達式 case常量表達式 語句 break case常量表達式 語句 break case常量表達式 語句 break default 語句 執(zhí)行過程 當表達式的值與某一個case后面的常量表達式的值相等時 就從此case后面的語句開始執(zhí)行下去 若所有的case中的常量表達式的值都沒有與表達式的值匹配的 就執(zhí)行default后面的語句 38 switch語句 39 switch語句 執(zhí)行流程 首先計算switch圓括號中表達式的值 然后將結(jié)果值按前后順序依次與各個case后的常量表達式進行比較 當表達式的值與某一個case后面的常量表達式的值相等時 就執(zhí)行該case后邊的語句組k 接著如果遇到break語句 則結(jié)束整個switch語句 即退出switch 如果不遇到break語句 則按順序執(zhí)行下面其他case后邊的語句組 直至遇到break語句或最后邊的 為止 才結(jié)束switch語句當結(jié)果值與常量表達式k的值都不相等時 若有default 則執(zhí)行其后語句 若無default 則什么都沒執(zhí)行 40 switch語句 說明 1 switch關(guān)鍵字 case也是關(guān)鍵字 與其后面的常量表達式合稱case語句標號 常量表達式類型必須與switch后面表達式類型相匹配 且各case語句標號的值各不相同 不能重復 default也是關(guān)鍵字 起語句標號的作用 代表除了以上所有case標號之外的那些標號 2 語句1 語句2可以是一條語句 也可以是若干條 在必要時 case語句標號后的語句可以省略不寫 3 switch的表達式通常是一個整型或字符型變量 也允許枚舉型變量 其結(jié)果為相應的整數(shù) 字符或枚舉常量 4 break語句不是一定需要加上 執(zhí)行完一個case后面的語句 若沒有遇到break 就自動進入下一個case繼續(xù)執(zhí)行 而不再判斷是否與之匹配 41 當程序在執(zhí)行時 如果輸入的是 A include stdio h main chara a getchar switch a case65 printf c A case66 printf c B default printf s n other 運行結(jié)果 ABother 42 當程序在執(zhí)行時 屏幕上輸出為 include stdio h main intk 2 switch k case1 printf d n k break case2 printf d k case3 printf d n k break cade4 printf d n k default printf Full n 運行結(jié)果 23 43 switch語句 例 要求按照考試成績的等級輸出百分制分數(shù)段 用switch語句實現(xiàn) 應寫為 switch grade case A printf 85 100 n break case B printf 70 84 n break case C printf 60 69 n break case D printf 60 n break default printf error n 44 補充例 輸入成績 用A B C D F R分別表示優(yōu) 良 中 及格 不及格 補考 缺考 grade getchar switch grade case A case a printf 優(yōu) break case B case b printf 良 break case C case c printf 中 break case D case d printf 及格 break case F case f printf 不及格 此處沒有break語句 case R case r printf 請補考 break default printf 輸入錯 45 switch語句 例 某幼兒園只收2至6歲的兒童 2 3歲入小班 4歲入中班 5 6歲入大班 根據(jù)輸入的年齡 求應入的班級 分析 設(shè)年齡為age 當age為2和3時 應輸出同樣的內(nèi)容 入小班 age為5和6時輸出同樣的內(nèi)容 入大班 該題算法比較簡單 46 switch語句 includevoidmain intage printf Pleaseenterage scanf d 47 voidmain intx y a 0 b 0 scanf x d y d 運行結(jié)果 輸入 x 1 y 0 輸出 a 2b 2 switch語句的嵌套 48 選擇結(jié)構(gòu)程序舉例 例4 13輸入一個字符 判別該字符是數(shù)字 英文大寫字母 小寫字母還是其它字符 includevoidmain charc printf inputachar c getchar if c 0 49 選擇結(jié)構(gòu)程序舉例 例4 14輸入三角形三邊長 求三角形面積 includevoidmain floata b c s area scanf f f f 50 選擇結(jié)構(gòu)程序舉例 例4 15輸入a b c三個整數(shù) 輸出最大數(shù)和最小數(shù) voidmain inta b c max min printf inputthreenumbers scanf d d d 51 課堂練習 1 以下程序的運行結(jié)果是 main intn 5 if n 6 printf d n n elseprintf d n n 2 對于整型變量a 賦值語句a a 3 0 1 0 與 語句不等價 A if a 3 0 a 1 elsea 0 B if a 3 0 a 0 elsea 1 C if a 3 a 0 elsea 1 D if a 3 a 1 elsea 0 52 課堂練習 3 以下程序的運行結(jié)果是 main intn c switch n default printf error break case a case b printf good break case c printf pass case d printf warn 53 循環(huán)結(jié)構(gòu) 在許多問題中需要用到循環(huán)控制 循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計的基本結(jié)構(gòu)之一 它和順序結(jié)構(gòu) 選擇結(jié)構(gòu)共同作為各種復雜程序的基本構(gòu)造單元 特點 當給定的條件成立時 反復執(zhí)行某個程序段 直到條件不成立為止 給定的條件稱為循環(huán)條件 反復執(zhí)行的程序段稱為循環(huán)體 它由C的語句構(gòu)成 C語言提供了3種循環(huán)結(jié)構(gòu) while語句 do while語句 for語句 54 4 4 1用while語句實現(xiàn)循環(huán) while語句用來實現(xiàn) 當型 循環(huán)結(jié)構(gòu) 一般形式 while 表達式 語句當表達式為非0值時 執(zhí)行while語句中的內(nèi)嵌語句 其特點是 先判斷表達式 后執(zhí)行語句 1 與if的區(qū)別 if只一次 while反復判斷 反復執(zhí)行 2 while語句中通常有改變表達式的值的語句 55 用while語句實現(xiàn)循環(huán) 例4 18計算1 2 100 main inti 1 s 0 while i 100 s i i printf d d i s getch 1 如果缺少i 這一行會出現(xiàn)什么情況 2 若計算 n 該程序應如何修改 56 例4 19根據(jù)公式計算 的值 includevoidmain inti 1 n doublepi 0 printf Inputaninteger n scanf d 57 用while語句實現(xiàn)循環(huán) 例4 21猴子吃桃問題 猴子摘下了一堆桃子 第一天吃總數(shù)的一半多一個 第二天吃剩下的一半多一個 以后每天都吃前一天剩下的一半多一個 到第十天想再吃時剩一個 求猴子摘了多少個桃子 算法分析 設(shè)第i天未吃前有xi個桃子 由題意得 x1 2 1 x2x2 2 1 x3 x9 2 1 x10已知x10 1 我們有 x10 1xn 1 xn 1 2 voidmain intk x1 x2 k 1 x2 1 while k 9 x1 x2 1 2 x2 x1 k printf Totalnumber d n x1 58 用while語句實現(xiàn)循環(huán) 補充1 統(tǒng)計從鍵盤輸入的字符個數(shù) 以回車結(jié)束 補充2 從鍵盤輸入一個整數(shù) 至少大于9 求最高位的數(shù)字 includemain intcount 0 while getchar n count printf count d count 這種結(jié)構(gòu)的循環(huán)次數(shù)是不確定的 while d 9 d d 10 反復執(zhí)行d d 10 printf 最高位是 d d 也可寫成 while d 10 9 空循環(huán)體 反復執(zhí)行d d 10 printf 最高位是 d d 59 4 4 2用do while實現(xiàn)循環(huán) do while語句的特點 先執(zhí)行循環(huán)體 然后判斷循環(huán)條件是否成立 一般形式 do 循環(huán)體語句 while 表達式 執(zhí)行過程 先執(zhí)行一次指定的循環(huán)體語句 然后判別表達式 當表達式的值為非零 真 時 返回重新執(zhí)行循環(huán)體語句 如此反復 直到表達式的值等于0為止 此時循環(huán)結(jié)束 60 用do while實現(xiàn)循環(huán) 用do while計算 1 2 100 main inti 1 s 0 do s s i i while i 100 printf d d i s getch 計算 1 3 5 7 101main inti 1 s 0 ints 1 t 1 do s s t i i i 2t t while i 101 printf d t s 61 用do while實現(xiàn)循環(huán) 例4 22利用格里高公式 求 直到最后一項的值小于10 6 voidmain ints 1 floatn 1 0 t 1 pi 0 do pi pi t n n 2 分母每循環(huán)一次增加2 s s 單項的正負號交替變化 t s n 下一項的值 while fabs t 1e 6 pi pi 4 printf pi 10 6f n pi 62 while和do while循環(huán)的比較 上述程序的功能是什么 比較 輸入5和11時兩個程序的輸出結(jié)果如何 includevoidmain inti sum 0 scanf d includevoidmain inti sum 0 scanf d 當型循環(huán)最少執(zhí)行次數(shù)是多少 直到型循環(huán) 最少執(zhí)行次數(shù)是多少 63 4 4 3用for語句實現(xiàn)循環(huán) C語言中的for語句使用最為靈活 不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況 而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況 它完全可以代替while語句 一般形式 for 表達式1 表達式2 表達式3 循環(huán)體也可寫作 for 循環(huán)變量賦初值 循環(huán)條件 循環(huán)變量增值 循環(huán)體 for語句等價于如下的while循環(huán)形式 表達式1 while 表達式2 語句表達式3 64 用for語句實現(xiàn)循環(huán) for語句的執(zhí)行過程 1 先求解表達式1 2 求解表達式2 若其值為真 值為非0 則執(zhí)行for語句中指定的內(nèi)嵌語句 然后執(zhí)行下面第 3 步 若為假 值為0 則結(jié)束循環(huán) 轉(zhuǎn)到第 5 步 3 求解表達式3 4 轉(zhuǎn)回上面第 2 步驟繼續(xù)執(zhí)行 5 循環(huán)結(jié)束 執(zhí)行for語句下面的一個語句 65 用for循環(huán)計算 1 2 100 main inti s 0 for i 1 i 100 i 注意括號后沒有分號 s s i 求和 1 2 3 100 printf d s 變量i用于控制循環(huán)次數(shù) 我們稱其為循環(huán)控制變量 1 最后i的值是多少 2 從1加到10000或更多呢 用for語句實現(xiàn)循環(huán) 66 說明 表達式1 表達式2和表達式3之間必須用分號隔開 但表達式3后面不能加分號 循環(huán)體如果包含一個以上的語句 應該用花括弧括起來 以復合語句形式出現(xiàn) 循環(huán)體有可能一次也不執(zhí)行 循環(huán)體可以為空 表達式1和表達式3都可以為逗號表達式 例 表達式1 表達式2和表達式3都可省略 但不鼓勵省略表達式2和表達式3 例 省略表達式1 for語句循環(huán)與while循環(huán)可以互相轉(zhuǎn)換 但for循環(huán)的結(jié)構(gòu)更簡潔 67 for語句的省略形式 例 1 i 1 for i 1000 i sum sum i 例 2 for i 1 i 1000 sum sum i i 例 3 for i 1 i if i 1000 break sum sum i 1 表達式1可省略 但分號不能省 在for語句前為變量賦初值 2 表達式3也可省略 但應把其放入循環(huán)體內(nèi) 否則for無法正常結(jié)束 3 表達式2省略后 for語句將無限循環(huán)下去 可在循環(huán)體內(nèi)加退出循環(huán)的語句 68 for語句的省略形式 4 表達式1和表達式3可以是一個簡單的表達式 也可以是一個逗號表達式 表達式1和表達式3也可以是與循環(huán)無關(guān)的任意表達式 5 三個表達式全省略 無終止執(zhí)行循環(huán)體 分號不能省 6 把循環(huán)體內(nèi)容放到表達式3 循環(huán)體為空語句 盡量避免此寫法 例 4 i 1 sum 0 for p 0 i 100 p 1 sum sum i i 例 6 for i 1 sum 0 i 1000 sum sum i i 例 5 i 1 sum 0 for sum sum i i if i 100 break 69 用for語句實現(xiàn)循環(huán) 例4 25求1 2 10 的值 voidmain inti n 10 longs t for i 1 t 1 s 0 i n i t i t為上一個數(shù)i 1的階乘值 再乘以i 即i i 1 i s t 累加i printf s ld n s 70 用for語句實現(xiàn)循環(huán) 例4 27編程輸出 斐波那契數(shù)列 的前20項 斐波那契數(shù)列 是意大利中世紀數(shù)學家列昂納多 斐波那契以兔子繁殖為例子而引入的 故又稱為 兔子數(shù)列 main inti x1 1 x2 1 for i 1 i 10 i 每次生成并輸出兩項 所以循環(huán)10次 printf 10d 10d x1 x2 if i 2 0 printf n 當i為偶數(shù)時換行 即每四個換行 x1 x1 x2 x2 x2 x1 71 用for語句實現(xiàn)循環(huán) 最簡單的寫法 main inti j k 10000 for i 1 j 0 i k i i j j i j printf d i 這里 i表示fibonacci n i i j 即第n項 第n 1項 第n 2項j i j 即第n 1項 第n項 第n 2項使i存放當前項 j存放前一項 程序運行結(jié)果為 11235813213455891442333776109871597258441816765 72 4 4 4continue語句和break語句 1 break語句 1 在while for do while語句的循環(huán)體或switch語句的語句組中 使用break語句可使程序立即退出該結(jié)構(gòu) 故有中斷語句之稱 其語法格式如下 break 2 功能 用在循環(huán)語句或switch語句中 使得跳出循環(huán)體或分支 提前結(jié)束循環(huán)或分支 73 continue語句和break語句 includevoidmain inti for i 1 i if 512 i 15 13 break printf d d 512 n i 15 512 i 15 例4 28將數(shù)字512表示成兩個數(shù)的和 這兩個數(shù)分別為15和13的倍數(shù) 運行結(jié)果 135 377 512 74 continue語句和break語句 說明break只能終止并跳出最近一層的循環(huán)結(jié)構(gòu) break不能用于循環(huán)語句和switch語句之外的任何其它語句之中 在循環(huán)語句中 break總是與選擇語句配合使用 main inti s s 0 for i 1 i5 break printf d n s 運行結(jié)果 13 75 continue語句和break語句 2 continue語句一般形式 continue 功能 用在循環(huán)語句中 使得結(jié)束本次循環(huán) 即跳過循環(huán)體中下面尚未執(zhí)行的語句 接著進行下一次是否執(zhí)行循環(huán)的判定 補充例題 for i 1 i 10 i if i 2 0 continue printf d i 該程序的功能是 只打印出單數(shù) 76 continue語句和break語句 說明 continue只能終止本次循環(huán) 而不是終止整個循環(huán)的執(zhí)行 continue不能用于循環(huán)語句之外的任何其它語句之中 continue總是與選擇語句配合使用 例4 29 includevoidmain inti n 0 for i 100 i 200 i if i 7 0 例4 29輸出100 200之間所有能被7或9整除的數(shù) 77 continue語句和break語句 補充例 計算輸入的10個整數(shù)中正數(shù)的個數(shù)及正數(shù)平均值 main inti n a floats 0 0 printf 請輸入10個整數(shù) n for n 0 i 0 i0 下兩句要加 s a n printf 共有 d個正數(shù) 其平均值為 f n n s n 78 3 continue和break的區(qū)別 continue語句只是結(jié)束本次循環(huán) 而不是終止整個循環(huán)的執(zhí)行 而break語句則是結(jié)束整個循環(huán)過程 不再判斷條件是否成立 79 continue語句和break語句 main inti a 0 b 0 c 0 d 0 for i 1 i 4 i switch i case1 a 1 continue case2 b 2 case3 c 3 break case4 d 4 printf d d d d n a b c d main inti s s 0 for i 1 i5 break printf d n s 80 continue語句和break語句 main intk 4 n 0 clrscr for n k n if n 3 0 break k printf d d n k n 運行結(jié)果 4 1 將break改為continue運行結(jié)果 3 3 81 4 4 5循環(huán)的嵌套 循環(huán)的嵌套 一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu) 多層循環(huán) 內(nèi)嵌的循環(huán)中還可以嵌套循環(huán) 三種循環(huán) while循環(huán) do while循環(huán)和for循環(huán) 可以互相嵌套 層數(shù)不限 循環(huán)嵌套形式舉例 1 while 2 do 3 for while dofor while while 82 循環(huán)的嵌套 4 while 5 for 6 do dowhile for while while 外層循環(huán)可包含兩個以上內(nèi)循環(huán) 但不能相互交叉 嵌套循環(huán)的執(zhí)行流程例 for i 1 i n i for j 1 j 5 j s i j 83 例4 30在屏幕上輸出如下圖形 main inti j k for i 8 i 1 i 總共要輸出8行星號 for j 1 j 8 i j printf 控制每行星號前面顯示的空格 for k 1 k 2 i 1 k printf 控制每行星號的個數(shù) printf n 控制輸出每行星號后換行 84 循環(huán)的嵌套 例4 31改寫例4 25求1 2 10 的程序 用嵌套的循環(huán)結(jié)構(gòu)來實現(xiàn) main inti n 10 j longs 0 t for i 1 i n i for t 1 j 1 j i j t j 每次循環(huán)都重新計算i s t 累加i printf s ld n s 85 程序舉例 窮舉法 例4 32三位自方冪數(shù)又稱水仙花數(shù) 用窮舉法求出所有水仙花數(shù) 如 13 53 33 153 main inti j k m1 m2 printf narcissusnumbersare for i 1 i 9 i for j 0 j 9 j for k 0 k 9 k m1 i 100 j 10 k m2 i i i j j j k k k if m1 m2 printf 4d m1 printf n 86 程序舉例 數(shù)的分離 例4 33編寫一個程序 輸入1 32767之間的整數(shù) 把這個整數(shù)顯示為一系列數(shù)字 每組數(shù)字都是用兩個空格分開 例如 整數(shù)1234應該顯示為 1234 main inti num counter temp counter 1 printf Enteraninteger scanf d 87 程序舉例 方程求根 例4 34用二分法求非線性方程f x x3 1 1x2 0 9x 1 4 0的根 voidmain floatx x1 x2 y1 y2 y do printf Inputx1 x2 n scanf f f 88 程序舉例 多項式計算 例4 35編程計算多項式的值 voidmain floatsum term x intn k sign printf Inputn x n scanf d f 89 程序舉例 數(shù)的判別 例4 36輸入一個數(shù) 判斷這個數(shù)是否為素數(shù) voidmain intm i k printf Enteraninteger n scanf d 90 程序舉例 輾轉(zhuǎn)相除法 例4 37用輾轉(zhuǎn)相除法求兩個數(shù)的最大公約數(shù)和最小公倍數(shù) voidmain inta b m n temp c d printf Pleaseenter2integersn m n scanf d d 91 程序舉例 統(tǒng)計問題 例4 38輸入十個數(shù) 求出最大數(shù) 最小數(shù)和奇數(shù) 偶數(shù)個數(shù) voidmain inti max min oldn 0 even 0 x for i 1 imax max x if x min min x printf max d mix d n max min printf Thereare devennumbers n even printf Thereare doldnumbers n oldn 92 程序舉例 面積問題 例如 求曲線y2 x在3 x 15間圍成如右圖的陰影部分面積 曲線方程可轉(zhuǎn)化為 而求陰影部分的面積其實就是求下式積分的問題 也就是接近將區(qū)域微分為足夠多的小矩形的面積和 當然 一種方法就是從數(shù)學上求出它的積分 另一種可與C語言來描述 93 程序舉例 面積問題 includemain doublex area 0 0 for x 3 x 15 x x 0 01 area area sqrt x 0 01 printf areais f n area getch 94 課堂練習 1 以下程序的運行結(jié)果是 voidmain intsum 0 item 0 while item 6 break printf d n sum 2 以下程序的運行結(jié)果是 voidmain intsum 0 item 0 while item 5 item if item 2 continue sum item printf d n sum 95 牛頓迭代法 方程f x 0 若滿足下列三個條件可使用牛頓迭代法 f x 在區(qū)間 a b 上的f x 及f x 都存在 f a f b 0 則可以使用牛頓迭代公式f xn 1 xn xn 1 f xn 1 96 牛頓迭代法 includemain floatx x0 f f1 x 2 do x0 x f x0 x0 x0 4 x0 x0 10 f1 3 x0 x0 8 x0 x x0 f f1 while fabs x x0 1e 6 printf therootis 5 2f n x 97 作業(yè) 編寫程序計算 2 P1214 223 P1224 25 98 課后習題 4 22 雞兔同籠 是一個中國古算題 最早出現(xiàn)在 孫子算經(jīng) 中 籠中有若干只雞和兔子 它們共有88個頭 244只腳 問雞和兔各有多少只 4 25求1 999之間的所有同構(gòu)數(shù) 一個數(shù)出現(xiàn)在它的平方數(shù)的右端 這個數(shù)稱為同構(gòu)數(shù) 如 5出現(xiàn)在25右側(cè)5是同構(gòu)數(shù)25出現(xiàn)在625右側(cè)25也是同構(gòu)數(shù) 99 課后習題 補充下面程序 該程序的功能是求滿足以下條件的最大的n 1 2 3 n 1000voidmain intn s while s 1000 n s s printf n d n n getch 100- 1.請仔細閱讀文檔,確保文檔完整性,對于不預覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
30 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 語言 程序控制 結(jié)構(gòu) ppt 課件
鏈接地址:http://m.appdesigncorp.com/p-4971571.html