第3章控制結(jié)構(gòu) -1_第1頁
第3章控制結(jié)構(gòu) -1_第2頁
第3章控制結(jié)構(gòu) -1_第3頁
第3章控制結(jié)構(gòu) -1_第4頁
第3章控制結(jié)構(gòu) -1_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第3章章 控制結(jié)構(gòu)控制結(jié)構(gòu) 主要內(nèi)容主要內(nèi)容3.1 基本控制結(jié)構(gòu)基本控制結(jié)構(gòu)3.2 程序中的控制運算符程序中的控制運算符3.3 程序中的選擇結(jié)構(gòu)程序中的選擇結(jié)構(gòu)3.4 程序中的循環(huán)結(jié)構(gòu)程序中的循環(huán)結(jié)構(gòu)3.5 蒙特卡羅法與隨機數(shù)函數(shù)蒙特卡羅法與隨機數(shù)函數(shù)3.6 位運算符位運算符/173.1 基本控制結(jié)構(gòu)基本控制結(jié)構(gòu)結(jié)構(gòu)名稱結(jié)構(gòu)名稱傳統(tǒng)流程圖傳統(tǒng)流程圖N-SN-S流程圖流程圖順序結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)3.1.1 基本語句基本語句空語句空語句(Empty Statement) ;表達式語句表達式語句(Expression Statement) 賦值語句賦值語句(Assignm

2、ent Statement)函數(shù)調(diào)用語句函數(shù)調(diào)用語句(Function Invocation Statement)控制語句控制語句(Control Flow Statement)復合語句復合語句(Compound Statement)/173.1.2 常用的輸入輸出函數(shù)常用的輸入輸出函數(shù)格式輸出函數(shù)格式輸出函數(shù) printf()格式輸入函數(shù)格式輸入函數(shù) scanf()字符輸入函數(shù)字符輸入函數(shù) getch() 和和 getchar()同:都是從終端輸入一個字符作為函數(shù)的值。異:getch() 無回顯讀入,不需要回車確認。 getchar() 需要回車確認。字符輸出函數(shù)字符輸出函數(shù)putch()和

3、和putchar()#include main()char c=B;/將將c的值輸出至的值輸出至Screenputch(65);/輸出輸出ASCII碼為碼為65的字母的字母Aputch(n); /輸出轉(zhuǎn)義字符輸出轉(zhuǎn)義字符n,實現(xiàn)換行顯示,實現(xiàn)換行顯示putch(c); /輸出字符變量輸出字符變量c的值字母的值字母Bgetch(); /17字符輸入及輸出函數(shù)示例字符輸入及輸出函數(shù)示例從鍵盤輸入大寫字母,輸出對應的小寫字母和ASCII碼分析:英文字母相應的大寫與小寫ASCII碼相差32(= a-A),將大寫字母的ASCII碼加32(或a-A),即可得出相應的小寫字母的ASCII碼。#include

4、 #include main()char c1,c2;printf(char=);/prompt語句語句c1=getchar();/從終端輸入一字符并賦給從終端輸入一字符并賦給c1putch(c1); /將將c1的值輸出至的值輸出至Screenprintf(%4dn,c1); /輸出輸出c1的的ASCII碼值碼值c2=c1+32;/大寫字母轉(zhuǎn)小寫字母大寫字母轉(zhuǎn)小寫字母putch(c2); /將將c2的值輸出至的值輸出至Screenprintf(%4dn,c2);/輸出輸出c2的的ASCII碼值碼值getch();/173.1.3順序結(jié)構(gòu)程序設計示例順序結(jié)構(gòu)程序設計示例例例 求圓的面積和周長。求

5、圓的面積和周長。 數(shù)據(jù)分析數(shù)據(jù)分析: 輸入量: 半徑 r, float輸出量: 面積 s, 周長l, float 算法分析算法分析: 輸入半徑 r。計算面積s。計算周長l。輸出面積s和周長l。 3.1.3順序結(jié)構(gòu)程序設計示例順序結(jié)構(gòu)程序設計示例例例 求圓的面積和周長。求圓的面積和周長。#define PI 3.141593 /定義一個宏定義一個宏P(guān)I,將,將PI作為符號常量作為符號常量#include #include main() float r, s, m; /定義所使用的變量定義所使用的變量 printf(Enter the radius:); /提示信息提示信息 scanf(%f, &

6、r); /輸入已知量輸入已知量 s=PI*r*r/計算待求量計算待求量 m=2*PI*r; printf(s=%fn,s);/輸出所求值輸出所求值 printf(m=%fn,m); getch(); Enter the radius: 1 s= 3.141593m=6.2831863.1.3順序結(jié)構(gòu)程序設計示例順序結(jié)構(gòu)程序設計示例例例已知三角形的兩邊邊長及其夾角,求此三角形的第3邊的邊長。 分析分析: 設三角形的三邊長分別為a、b、c,已知兩邊長a,b及其夾角(取變量名為alfa)。則由 c2=a2+b2-2abcos 可得出c。算法分析算法分析: 輸入兩邊邊長a,b及夾角 alfa計算第三邊

7、邊長c輸出第三邊邊長 c3.1.3順序結(jié)構(gòu)程序設計示例順序結(jié)構(gòu)程序設計示例例例已知三角形的兩邊邊長及其夾角,求第三邊邊長。已知三角形的兩邊邊長及其夾角,求第三邊邊長。#include #include /程序中調(diào)用了數(shù)學函數(shù)程序中調(diào)用了數(shù)學函數(shù)sqrt及及cos #include main() float a, b, c, p, alfa; /將角度將角度定義為變量定義為變量alfa printf(Enter two sides of a triangle and included angle: n);/在程序運行輸入數(shù)據(jù)之前給出提示信息在程序運行輸入數(shù)據(jù)之前給出提示信息 scanf(%f %

8、f %f,&a,&b,&alfa); /輸入兩邊及夾角輸入兩邊及夾角 p=a*a+b*b-2*a*b*cos(alfa*3.14/180); c=sqrt(p); /求第三邊邊長求第三邊邊長c printf(“c=%fn”,c);/輸出第三邊邊長輸出第三邊邊長c的值的值 getch(); Enter two sides of a triangle and included angle: 3 4 90c=4.9980883.2程序中的控制運算符程序中的控制運算符3.2.1關(guān)系運算符關(guān)系運算符(relational operator)關(guān)系運算符關(guān)系運算符: 小于小于大于大于= 大于等于大于等于 =

9、 等于等于!= 不等于不等于Relational operators take expressions as operands and evaluate to type int. They will always evaluate to either 1 (true), or 0 (false).結(jié)果是一個邏輯量,即“真”或“假”,分別用整數(shù)1和0表示。注意注意: :區(qū)分區(qū)分=號和號和=號。號。避免對實數(shù)作相等或不等的判斷。避免對實數(shù)作相等或不等的判斷。正確表示數(shù)學上的連續(xù)不等式。正確表示數(shù)學上的連續(xù)不等式。 321 與與 32&21 3.2.2 邏輯運算符(邏輯運算符(logical ope

10、rator)邏輯運算符邏輯運算符: ! 邏輯非邏輯非& 邏輯與邏輯與| 邏輯或邏輯或The logical operator ! is called the negation operator. It is a unary operand because it has one operand. Dont confuse negation with unary minus. !5 = ?結(jié)果是一個邏輯量,即結(jié)果是一個邏輯量,即“真真”或或“假假”,分別用整數(shù),分別用整數(shù)1和和0表示。表示。短路特性短路特性(short-circuit evaluation)a&b&c a|b|c 在在C語言中表示

11、條件語言中表示條件判斷某一字符(變量判斷某一字符(變量ch表示)是否英文字母表示)是否英文字母 A =ch & ch= Z | a =ch & chb)?a:b;等價于等價于if(ab) max=a; else max=b; 例例 判斷鍵盤輸入的一個字符是否為大寫字母,如果是則轉(zhuǎn)換為小判斷鍵盤輸入的一個字符是否為大寫字母,如果是則轉(zhuǎn)換為小寫字母,否則不轉(zhuǎn)換。輸出處理后的字符。寫字母,否則不轉(zhuǎn)換。輸出處理后的字符。#include main() char ch; scanf(%c,&ch); ch=(ch=A&chy) x+; y+;3.3.1 if語句語句if語句格式語句格式1示例示例例例從鍵

12、盤上輸入一個數(shù)從鍵盤上輸入一個數(shù)x,若,若x大于等于大于等于0,則則y=1;若;若x小于小于0,則,則y=-1。#include #include main() float x; int y; printf(“x=”); scanf(“%f”,&x); if (x=0) y=1; if (xy) x+; else y+;3.3.1 if語句語句例例已知三角形的三條邊已知三角形的三條邊a、b、c,求面積求面積area。分析分析:若a、b、c滿足任意2數(shù)之和大于第3個數(shù)的條件,則三邊可以構(gòu)成三角形,此時計算并顯示結(jié)果;反之,三邊不構(gòu)成三角形,此時給出錯誤提示。)(21cbas)()(csbsass

13、area,if語句格式語句格式2示例示例if if語句格式語句格式2 2示例示例#include #include #include main() float a,b,c,s,area; printf(Side a=);scanf(%f,&a); printf(Side b=);scanf(%f,&b); printf(Side c=);scanf(%f,&c); if(a+bc&a+cb&b+ca)s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(area=%6.2fn,area); elseprintf(Data error,reentr

14、y!); getch();Side a=4 Side b=5 Side c=6 area=9.92在在if語句中的語句中的語句語句處又是處又是if語句,則稱為語句,則稱為if語句語句的嵌套。一般格式如下:的嵌套。一般格式如下:if(表達式表達式1)if(表達式表達式2)語句語句1else語句語句2elseif(表達式表達式3)語句語句3else語句語句4 在嵌套的在嵌套的if語句中,習慣寫成鋸齒形,以增加程序的可語句中,習慣寫成鋸齒形,以增加程序的可讀性。讀性。 3.3.1 if3.3.1 if語句語句內(nèi)層的if語句如果是簡化的if,如:if(表達式表達式1)if(表達式表達式2)語句語句1e

15、lse語句語句2從最內(nèi)層開始,else總是與它上面最近的、未曾配對的if配對。嵌套的嵌套的if if語句語句if語句的格式語句的格式3 (Multiple selection)else-if格式格式if(表達式表達式1)語句語句1else if(表達式表達式2)語句語句2else if(表達式表達式3)語句語句3.else if(表達式表達式n)語句語句nelse 語句語句n+13.3.1 if3.3.1 if語句語句例:輸入考試成績的等級,打印出百分制分數(shù)段例:輸入考試成績的等級,打印出百分制分數(shù)段(A等等85分以上,分以上,B等等7084,C等等6069,D等等60以下)。以下)。main

16、() char grade;scanf(%c,&grade);if(grade=A) printf(85100n);else if(grade=B) printf(7084n);else if(grade=C) printf(6069n);else if(grade=D) printf(60n);else printf(Errorn);3.3.1 if語句語句語法格式:語法格式: switch (表達式表達式) case 常量表達式常量表達式1:語句語句1 case 常量表達式常量表達式2:語句語句2 . . . case 常量表達式常量表達式n:語句語句n default: 語句語句n+1

17、3.3.2 3.3.2 switch語句語句上例中的if部分可以考慮寫成下面的switch語句:switch(grade)case A: printf(85100n);case B: printf(7084n);case C: printf(6069n);case D: printf(60n);default: printf(Errorn);if(grade=A) printf(85100n);else if(grade=B) printf(7084n);else if(grade=C) printf(6069n);else if(grade=D) printf(60n);else print

18、f(Errorn); 若grade=C,則輸出:606960Error3.3.2 3.3.2 switch語句語句改進的改進的switch語句語句語法格式語法格式: :switch(表達式表達式)case 常量常量1:語句:語句1;break;case 常量常量2:語句:語句2;break; . . .case 常量常量n:語句:語句n;break;default:語句:語句n+1; 改進后的switch語句:switch(grade)case A: printf(85100n);break;case B: printf(7084n); break;case C: printf(6069n);

19、 break;case D: printf(60n); break;default: printf(Errorn);若grade=C,則輸出:6069多個多個case可以共用一組執(zhí)行語句。如:可以共用一組執(zhí)行語句。如:switch(grade)case A: case B: case C: printf(60100n);break;case D: printf(60n);break;default: printf(Errorn);改進的改進的switch語句語句就一個表達式的判斷(條件滿足就一個表達式的判斷(條件滿足/條件不滿足)而言,條件不滿足)而言,一次只能產(chǎn)生兩條分支。一次只能產(chǎn)生兩條分

20、支。實際應用中,選擇時常常有可能面臨多條分支,這實際應用中,選擇時常常有可能面臨多條分支,這時就會使用時就會使用嵌套嵌套的的if語句或者語句或者switch語句語句或者兩種語或者兩種語句嵌套組合。句嵌套組合。 x (x2) 例例 y= 2x-1 (2x10) 3x+10 (x10) 任意輸入任意輸入x,輸出輸出y, 編寫程序?qū)崿F(xiàn)該函數(shù)。編寫程序?qū)崿F(xiàn)該函數(shù)。方法一:用方法一:用if語句形式編寫語句形式編寫方法二:用方法二:用if-else if語句形式編寫語句形式編寫方法三:用方法三:用switch語句編寫程序語句編寫程序3.3.33.3.3多重選擇結(jié)構(gòu)多重選擇結(jié)構(gòu)(Multiple selec

21、tion structure) )x=3.563.560000,6.120000選擇結(jié)構(gòu)程序設計綜合舉例選擇結(jié)構(gòu)程序設計綜合舉例方法一:用方法一:用if語句形式編寫語句形式編寫#include #include main()float x, y;printf(x=);scanf(%f,&x);if(x2) y=x;if(2=x & x=10) y=3*x+10;printf(%f,%fn,x,y);getch();選擇結(jié)構(gòu)程序設計綜合舉例選擇結(jié)構(gòu)程序設計綜合舉例方法二:用方法二:用if-else if語句語句#include #include main()float x, y;printf(x

22、=);scanf(%f,&x);if(x2) y=x;else if(2=x & x=10) y=3*x+10;printf(%f,%fn,x,y);getch();選擇結(jié)構(gòu)程序設計綜合舉例選擇結(jié)構(gòu)程序設計綜合舉例#include #include main()float x,y;int z;printf(x=);scanf(%f,&x);z=1*(x2)+2*(2=x & x=10); switch(z) case 1:y=x;break; case 2:y=2*x-1;break; case 3:y=3*x+10;printf(%f,%fn,x,y);getch();方法三:用方法三:用switch語句語句例 輸入年、月,輸出該月有多少天。分析:每年的1、3、5、7、8、10、12月有31天;4、6、9、11月有30天;2月閏年有29天,平年有28天。年號能被4整除,但不能被100整除,或者年號能被400整除的年均是閏年。設年份為year,判斷year是否閏年:if(year%4=0&year%100!=0|year%400=0) 選擇結(jié)構(gòu)程序設計綜合舉例選擇結(jié)構(gòu)程序設計綜合舉例main()int year,month,days;printf(輸入年輸入年,月:月:);scanf(%d,%d,&year,&month);switch(month)case 1:cas

溫馨提示

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

最新文檔

評論

0/150

提交評論