華中科技大學C++課件4_第1頁
華中科技大學C++課件4_第2頁
華中科技大學C++課件4_第3頁
華中科技大學C++課件4_第4頁
華中科技大學C++課件4_第5頁
已閱讀5頁,還剩88頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第四章第四章 循環(huán)控制循環(huán)控制代碼復用,省代碼復用,省時時省力省力LOGO循環(huán)定義及要點n循環(huán)就是反復執(zhí)行某些動作網(wǎng)絡與計算中心網(wǎng)絡與計算中心循環(huán)體 歸納出哪些操作需要反復執(zhí)行循環(huán)控制條件 這些操作在什么情況下重復執(zhí)行n 隨著循環(huán)不斷地執(zhí)行,必須有一種方法使得循環(huán)控制條件最終不成立,循環(huán)可以退出,否則,就構成死循環(huán),程序永遠無法終止。LOGO引例引例n在現(xiàn)實生活中,經(jīng)常會遇到評委打分的情況,比如奧運會中的跳水項目,評選優(yōu)秀班集體等。n評委打分的過程大致是這樣的,假設有n個評委,個評委,每個評委根據(jù)自己的判斷給出一個分值,然后在n個評委的打分中去掉最高分和最低分,對剩下的分數(shù)取平均值分數(shù)取平均值

2、。現(xiàn)在把問題簡化為不去掉最高分和最低分,直接取平均值作為選手的最終得分。LOGOEX4.1真假輸入一個評委的評分將評分累加到總分中求平均得分n評分: double score;n平均分: double avg;n評委人數(shù)nint n;n當前評委編號nint i;n總分: double sum;還有評委的評分沒有輸入LOGOEX4.1真假輸入一個評委的評分將評分累加到總分中求平均得分n評分: double score;n平均分: double avg;n評委人數(shù)nint n;n當前評委編號nint i;n總分: double sum;cinscore;sum+=score;avg=sum/n;還

3、有評委的評分沒有輸入i=nLOGOEX4.1真假nint n; /評委評委人數(shù)人數(shù)nint i; /當前評委編號當前評委編號ndouble score; /評分評分ndouble sum; /總分總分ndouble avg; /平均分平均分 iscore; sum+=score;avg=sum/n;i=1;sum=0;i+;LOGO4.14.1循環(huán)語句循環(huán)語句網(wǎng)絡與計算中心網(wǎng)絡與計算中心for循環(huán)語句while循環(huán)語句do-while循環(huán)語句多重循環(huán)LOGO4.1.1 for4.1.1 for語句語句規(guī)范的結構LOGOfor ( 表達式表達式1; 表達式表達式2; 表達式表達式3 ) 循環(huán)體循

4、環(huán)體語句語句 初始初始表達式:表達式:對表達式對表達式2 2中的循中的循環(huán)控制變量賦初值變量環(huán)控制變量賦初值變量 循環(huán)循環(huán)控制邏輯表達式控制邏輯表達式: 循環(huán)循環(huán)控制變量控制變量 循環(huán)后置循環(huán)后置表達式表達式: 改變改變表達式表達式2 2中的循環(huán)控制變量的值中的循環(huán)控制變量的值for 語句的格式LOGOEX4.1真假#includeusing namespace std;int main()int n=12; /評委人數(shù)評委人數(shù)int i; /當前評委編號當前評委編號double score; /評分評分double sum; /總分總分double avg; /平均分平均分 return 0

5、; iscore; sum+=score;avg=sum/n;i=1;sum=0;i+;LOGOEX4.1LOGOEX4.1sum=0;for( i=1; iscore; sum+=score; avg=sum/n;cout“avg=“avgendl;LOGOfor循環(huán)的變化形式n可以把賦初值的多個操作以逗號表達式的形式放在表達式1中。for( i=1,sum=0; iscore;sum+=score;for循環(huán)的變化形式LOGOfor循環(huán)的變化形式for循環(huán)的變化形式n表達式1可以為空,賦初值的操作可以放在循環(huán)語句之前 i=1; sum=0; for(; iscore;sum+=score;

6、LOGOfor循環(huán)的變化形式n表達式2可以為空,但兩個分號不能少,分號用來區(qū)分號用來區(qū)分分3個表達式個表達式,表達式2為空是表達式永遠為真的情況,需要在循環(huán)體中,根據(jù)一定的條件,以break語句跳出。for( i=1,sum=0; ; i+)if(in) break;cinscore;sum+=score;for循環(huán)的變化形式LOGOfor循環(huán)的變化形式n表達式3可以為空for( i=1,sum=0; iscore;sum+=score;i+;for循環(huán)的變化形式編程計算 s=1+2+3+4+100s=s+1s=s+2s=s+3s=s+100s=s+i ;i+;舉例:舉例:變量:變量: int

7、int s=0, i=1 s=0, i=1舉例延伸:舉例延伸:求 s=1-1/3+1/5-1/7+.+1/n求 e=1+1/1!+1/2!+1/3!+.+1/n!s=s+1/item*sign;item=item+2;sign=-sign;s=s+1/item;i=i+1;item=item*i;LOGO4.1.2 4.1.2 whilewhile語句語句當循環(huán)LOGOwhile (表達式表達式 ) 循環(huán)體循環(huán)體語句語句; 表達式while語句格式 循環(huán)開始前對循環(huán)條件進行初始化 在循環(huán)體語句中要包含修改循環(huán)條件的語句,否則循環(huán)將不能終止而陷入死循環(huán)。LOGOEX4.1sum=0;i=1;wh

8、ile ( iscore; sum+=score; i+;avg=sum/n;cout“avg=“avgendl;循環(huán)開始前對循環(huán)條件進行初始化在循環(huán)體語句中要包含修改循環(huán)條件的語句LOGOfor循環(huán)與while循環(huán)對比i=1;while ( iscore; sum+=score; i+;for( i=1 ; iscore; sum+=score; for循環(huán)while循環(huán) 結構上有差別 功能相同 循環(huán)初始表達式和后置表達式作為結構的一部分LOGO4.1.3 4.1.3 dodowhilewhile語句語句直到循環(huán)LOGO do-while 語句格式 表達式do 循環(huán)體循環(huán)體語句語句; whi

9、le (表達式表達式 );LOGOEX4.1真假cinscore; sum+=score;avg=sum/n;i=1;sum=0;i+;iscore; sum+=score; i+; while ( i=n );avg=sum/n;cout“avg=“avgi;while ( i=5 ) sum+=i; i+;cout“sum=“sumi;do sum+=i; i+; while ( i=5 );cout“sum=“sumendl;Dowhile循環(huán)i5LOGO4.1.4 4.1.4 三三種語句的共性和種語句的共性和區(qū)別區(qū)別依據(jù)實際問題選擇適合的語句LOGO三三種語句的共性和區(qū)別種語句的共性和

10、區(qū)別do-while 先執(zhí)行循環(huán)體,先執(zhí)行循環(huán)體,再判斷循環(huán)條再判斷循環(huán)條件是否滿足件是否滿足 至少執(zhí)行一次至少執(zhí)行一次while 先判斷條件是先判斷條件是否滿足,然后否滿足,然后才執(zhí)行循環(huán)體才執(zhí)行循環(huán)體 可能一次也不可能一次也不執(zhí)行。執(zhí)行。for 先判斷條件是先判斷條件是否滿足,然后否滿足,然后才執(zhí)行循環(huán)體才執(zhí)行循環(huán)體 可能一次也不可能一次也不執(zhí)行執(zhí)行LOGO三種語句的共性和區(qū)別可以相互替換,都能實現(xiàn)循環(huán)控制 如果循環(huán)次數(shù)已知或者能用表達式確定,則選擇如果循環(huán)次數(shù)已知或者能用表達式確定,則選擇for循環(huán)循環(huán) 循環(huán)次數(shù)未知時,一般選擇循環(huán)次數(shù)未知時,一般選擇while或者或者do-while循

11、環(huán)循環(huán) 在有些情況下,循環(huán)條件中的變量是在循環(huán)題中計算出在有些情況下,循環(huán)條件中的變量是在循環(huán)題中計算出來的,適合用來的,適合用do-while循環(huán)。循環(huán)。LOGO循環(huán)算法的設計循環(huán)條件表達式n找出決定循環(huán)次數(shù)的變量找出決定循環(huán)次數(shù)的變量n用這些變量構成表達式用這些變量構成表達式循環(huán)體:考慮一次循環(huán)過程的所有細節(jié)1. 每次循環(huán)要完成的每次循環(huán)要完成的目的操作目的操作2. 進入下一次循環(huán)前要進行的進入下一次循環(huán)前要進行的預處理操作預處理操作使用相同變量,相同程序語句完成每一次循環(huán)使用相同變量,相同程序語句完成每一次循環(huán)注意注意: 在每一次循環(huán)中,必須對決定循環(huán)執(zhí)行次在每一次循環(huán)中,必須對決定循環(huán)

12、執(zhí)行次數(shù)的變量的值進行數(shù)的變量的值進行更新更新LOGOEX4.4多少年: int i;初值: i=0;利滾利:循環(huán)結構循環(huán)控制變量:小張的積蓄小張的積蓄:double m;循環(huán)執(zhí)行條件:m20循環(huán)控制變量的初值: m=10;n小張現(xiàn)在有10萬元儲蓄,將這筆錢存在銀行,年利率為5%,并且利滾利,問:多少年后,小張的積蓄能夠翻一番?l循環(huán)體l計算積蓄:m=m*1.05;l累加年數(shù):i+;循環(huán)條件循環(huán)條件m20LOGOEX4.4#includeusing namespace std;int main()double m=10;int i=0;while(m20)m=m*1.05;i+;couti=i

13、endl;return 0;多少年: int i;初值: i=0;利滾利:循環(huán)結構循環(huán)控制變量:小張的積蓄小張的積蓄:double m;循環(huán)控制變量的初值: m=10;循環(huán)執(zhí)行條件:m20l循環(huán)體l計算積蓄:m=m*1.05;l累加年數(shù):i+;LOGO4.1.5 4.1.5 多重循環(huán)多重循環(huán)把一個循環(huán)結構看成一個整體LOGO多重循環(huán)n在用三種語句實現(xiàn)的循環(huán)結構中,循環(huán)體語句是一條語句或者是用 括起來的復合語句。n如果把一個循環(huán)結構看成一個整體,它相當于把一個循環(huán)結構看成一個整體,它相當于一條語句一條語句,也可以出現(xiàn)在for、while或者do-while之下作為循環(huán)體語句,這樣就構成了多重循環(huán)

14、。LOGO多重多重循環(huán)舉例循環(huán)舉例n編寫程序打印如下圖形。編寫程序打印如下圖形。n先解決打印一行的問題:先解決打印一行的問題: for(j=1;j=5;j+)for(j=1;j=5;j+) cout cout* *; ;將將其其重復重復5 5次次for for i=1;ii=1;i=5;i=5;i+)+) for(j=1;j=5;j+)for(j=1;j=5;j+) cout cout* *; ; coutendl; coutendl;LOGO多重多重循環(huán)舉例循環(huán)舉例n編寫程序打印如下圖形。編寫程序打印如下圖形。for for i=1;ii=1;i=5;i=5;i+)+) for(j=1;j=

15、5 ; j+)for(j=1;j=5 ; j+) cout cout* *; ; coutendl; coutendl;for(j=1;j=i ; j+)for(j=1;j=i ; j+)LOGO多重多重循環(huán)舉例循環(huán)舉例n編寫程序打印如下圖形。編寫程序打印如下圖形。for for i=1;ii=1;i=5;i=5;i+)+) coutendl; coutendl; for(j=1;j=i ; j+)for(j=1;j=i ; j+)coutcout* *; ;for(j=1;j=5 i ; j+)for(j=1;j=5 i ; j+) coutcout ; ;LOGOEX4.7n要解決這一類問

16、題,主要有以下幾個問題要解決:1.當邊長為n時共需要打印多少行2.每一行第一個*前有多少個空格,與n和行數(shù)是什么關系?3.每行的*號數(shù)及*后的空格數(shù),與n和行數(shù)是什么關系?n=4LOGO問題的細化:上三角&下三角 * * * * * * * * * * * * * * * * 上三角下三角LOGO問題的細化:上三角&下三角 * * * * * * * * * * * * * * * * 邊長n=4上三角空格數(shù)空格數(shù)星號數(shù)星號數(shù)131222313404LOGO/輸出第i行,共執(zhí)行n次for( i=1; i=n; i+ ) 輸出n-i個空格輸出i個”星號空格”換行每行前的空格數(shù)及星號數(shù)與行數(shù)i及邊

17、長n的關系打印上三角空格數(shù)空格數(shù)星號星號數(shù)數(shù)131222313404LOGOint j; /輸出上三角的輸出上三角的n行行,i為行號為行號for(i=1;i=n;i+) /輸出輸出n-i個空格個空格for( j=1;j=n-i;j+ ) cout ;/輸出輸出i個星號個星號及空格及空格for( j=1;j=i;j+ ) cout“* “; /換行換行coutendl;打印上三角LOGO/輸出第i行,共執(zhí)行n-1次for(i=1; i=n-1; i+) 輸出i個空格輸出n-i個”星號空格”換行每行前的空格數(shù)及星號數(shù)與行數(shù)i及邊長n的關系打印下三角空格數(shù)空格數(shù)星號星號&空格空格數(shù)數(shù)11322233

18、1LOGO/輸出下三角的輸出下三角的n-1行行,i為行號為行號for(i=1;i=n-1;i+) /輸出輸出i個空格個空格for( j=1;j=i;j+ ) cout ;/輸出輸出n-i個星號個星號及空格及空格for( j=1;j=n-i;j+ ) cout“* “; /換行換行coutendl;打印下三角LOGO4.2 4.2 流程控制語句流程控制語句網(wǎng)絡與計算中心網(wǎng)絡與計算中心breakcontinueLOGObreak & continuebreak語句語句 無條件地結束無條件地結束switch語語句,或循環(huán)語句句,或循環(huán)語句 轉向執(zhí)行語句塊的后續(xù)轉向執(zhí)行語句塊的后續(xù)語句語句contin

19、ue語句語句 用于循環(huán)體中,終止當用于循環(huán)體中,終止當前一次循環(huán)前一次循環(huán)LOGOwhile ( E1 ) 語句語句 1 if ( E2 ) continue ; 語句語句 2while ( E1 ) 語句語句 1 if ( E2 ) break ; 語句語句 2 語句2 E 1 語句1 E2 下一語句 breakbreak 語句2 E 1 語句1 E 2 下一語句 continuecontinueTTFFFFTTLOGOn例:輸出例:輸出1100內內3的倍數(shù)。的倍數(shù)。n分析:分析:設置整型變量設置整型變量I從從1變化到變化到100,依次測試,依次測試I是否是否3的的倍數(shù),算法屬于窮舉法。倍數(shù)

20、,算法屬于窮舉法。 for (int i=1;i=100;i+) if ( i%3!=0) continue; /i不是3的倍數(shù),轉向下一次循環(huán) coutit; /當i是3的倍數(shù),輸出i; break & continueLOGOEX4.8n算法如下:nfor(i=2;im;for(i=2;i=m) /在在i從從2變到變到m-1中,中,m%i=0始終不成立始終不成立 coutm是素數(shù)endl;else coutm不是素數(shù)endl;標標志志變變量量的的引引入入LOGOEX4.8n算法如下:n設置一個標志變量flag,flag,初值為初值為0 0nfor(i=2;im;i+)n判斷m能否被i整除n

21、能整除則: 置標志變量flag=1;flag=1; 已經(jīng)知道m(xù)不是素數(shù),提前退出循環(huán)n如果標志變量的值為1,則m不是素數(shù),否則是素數(shù)。n對于某個數(shù)m,在2至m-1之間,只要有個數(shù)能被m整除,就能說明m不是素數(shù),只有所有的數(shù)都不能整除,才能說明m不是素數(shù)LOGOEX4.8flag=0;for( i=2; im; i+ )if(m%i=0)flag=1; / m被某個被某個i整除了,改變標志變量的值整除了,改變標志變量的值break; /提前退出循環(huán)提前退出循環(huán)if(flag=0) /在在i從從2變到變到m-1中,中,m%i=0始終不成立始終不成立coutm是素數(shù)endl;elsecoutm不是素

22、數(shù)endl;return 0;優(yōu)化n=sqrt(m);for( i=2; i=n; i+ )LOGO標志變量判斷是否提前退出循環(huán)nflag 是一個標志變量,它在程序中的作用是標志m是否被某個i整除。n一開始它的初值設置為0n在循環(huán)體中使用if(m%i=0) 來判斷m是否被整除,如果表達式為真,則m被i整除,將flag的值置為1。n因此,只要有一個i使m被i整除,則flag的值為1。n除非所有的i都不能滿足m被i整除,flag的值才為0;這剛好為循環(huán)體外通過flag的值判斷m是否為素數(shù)提供了條件。LOGO4.34.3常用常用算法應用舉例算法應用舉例網(wǎng)絡與計算中心網(wǎng)絡與計算中心窮舉法迭代法遞推法L

23、OGOn窮舉法基本思想是,在有限范圍內列舉所有可能的結果,找出其中符合要求的解。n窮舉法適合求解的問題是:可能的答案是有限個且答案是可知的,但又難以用解析法描述。這種算法通常用循環(huán)結構來完成。窮舉法LOGO 設雞翁、母、雛分別為i,j,k,根據(jù)題意可得 i*5+j*3+k/3=100; i+j+k=100; EX4.12n“百雞問題”:雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一。百錢買百雞,問雞翁、母、雛各幾何? 兩個方程無法解出三個變量,只能將各種可能的取值代入,其中能滿足兩個方程的就是所需的解,這就是枚舉算法LOGO 設雞翁、母、雛分別為i,j,k,根據(jù)題意可得 i*5+j*3+k/3

24、=100; i+j+k=100; EX4.12n“百雞問題”:雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一。百錢買百雞,問雞翁、母、雛各幾何? i、j、k可能的取值有哪些?分析可知,百錢最多可買雞翁20,雞母33,雞雛300LOGOfor (i=0; i=20;i+)for (j=0; j=33;j+) for (k=0; k=300;k=k+3) if (i+j+k=100)&(5*i+3*j+k/3=100) coutijk;EX4.12n算法算法使用三重循環(huán),執(zhí)行時間函數(shù)是立方使用三重循環(huán),執(zhí)行時間函數(shù)是立方階,循環(huán)體將執(zhí)行階,循環(huán)體將執(zhí)行20*33*300=198000次。次。n如如

25、能在能在算法上改進一下算法上改進一下,減少,減少一重循環(huán),一重循環(huán),將大大縮短運行時間。將大大縮短運行時間。LOGOn實際上,當i、j確定時,k就可由題目要求確定為100-i-j,因此實際上只要用i、j去測試就可以了n循環(huán)體將執(zhí)行:20*33=660次算法優(yōu)化EX4.12for (i=0; i+=20;) for (j=0; j=33;j+) k=100-i-j; if(5*i+3*j+k/3=100)&(k%3=0) coutijk;LOGO 用用i,j,k,m四個變量分別表示千、百、十、個位上的數(shù)。四個變量分別表示千、百、十、個位上的數(shù)。 則則i的取值為的取值為03,j 的的取值為取值為0

26、2, k的的取值為取值為02, m的的取取值為值為03 。 用四重循環(huán)實現(xiàn),但要注意各位數(shù)字不能相同。用四重循環(huán)實現(xiàn),但要注意各位數(shù)字不能相同。EX4.11n由由0 0到到3 3四個數(shù)字,組成四個數(shù)字,組成4 4位數(shù),每個數(shù)字用一次,但十位位數(shù),每個數(shù)字用一次,但十位和百位不能為和百位不能為3 3,輸出所有可能的四位數(shù)。要求每行顯示,輸出所有可能的四位數(shù)。要求每行顯示5 5個數(shù)。個數(shù)。LOGOEX4.11n算法使用四重算法使用四重循環(huán)循環(huán),逐一列舉每位上可能,逐一列舉每位上可能出現(xiàn)的數(shù)字出現(xiàn)的數(shù)字for(i=1;i=3;i+) for(j=0;j3;j+) if(j=i)continue; f

27、or(k=0;k3;k+) if (k=j|k=i) continue; for(m=0;m=3;m+) if(m=k|m=i|m=j) continue; coutijkmt; count+; LOGOif (count%5=0) coutendl; v每每行顯示行顯示5個數(shù)如何處理個數(shù)如何處理?EX4.11LOGO迭代法迭代法n迭代是數(shù)值分析中通過從一個初始估計出發(fā)尋找一系列近似解來解決問題的過程,為實現(xiàn)這一過程所使用的方法統(tǒng)稱為迭代法。LOGOEX4.5n牛頓迭代法求解平方根na是已知正數(shù),x 0是迭代初值,給x 0一個值,假定 x 0 = a/2;則用迭代公式迭代公式依次計算:ox1=

28、(x0+a/x0)/2;x2=(x1+a/x1)/2;nxk+1=(xk+a/xk)/2;n當|xk+1 xk|(是一個較小的正數(shù))時,迭代終止,取xk+1的值為a的平方根近似值LOGOEX4.5#include #include using namespace std;int main()double a;/a的輸入do couta;while (a=1e-5 );cout a的平方根為:x1=1e-5,而x1和x0都是在循環(huán)體中被賦值,這種情況用do-while循環(huán)更好。如果要改成while循環(huán),會稍復雜些。LOGO遞推法遞推法n遞推算法是通過問題的一個或多個已知解,用同樣的方法逐個推算出

29、其他解,如數(shù)列問題,近似計算問題等,通常也要借助于循環(huán)結構完成。LOGO ! 7x! 5x! 3xx)xsin(753EX4.13n輸入一個小于1的數(shù)x,求sinx的近似值,要求誤差小于0.0001。近似計算公式如下這個近似計算可以看作一個累加過程,關鍵在于累加項數(shù)的確定。double p; /累加項doubel sin;/累加和累加:sin+=p;LOGOEX4.13fabs(p)0.0001Sin=0; i=1;P=x;主操作: sin+=p;預處理:p=p *(-1) *x*x /(2*i*(2*i+1); i+;)!1i2(x)1()1i(次累加時i第1i21iipT)1(2*2x*1

30、)(*pp下一次累加時2iiiLOGOEX4.14n一對兔子,從出生后第3個月起每個月都生一對兔子。小兔子長到第3個月后每個月又生一對兔子,假設兔子不存在死亡問題,請問從第1個月到第20個月,每個月有多少對兔子?n這個問題的答案是Fibonacci數(shù)列1n 1)-fib(n2)-fib(n1n 1 0n 1 fib(n)LOGOEX4.14: Fibonacci數(shù)列n除了第0項和第1項外,每一項都是由類似方法產(chǎn)生,即前兩項之和n所以求當前項時,只需要記住前兩項n程序不需要為每一項設置專用變量;屬遞推算法。1n 1)-fib(n2)-fib(n1n 1 0n 1 fib(n)LOGO /4_12

31、.cpp,兔子繁衍問題int main() int fib0=0,fib1=1,fib2;int n; /當前計算的是第幾項當前計算的是第幾項coutsetw(5)fib0setw(5)fib1endl;for(n=3;n=20;n+)fib2=fib0+fib1;coutsetw(5)fib2;if(n%5=0) coutendl; /控制每控制每行只顯示行只顯示5個數(shù)據(jù)個數(shù)據(jù)fib0=fib1; fib1=fib2; /遞推遞推 return 0;EX4.14 Fibonacci數(shù)列LOGO4.5 4.5 輸入輸出文件簡介輸入輸出文件簡介網(wǎng)絡與計算中心網(wǎng)絡與計算中心ofstreamifst

32、reamLOGO文件輸入輸出文件輸入輸出輸入100個數(shù),求平均值for(i=1;ia; s+=a;couts/100.0endl;有個數(shù)字輸入錯了怎么辦?有什么辦法把要輸入的數(shù)據(jù)事先用記事本編輯好,然后再輸入?文件輸入的要點1. 定義輸入文件2.打開文件3.從文件輸入數(shù)據(jù)4.關閉文件 ifstream ifile;ifile.open(d:my_in_file.txt);for(i=1;ia; s+=a;ifile.close();couts/100.0endl;#include LOGO文件輸入與輸出對比文件輸入與輸出對比 #include #include 文件輸入的要點1. 定義輸入文件

33、2.打開文件3.從文件輸入數(shù)據(jù)4.關閉文件文件輸出的要點1. 定義輸出文件2.打開文件3.將數(shù)據(jù)輸出到文件4.關閉文件 ifstream ifile; ofstream ofile; ifile.open(d:my_in_file.txt); ofile.open(d:my_out_file.txt); for(i=1;ia; s+=a; ofiles/100.0 x; n+; sum+=x;判斷數(shù)據(jù)是否讀完LOGO4.3 4.3 綜合綜合舉例舉例網(wǎng)絡與計算中心網(wǎng)絡與計算中心 劃拳 龜兔賽跑LOGO【例 4.9】 兩個小孩用石頭剪刀布劃拳,游戲規(guī)則:每個人有5滴血,如果兩人出的拳相同,則重新來

34、,否則,石頭勝剪刀,剪刀勝布,布勝石頭,劃拳輸一次血滴數(shù)減1,誰的血滴數(shù)先減到0者輸分析以下問題:1.每個人有5滴血,如何表示?2.出的拳如何表示?3.石頭勝剪刀,剪刀勝布,布勝石頭,如何表示?4.如何判斷勝負?5.有需要重復執(zhí)行的步驟嗎?int c1=5,c2=5;int p1,p2;/1:石頭2:剪刀3:布(p1=1&p2=2)|(p1=2&p2=3)|(p1=3&p2=1)c1=0&c20|p1-p2|=1 &p1p1LOGO程序流程圖程序流程圖c1=5,c2=5輸入p1,p2c10&c20判斷出拳是否相同輸出p1,p2的文字c2-判斷p1的輸贏c1-判斷勝負輸出贏家1輸出贏家2TFTFTFFTLOGO核心代碼while(c10&c20) cinp1p2; if(p1=p2)continue; if(p1=1&p2=2)|(p1=2&p2=3)| (p1=3&p2=1)c2-; elsec1-;if(c10) cout1Win!n;elsecout2Win!n;switch(p1) case 1:cout石頭石頭;break; case 2:cout剪刀剪刀;break; case 3:cout布布;break; coutt

溫馨提示

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

評論

0/150

提交評論