版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第3章 程序設計結構,第3章 程序設計結構,本章內(nèi)容,3.2 順序結構,3.3 選擇結構,3.4 循環(huán)結構,3.1 程序設計結構的基本概念,3.5 輔助控制語句,3.1 程序設計結構的基本概念,本節(jié)內(nèi)容,3.1.2 程序設計的三種基本結構,3.1.3 使用流程圖描述程序算法,3.1.4 C語句,3.1.1 機構化程序設計的基本原則,3.1.1 結構化程序設計的基本原則,結構化程序設計是從宏觀角度描述程序設計。 一個比較大的程序是由不同功能模塊構成,每個模塊完成一定的功能,而每個模塊又是由三種基本程序設計結構描述的。 結構化程序設計強調程序設計風格和程序結構的規(guī)范化,提倡清晰的結構。 結構化程序
2、設計應遵循下述原則: (1)自頂向下 (2)逐步細化 (3)模塊化設計 (4)結構化編碼,3.1.2 程序設計的三種基本結構,3.1.2.1 順序結構 按設定的順序一步一步的執(zhí)行操作步驟,直到完成全部工作。 3.1.2.2 選擇結構 此結構一定包含一個判斷,根據(jù)判斷結果的不同,執(zhí)行不同操作步驟,獲得不同的結果。 3.1.2.3 循環(huán)結構 此結構一定包含一個判斷,如果判斷結果滿足一定的條件,則反復執(zhí)行一段操作步驟,直到判斷結果不滿足條件為止 。,3.1.2 程序設計的三種基本結構,三種基本結構有以下共同特點: (1)只有一個入口。 (2)只有一個出口。 (3)結構內(nèi)的每一部分都有機會被執(zhí)行到。
3、(4)結構內(nèi)不存在“死循環(huán)”。,3.1.3 使用流程圖描述程序算法,編寫一個大一點的程序,在編寫代碼前,首先要寫出程序的算法。程序算法可以用自然語言、偽代碼、程序框圖或N/S圖來表示。 用程序流程圖來描述程設計的算法是比較通用的做法,程序流程圖就是用框圖來表示程序設計的算法。,3.1.4 C語句,在C語言程序設計中,是以語句為單位向計算機發(fā)出操作命令的。 一個實際的程序是由若干個語句構成的,語句是最小的程序設計單位,一個語句經(jīng)編譯后產(chǎn)生若干條機器指令。 C語言把語句分成5類(函數(shù)調用語句、控制語句、空語句、復合語句、表達式語句),只有控制語句是系統(tǒng)提供的,其他語句都是程序設計人員根據(jù)具體操作給
4、出的。,3.1.4 C語句,(1)表達式語句。表達式語句由一個表達式加一個分號構成,最典型的是,由賦值表達式構成一個賦值語句。 例如: e=3.2 是一個賦值表達式, e=3.2;是一個賦值語句。,3.1.4 C語句,(2)控制語句??刂普Z句用于完成一定的控制功能。 if()else (條件語句) for() (循環(huán)語句) while() (循環(huán)語句) dowhile() (循環(huán)語句) continue (結束本次循環(huán)語句) break (中止執(zhí)行switch或循環(huán)語句) switch (多分支選擇語句) goto (轉向語句) return (從函數(shù)返回語句),3.1.4 C語句,(3)函數(shù)
5、調用語句。函數(shù)調用語句由一個被調用函數(shù)加一個分號構成,例如: printf(“This is a C programing.”); (4)復合語句。可以用把一組語句括起來構成復合語句(又稱為分程序)。例如: m=a;a=b;b=m; (5)空語句。下面是一個空語句: ;,3.1.4 C語句,C程序中的數(shù)據(jù)類型定義、預處理命令及注釋行都不是語句。 C語言允許一行寫幾個語句,也允許一個語句拆開寫在幾行上,對書寫格式?jīng)]有固定要求,為了讀寫程序的方便,在書寫程序時,還應錯落有致。,3.2 順序結構,在順序結構中,程序按照由上往下的順序逐個執(zhí)行各語句。,#include void main() int
6、a=3,b=4; int temp; temp=a; a=b; b=temp; printf(a=%d,b=%dn,a,b); ,【例3-2】交換a、b兩個數(shù)的值,3.3 選擇結構,本節(jié)內(nèi)容,3.3.2 多分支語句,3.3.1 條件語句,3.3.1 條件語句,條件語句首先判斷條件,根據(jù)條件滿足情況,確定執(zhí)行哪些程序語句。 在條件語句中,要給出測試的條件,它可是任何常量、變量或表達式。大多數(shù)情況下,條件語句中被測試的條件為關系表達式或邏輯表達式。在條件語句中,條件的計算結果為非0時滿足條件,否則不滿足條件。 if(x5) if(a 2功能 若E為非0,即為真值時,執(zhí)行if語句中的語句組,否則執(zhí)行
7、后面的語句。,3.3.1 條件語句,表達式,If的后續(xù)語句,3.3.1 條件語句,#include void main() int x; printf(please input x:n); scanf(%d, ,【例3-4】從鍵盤上輸入一個數(shù),求這個數(shù)的絕對值,3.3.1 條件語句,#include void main() float a,b,s; scanf(%f,%f, ,【例3-5】求任意兩個數(shù)字a、b中比較大的那個數(shù)的平方,3.3.1 條件語句,#include void main() float a,b,s; float t; scanf(%f,%f, ,另一解法,3.3.1 條件語
8、句,3.3.1.2 雙分支選擇結構 1格式 if(E) 語句組1; else 語句組2; 2功能 如果E為非0,則執(zhí)行語句組1的語句,然后執(zhí)行整個if-else的后續(xù)語句;否則執(zhí)行語句組2,然后執(zhí)行后續(xù)語句。,3.3.1 條件語句,3.3.1 條件語句,#include void main() int x,y; scanf(%d, ,【例3-6】設x為任意整數(shù),求y的值,當x0時,計算y=x*x;當x=0時,計算y=2*x,3.3.1 條件語句,3.3.1.3 用if-else實現(xiàn)多分支選擇結構 實現(xiàn)多分支選擇結構的if語句結構如下: if(E1) 語句組1; else if(E2) 語句組2
9、; else if(E3) 語句組3; else if(En) 語句組n; else 語句組n+1; 后續(xù)語句,3.3.1 條件語句,#include void main() float x,y; scanf(%f, ,3.3.1 條件語句,3.3.1.4 if語句的嵌套 if語句是可以嵌套的,即if語句內(nèi)部還可以包含if語句。 if(E1) if(E2) 語句組1; else 語句組2; else if(E3) 語句組3; else 語句組4; 后續(xù)語句,3.3.1 條件語句,#include void main() int a,b,c; int small; scanf(%d,%d,%d,
10、 /這對花括號可以不用,else if(b=c) small=b; else small=c; /這對花括號可以不用printf(smallest=%dn,small); ,【例3-8】從鍵盤任意輸入3個整數(shù)a、b、c,求其中最小的數(shù)。,3.3.1 條件語句,關于選擇結構要注意的問題: (1)if語句中的判斷條件不一定必須是關系表達式、邏輯表達式或結果為整數(shù)值的表達式。(常數(shù)也可,非0為真,0為假) (2)當if語句中的判斷條件為相等關系式時,要注意用“=”運算符,而不要用賦值運算符“=”。 (3)在if語句的嵌套使用中,注意else與if的配對問題。C語言規(guī)定else與其上面最靠近它的還未配
11、對的if相配對。,3.3.1 條件語句,int x=10; if(x=0) if(x=0) printf(x is zero); else printf(x is positive);,int x=10; if(x=0) if(x=0) printf(x is zero); else printf(x is positive); ,3.3.2 多分支語句,多分支語句也叫開關語句,是多分支選擇結構,它是根據(jù)多個條件進行多條運行線路的選擇。 1格式 switch(E) case c_E1:語句組1; break; case c_E2:語句組2; break; case c_En;語句組n; bre
12、ak; default: 語句組n+1; break; ,3.3.2 多分支語句,1執(zhí)行過程 switch語句先計算表達式E的值,然后E依次與c_E1 到c_En進行比較。若E的值與某個情況常量c_Ei相等,則轉到c_Ei:后面的“語句組i”去執(zhí)行,執(zhí)行完后再由break語句跳出switch語句,繼續(xù)執(zhí)行后面語句。當所有情況都不滿足(E的值與所有情況常量的值都不相等)時,執(zhí)行default:后面的語句組。,3.3.2 多分支語句,注意1:如果case后面的語句組不跟隨break語句,則在執(zhí)行第一個符合條件的語句組后將不判斷后面的條件,將直接依次執(zhí)行其它情況常量后面的語句組。 注意2:switc
13、h語句中可以省略default子句。在這種情況下,當所有情況都不滿足時,將不執(zhí)行任何語句組,直接跳出switch語句。,3.3.2 多分支語句,#include void main() int score; int k; scanf(%d, ,【例3-10】編寫程序,輸入一個百分制成績,對應輸出等級A、B、C、D、E。90分以上為A,80分89分為B,70分79分為C,60分69分為D,60分以下為E。,3.3.2 多分支語句,2說明 (1)switch語句的作用是建立多路分支程序結構。 (2)switch后面括號中的E的值通常為整型或字符型。 (3)其中,c_E1c_En稱為情況常量,通常為
14、整型或字符型常量。 (4)關鍵字case和后面的情況常量之間至少要用一個空格隔開。 (5)E的值的類型要與情況常量的值類型相同。 (6)每個情況常量的值必須互不相同。,3.3.2 多分支語句,(7)各個case和default出現(xiàn)的次序不影響執(zhí)行結果。 (8)每個情況常量后都跟一個語句組,也就是符合該情況時,要執(zhí)行的若干語句。 (9)格式用中括號“”和“”括起來的break;為任選項,根據(jù)程序需要。 (10)執(zhí)行完case后面的語句組后,如果沒有遇到break語句,接著執(zhí)行下面case后的語句,直到switch語句結束。 (11)正確使用break語句可以控制switch語句的流程。,3.4
15、循環(huán)結構,本節(jié)內(nèi)容,3.4.2 while循環(huán)語句,3.4.3 do-while循環(huán)語句,3.4.4 循環(huán)嵌套,3.4.1 for循環(huán)語句,3.4.5 三種基本結構的綜合應用,3.4 循環(huán)結構,到目前為止,我們討論的程序無論是簡單語句還是條件語句都是按從上向下的順序執(zhí)行的。在解決實際問題中,有許多情況是要重復做某件事情,如果僅用前面介紹的方法編程,那是十分麻煩的,有時是不可能的。這類問題的解決需要用程序設計中的循環(huán)結構。在C語言中,循環(huán)結構可以用for、while、do-while三種循環(huán)語句來完成。,3.4.1 for循環(huán)語句,for語句的特點是結構清晰,簡潔有效。 1格式 for(表達式1
16、;表達式2;表達式3) 語句組; 2功能 for循環(huán)語句用于構成程序的循環(huán)結構。,3.4.1 for循環(huán)語句,3組成 for:為語句關鍵字; 表達式1:通常為賦值語句,用于為循環(huán)控制變量賦初值。循環(huán)控制變量是控制循環(huán)次數(shù)的變量。 表達式2:通常為關系表達式或邏輯表達式語句,用于對循環(huán)條件進行判斷;滿足條件則繼續(xù)循環(huán),不滿足條件則終止循環(huán)。所謂滿足條件就是表達式2的值為非0,否則就是不滿足條件。 如果在for循環(huán)語句中缺少“表達式2”,則默認循環(huán)條件為真,這時構成了無限循環(huán)。例如:for(i=1;i+),3.4.1 for循環(huán)語句,表達式3:通常為自增或自減表達式語句,有時為賦值語句,用于改變循
17、環(huán)控制變量的值。(注意:表達式3后面無分號) 語句組:語句組為循環(huán)體,是被循環(huán)的對象,它可以是單個語句或多個語句,甚至是另一個循環(huán)語句,也就是循環(huán)的嵌套。當為復合語句時,必須用花括號“”和“”括起來。 當語句組只有一句時,可省略花括號(或者說,如果不加花括號,則循環(huán)體的范圍只到for后面第一個分號處)。,3.4.1 for循環(huán)語句,4執(zhí)行過程 (1)計算“表達式1”,為循環(huán)變量賦初值?!氨磉_式1”只是在剛進入循環(huán)語句時計算1次,以后再不計算! (2)計算“表達式2”,判斷循環(huán)條件是否滿足。若“表達式2”的值為真(非0),則順序執(zhí)行循環(huán)體中的語句,否則,for循環(huán)結束。 (3)順序執(zhí)行循環(huán)體中的
18、各語句,后進行下一步。 (4)計算“表達式3”,修改循環(huán)控制變量,然后轉到(2)。,3.4.1 for循環(huán)語句,N,Y,Y,3.4.1 for循環(huán)語句,#include void main() int i,s=0; for(i=1;i=10;i+) s=s+i; printf(s=%dn,s); ,【例3-11】編寫計算s=1+2+3+10的程序。,3.4.1 for循環(huán)語句,#include void main() int i,n,s=1; printf(please input n:n); scanf(%d, ,【例3-12】輸入一個數(shù)n(10),求n!。,3.4.1 for循環(huán)語句,#i
19、nclude void main() int i; int n; float s=1,p=0; printf(please input n:n); scanf(%d, ,【例3-13】編寫程序,輸入n,求1+1/2!+1/n!,3.4.2 while循環(huán)語句,while循環(huán)語句 while循環(huán)語句可以用來實現(xiàn)“當型”循環(huán)結構。 1格式 while(表達式) 語句組; 2功能: 構成首先判斷循環(huán)條件的程序結構,其特點是先判斷表達式的值,而后執(zhí)行語句。,3.4.2 while循環(huán)語句,3組成 while:為語句關鍵字。 表達式:表達式為決定是否繼續(xù)進行循環(huán)的判斷條件。通常為關系表達式或邏輯表達式。
20、當表達式的值為非0時,即滿足循環(huán)條件;否則不滿足。 語句組:語句組為循環(huán)體,可以是單一語句,也可以是復合語句,或內(nèi)嵌其他結構。 4執(zhí)行過程: 先計算表達式的值,這個值為非0,則執(zhí)行循環(huán)體;否則,循環(huán)結束,執(zhí)行while循環(huán)后面的語句。,3.4.2 while循環(huán)語句,3.4.2 while循環(huán)語句,#include void main() int i=1,s=0; while(i=10) s+=i+; printf(s=%dn,s); ,【例3-14】用while循環(huán)語句編寫計算s=1+2+3+10的程序。,3.4.2 while循環(huán)語句,#include void main() int i=
21、1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i+; ,【例3-15】編寫一程序,求110的平方。,3.4.3 do-while循環(huán)語句,do-while循環(huán)語句 這種循環(huán)結構與while循環(huán)語句的區(qū)別是do-while是先執(zhí)行后判斷,while是先判斷后執(zhí)行。 1格式 do 語句組; while(表達式); 2用途 構成后判斷循環(huán)條件的程序結構,循環(huán)體至少執(zhí)行一次。,3.4.3 do-while循環(huán)語句,3組成 do和while:為循環(huán)語句的關鍵字。 表達式:決定是否繼續(xù)循環(huán)的條件,與while的同理。 語句組:語句組為循環(huán)體。 注意,此結構中,最后要以
22、分號結束: while(表達式); 4執(zhí)行過程 先執(zhí)行循環(huán)體,然后計算判斷表達式的值,根據(jù)這個值來決定是否繼續(xù)執(zhí)行循環(huán)體。如果表達式的值為非0,則轉去執(zhí)行循環(huán)體;否則,循環(huán)結束。循環(huán)體中的語句至少執(zhí)行一次。,3.4.3 do-while循環(huán)語句,3.4.3 do-while循環(huán)語句,#include void main() int i=1,s=0; do s+=i+; while(i=10); printf(s=%dn,s); ,【例3-16】用do-while循環(huán)語句編寫計算s=1+2+3+10的程序。,3.4.4 循環(huán)嵌套,一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結構,就稱為循環(huán)的嵌套。內(nèi)嵌的循
23、環(huán)中還可以嵌套循環(huán),這就是多層循環(huán)嵌套。三種循環(huán)可以互相嵌套,嵌套的層數(shù)不限。 循環(huán)嵌套的執(zhí)行流程是從外層循環(huán)開始執(zhí)行,再進入內(nèi)層循環(huán)執(zhí)行,內(nèi)層循環(huán)執(zhí)行完畢后,退到外層循環(huán)繼續(xù)執(zhí)行。,3.4.4 循環(huán)嵌套,#include void main() int i=1,j=1; for(i=1;i=5;i+) for(j=1;j=i;j+) putchar(*); putchar(n); ,【例3-17】編程輸出如下圖形:,* * * * *,3.4.4 循環(huán)嵌套,#include void main() int i,j; for(i=1;i10;i+) for(j=1;j=i;j+) printf
24、(%d*%d=%dt,j,i,i*j); printf(n); ,【例3-18】編寫一程序,輸出九九表。,3.4.5 三種基本結構的綜合應用,#define PI 3.14159 #include void main() int r=1; float area; for(r=1;r=10;r+) area=PI*r*r; if(area100) printf(%fn,area); ,【例3-19】輸出半徑從1到10的圓面積,直到面積大于100時停止。,3.4.5 三種基本結構的綜合應用,#include #include void main() int x,i; int flag=1; printf(input x:n); scanf(%d,if(x=2) flag=0; for(i=2;i=sqrt(x);i+) if(x%i=0) flag=0; if(flag=1) printf(yesn); else
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個性化施工承攬協(xié)議范本2024版版
- 2025年高校外籍教師任聘及學術交流服務協(xié)議3篇
- 2025年度門窗安裝與室外遮陽系統(tǒng)合同3篇
- 二零二五年度洗煤廠煤場租賃與環(huán)保教育培訓協(xié)議4篇
- 二零二四年學校圖書管理員勞動合同6篇
- 2025版煤炭行業(yè)人才招聘居間服務協(xié)議4篇
- 二零二四年度債權債務轉讓與資產(chǎn)重組及權益保障服務合同3篇
- 2025版智能窗戶系統(tǒng)安裝與遠程監(jiān)控服務合同3篇
- 二零二五年度苗木電商平臺開發(fā)與運營合同4篇
- 2025年度個人二手車交易合同(二手車金融貸款配套版)4篇
- 氣動調節(jié)閥調校
- 中考模擬考試化學試卷與答案解析(共三套)
- 新人教版五年級小學數(shù)學全冊奧數(shù)(含答案)
- 風電場升壓站培訓課件
- 收納盒注塑模具設計(論文-任務書-開題報告-圖紙)
- 博弈論全套課件
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 腦電信號處理與特征提取
- 高中數(shù)學知識點全總結(電子版)
- GB/T 10322.7-2004鐵礦石粒度分布的篩分測定
- 2023新譯林版新教材高中英語必修一重點詞組歸納總結
評論
0/150
提交評論