二級考試C語言程序設計.ppt_第1頁
二級考試C語言程序設計.ppt_第2頁
二級考試C語言程序設計.ppt_第3頁
二級考試C語言程序設計.ppt_第4頁
二級考試C語言程序設計.ppt_第5頁
已閱讀5頁,還剩102頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、本章導讀 本章從實例分析著手,使讀者了解并掌握C語言三種基本流程控制結構:順序、選擇、循環(huán)結構 ,加深對C語言程序開發(fā)設計過程的感性認識,強化培養(yǎng)編程思路,為進一步進行C語言程序設計打下基礎。,第3章 結構化程序設計,本章主要知識點 (1) 順序結構及程序設計。 (2)選擇結構及程序設計。 (3)循環(huán)結構及程序設計。 (4)結構化程序設計方法、編程思路與綜合實訓,第3章 結構化程序設計,3.2 選擇結構程序設計,3.3 循環(huán)結構程序設計,3.4 結構化程序設計方法與綜合實訓,3.1 順序結構程序設計,3.1.2 順序結構語句,3.1.3 程序實訓,3.1.1 順序結構的C程序實例,3.1 順序

2、結構程序設計,3.1.1 C程序實例,C程序實例,【例3.1】編程實現(xiàn):輸入一個長方形的二邊長,求長方形的面積并輸出。 /*程序名為l3_1.cpp。*/ #include stdio.h main() float a,b,s; scanf(%f%f, ,程序運行情況如下: 輸入: 3.0 4.0 輸出: The area of rectangle is 12.00 . 這個程序屬于順序結構,程序是按照書寫的順序自上而下一步步執(zhí)行,程序中的每一條語句都被執(zhí)行一次,且僅能被執(zhí)行一次。,【例3.1】編程,3.1.2 順序結構語句1,C語言的順序結構語句可以分為四大類: 1.表達式語句 表達式的后面

3、加一個分號就構成了一個語句,例如:sum=a+b; 。事實上,C語言中有使用價值的表達式語句主要有3種: (1)賦值語句。 例如: sum=a+b; (2)自動增1、減1運算符構成的表達式語句。例如: i+; (3)逗號表達式語句。例: x=1,y=2; 2.空語句 語句僅有一個分號“;”,它表示什么也不做。一般和后面章節(jié)所講循環(huán)語句結合使用起到延時作用。 3. 復合語句 由和把一些變量定義和執(zhí)行語句組合在一起,稱之為復合語句,又稱語句塊。復合語句的語句形式如下: 語句1;語句2;語句n;,例如:int a=0,b=1,sum; sum=a+b; printf(%d,sum); 【注意】與C語

4、言中的其他語句不同,復合語句不以分號作為結束符,若復合語句的后面出現(xiàn)分號,那不是該復合語句的組成成分,而是單獨的一個空語句。在復合語句起始部分可以有變量定義,如:int a=0,b=1,sum;,也可以沒有。復合語句的內可能會有多個語句,但在語法上把它整體上視為一條語句看待。 4.函數(shù)調用語句 由一個函數(shù)調用加上一個分號組成一個語句,如: scanf(%d%d,3.1.2 順序結構語句2,Printf()函數(shù),輸出格式控制符必須以“%”號開始,后面跟格式字符,格式字符用于限定被輸出數(shù)據(jù)的格式。輸出int型用%d,字符型數(shù)據(jù)用%c,字符串用%s,輸出float型和double型數(shù)據(jù)用%f,Sca

5、nf()函數(shù),用雙引號括起來的用于表示輸入格式的字符串,它有格式控制符和普通字符兩部分組成。 用%開始,后面跟格式字符,用于以制定的格式輸入數(shù)據(jù)。 地址列表由若干輸入數(shù)據(jù)項的內存地址組成。 scanf(“%d%d”, ,【例3.2】由鍵盤輸入兩個整數(shù)給變量a和b,然后輸出a和b,在交換a和b中的值后,再輸出a和b,驗證兩個變量中的數(shù)值是否正確地進行了交換。 /*程序名為l3_2.cpp。*/ #include stdio.h main() int a,b,t; printf(Enter a and b:n); scanf(%d%d, 程序運行情況如下: Enter a and b: 123 4

6、56 a=123,b=456 a=456,b=123,3.1.3 程序實訓【例3.2】,5,5,b,a,5,c,注意:在程序中交換兩個變量a 和b的值,不可以簡單地用: a=b;b=a;兩條語句來實現(xiàn)。假設a 和b的值分別為23和78,賦值語句a=b;將使a的值變?yōu)?8,接下來的b=a;使b的值變?yōu)?8,這樣,a和b的值最終都變?yōu)?8。所以在本例中引入了中間變量t,用來臨時存放a的值,這樣才能完成變量a和b的正確交換。,【例3. 3】輸入一個double類型的數(shù),使該數(shù)保留小數(shù)點后兩位,對第三位小數(shù)進行四舍五入處理,然后輸出此數(shù),以便驗證處理是否正確。 /*程序名為l3_3.cpp。*/ #i

7、nclude stdio.h main() double x; printf(Input x:n); scanf(%lf,3.1.3 程序實訓【例3.3】,3.1.3 程序實訓【例3. 3】,printf(1) x=%fn,x); /*將x輸出*/ x=x*100; x=x+0.5; x=(int)x; x=x/100; /*將x擴大100倍,加上0.5之后取整,再縮小100倍*/ printf(2) x=%fn,x); /*將四舍五入后的x輸出*/ 程序運行情況如下: Input x:3.14159 則輸出的結果為: (1) x=3.141590 (2) x=3.140000,有以下程序:

8、#include main() char a,b,c,d; scanf(%c%c, scanf(“%c”, ,練習7:給出三角形的三邊長,求三角形的面積。,#include #include Main() double a,b, c,s, area; scanf(“%f%f%f”, ,練習:,求一個圓柱形的表面積.,3.2 選擇結構程序設計,3.2.1 選擇結構的C程序實例,3.2.2 if 語句,3.2.3 switch 語句,3.2.4 程序實訓,3.2.1 選擇結構的 C程序實例,【例3.5】請輸入兩個整數(shù)a,b,比較a+b和ab哪個大,輸出判斷結果。 /*程序名為l3_5.cpp。*/

9、 #include stdio.h main() int a,b,s1,s2; printf(請輸入兩個整數(shù)a,b:); scanf(%d,%d, /*語句B*/ ,運行結果為: 請輸入兩個整數(shù)a,b:2,3 (a+b)s2,則執(zhí)行語句A(跳過語句B不執(zhí)行),否則,就跳過語句A執(zhí)行語句B??梢奿f語句在程序中起到了改變語句執(zhí)行順序的作用。if語句就是我們在下一節(jié)中要介紹的條件分支語句。,3.2.1 選擇結構的 C程序實例結果,3.2.2 if 語句,. if語句的一般形式,2. if-else中的復合語句,3. 非關系、非邏輯表達式構成的條件表達式,4. if語句的嵌套,. if語句的一般形式

10、1,1if語句的一般形式: if語句有兩種形式: (1)不含else子句的if語句 語句形式如下: if() 例如if(ab) t=a;a=b;b=t; 其中,if是C語言的關鍵字,表達式兩側的圓括號不可少,最后是一條語句,稱為if子句。如果在if子句中需要多個語句,則應該使用花括號把一組語句括起來組成復合語句,這樣在語法上仍滿足一條語句的要求。 執(zhí)行過程:首先計算緊跟在if后面一對圓括號中的表達式的值,如果該表達式的值為非零(“真”),則執(zhí)行其后的if子句,然后去執(zhí)行if語句后的下一個語句。如果該表達式的值為零(“假”),則跳過if子句,直接執(zhí)行if語句后的下一個語句。,. if語句的一般形

11、式2,(2)含else子句的if語句 語句形式如下: if() else 執(zhí)行過程:首先計算的值,如果該表達式的值為非零(真),則執(zhí)行,如果該表達式的值為零(假),則跳過,直接執(zhí)行,兩者執(zhí)行其一后再去執(zhí)行if語句后的下一個語句。,. if語句的一般形式實例,【例3.6】求分段函數(shù)的值,如果x0, y=2x+1,否則, y=0 。 #include stdio.h main() /*程序名為l3_6.cpp。*/ int x,y; /*變量y存放f(x)的值*/ printf(請輸入x的值:); scanf(%d, ,. if語句的一般形式實例,運行結果: 請輸入x的值:3 當x=3時,f(x)

12、=7 因為輸入x=3,那么x=0為真,所以輸出2*3+1=7。 C語言中有一種特有的條件運算符“?:”,我們在前面章節(jié)已作介紹,它在某種程序上可以起到邏輯判斷的作用。本例中的if語句也可用條件運算符表達式實現(xiàn)如下: y=x=0?2*x+1:0; 但有些判斷不能用條件表達式完成,或者很繁瑣、表達不清晰。,2. if-else中的復合語句,2. if-else中的復合語句,如果兩個分支中需要執(zhí)行的語句不止一條,必須用“”括起來,作為一個復合語句使用。若只是一條語句,“”可以省略。 【注意】 (1)if后面的一定要有括號; (2)if和else同屬于一個if語句,else不能作為語句單獨使用,它只是

13、if語句的一部分,與if配對使用,因此程序中不可以沒有if而只有else; (3)只能執(zhí)行與if有關的語句或者執(zhí)行與else有關的語句,而不可能同時執(zhí)行兩者; (4)如果和是非復合語句,那么該語句一定要以分號結束, (5)if語句的表達式可以是任意類型的C語言的合法的表達式,但計算結果必須為整型、字符型或浮點型之一。,【例3.10】以賦值表達式為分支條件的實例。 /*程序名為l3_10.cpp。*/ #includestdio.h main() int s; if(s=2) printf(hello); else printf(error); ,分支條件的類型不限于邏輯/關系表達式,可以是任意

14、的C語言有效表達式(如賦值表達式,算術表達式等等),因此也可以是作為表達式特例的常量或變量。,3.非關系、非邏輯表達式構成的條件表達式1,3.非關系、非邏輯表達式構成的條件表達式2,【例3.10】中的條件表達式是一個賦值表達式,并不是判斷s是否等于2。相當于if(2)printf(hello);,這是合法的。由于該條件表達式的值是非零值,恒為真,故本程序的printf(error);無論如何都不會被執(zhí)行。if語句最終執(zhí)行哪一個分支,取決于條件表達式的計算結果。同一個條件的也可以用多種表達方式。 【例3.11】以變量為分支條件的實例。 /*程序名為l3_11.cpp。*/ #include st

15、dio.h main() int x,y; scanf(%d,3.非關系、非邏輯表達式構成的條件表達式3,printf(y=%dn,y); 現(xiàn)把程序中if(x)改成if(x!=0),此時雖然條件表達式寫法不同,但是完成的功能是相同的。 下面兩種表示方法經常使用: if(x)等價于if(x!=0) if(!x)等價于if(x=0),例1:輸入兩個實數(shù),按代數(shù)值由小到大的順序輸出這兩個數(shù)。,#include Main() float a,b,t; scanf(“%f%f”, ,#include Main() char ch; scanf(“%c”,例2:輸入一個字符,判斷它是否為大寫字母,如果是,

16、轉換為小寫字母,然后輸出最后得到的字符,例3:判斷用year表示的某一年是否閏年。閏年的條件是符合以下條件之一:1、能被4整除,但不能被100整除。2、能被400整除。,#include Main() int year; scanf(“%d”, ,例4:輸入三個實數(shù),按由小到大的順序輸出這三個數(shù)。,#include Main() float a,b,c,t; scanf(“%f%f%f”, ,4. if語句的嵌套1,在一個if語句中又包含另一個if語句,從而構成了if語句的嵌套使用。內嵌的if語句既可以嵌套在if子句中,也可以嵌套在else子句中。例如:,【例3.12】輸入a,b兩個整數(shù)的值,

17、比較大小并輸出結果。 #include stdio.h“ /*程序名為l3_12.cpp。*/ main() int a,b; printf(請輸入a,b:) ; scanf(%d%d, ,4. if語句的嵌套2,【注意】if語句的嵌套形式不是刻意去追求的,而是在解決問題過程中隨著解決問題的需要而采用的。 if與else的配對規(guī)則 if語句出現(xiàn)嵌套形式時,C語言規(guī)定:else子句總是和前面最近的不帶else子句的if語句配對,與書寫格式無關。注意從書寫格式要有層次感(好的程序員應該養(yǎng)成這一習慣,以便他人理解你的程序和自己將來的修改)。如果if的數(shù)目和else的數(shù)目相同,從內層到外層一一對應,不

18、易出錯。如果if與else的數(shù)目不一致,為實現(xiàn)編程者的意圖,必要的時候必須加,來強制確定配對關系。否則,就不能實現(xiàn)編程者的真正意圖。,4. if語句的嵌套實例1,【例3.13】寫出下列程序的輸出結果。 /*程序名為l3_13.cpp。*/ #includestdio.h main() int x=4,y=5,z=2,max; max=x; if(zy) if(zx) max=z; else if(yx) max=y; printf( max=%d,max); ,運行結果: max=4,4. if語句的嵌套實例2,【例3.14】編寫程序,根據(jù)輸入的學生成績,給出相應的等級。90分以上的等級為A,60分以下的等級為E,其余每10分一個等級。程序如下: #includestdio.h main() /*程序名為l3_14.cpp。*/ int g; printf(input g:); scanf(%d, ,4. if語句的嵌套實例3,當執(zhí)行以上程序時,首先輸入、輸出學生的成績,然后進入if語句; if語句中的表達式將依次對學生成績進行

溫馨提示

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

評論

0/150

提交評論