




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第6章 循環(huán)控制結(jié)構(gòu)于水 本章主要內(nèi)容 循環(huán)的類型 while語句和do while語句 for語句 嵌套循環(huán) goto、 break 、continue語句2循環(huán)的類型問題的提出問題輸入5個數(shù),求其和接受用戶輸入,并從屏幕輸出,直到用戶主動退出某些程序段需要重復(fù)屢次執(zhí)行3循環(huán)的類型問題的提出輸入5個數(shù),求其和(不使用循環(huán))4循環(huán)的類型問題的提出輸入5個數(shù),求其和(使用循環(huán))5循環(huán)的類型循環(huán)的類型計數(shù)控制循環(huán)條件控制循環(huán)當(dāng)型循環(huán)直到型循環(huán)6循環(huán)的類型當(dāng)型循環(huán)和直到型循環(huán)A條 件P直到型循環(huán)假真A當(dāng)型循環(huán)真假假條 件P7本章主要內(nèi)容 循環(huán)的類型 while語句和do while語句 for語句
2、嵌套循環(huán) goto、 break 、continue語句8while語句語句形式while(循環(huán)控制表達式P) 語句序列A 當(dāng)型循環(huán)循環(huán)體9while語句執(zhí)行過程1) 計算循環(huán)控制表達式的值2) 如果表達式為真,那么執(zhí)行循環(huán)體的語句,并返回1)3) 如果表達式值為假,那么退出循環(huán),執(zhí)行循環(huán)體后面的語句10while語句程序?qū)嵗齣nt i = 0;int sum=0;while(i 2) sum += i; i+;printf(“sum=%d,sum)第一次循環(huán)1、i = 0 2 結(jié)果為真2、sum = sum + i = 03、i = i +1 = 1第二次循環(huán)1、i = 1 2 結(jié)果為真2、
3、sum = sum + i = 13、i = i +1 =2第三次循環(huán)1、i = 2 = 2 結(jié)果為假2、退出循環(huán)3、執(zhí)行printf語句11while語句程序的另外兩種寫法int i = 0;int sum=0;while(i 2) sum += i; i+;int i = 0;int sum=0;while (i+ 2) sum += i;int i = 0;int sum=0;while(i 2) sum += i+; 三種寫法結(jié)果是否一樣?12do-while語句語句形式do 語句序列A while(循環(huán)控制表達式P); 直到型循環(huán)13do-while語句執(zhí)行過程1) 執(zhí)行循環(huán)體的語句
4、2)計算循環(huán)控制表達式的值,如果表達式為真,那么返回1)3) 如果表達式值為假,那么退出循環(huán),執(zhí)行循環(huán)體后面的語句 do-while語句的循環(huán)體至少被執(zhí)行一次14do-while語句用do-while改寫上一個程序int i = 0;int sum=0;do sum += i; i+; while(i 2);int i = 0;int sum=0;do sum += i; while(i+ 2);int i = 0;int sum=0;do sum += i+; while(i 2); 三種寫法結(jié)果是否一樣?15本章主要內(nèi)容 循環(huán)的類型 while語句和do while語句 for語句嵌套循環(huán)
5、 goto、 break 、continue語句16for語句語句形式for(初始化表達式;循環(huán)控制表達式;增值表達式) 語句序列;循環(huán)變量賦初值循環(huán)結(jié)束條件改變循環(huán)變量for(i = 0;i 2;i+) sum = sum + i;17for語句執(zhí)行過程1) 循環(huán)變量賦初值2) 計算循環(huán)控制表達式的值,如果表達式為真, 執(zhí)行循環(huán)體,然后執(zhí)行循環(huán)變量增值表達式,返回2)如果表達式值為假,那么退出循環(huán),執(zhí)行循環(huán)體后面的語句18for語句用for語句重寫實例int sum=0; for(int i = 0;i 2;i+) sum = sum + i;第一次循環(huán)1、i = 0 2 結(jié)果為真2、sum
6、 = sum + i = 03、i = i +1 = 1第二次循環(huán)1、i = 1 2 結(jié)果為真2、sum = sum + i = 13、i = i +1 =2第三次循環(huán)1、i = 2 = 2 結(jié)果為假2、退出循環(huán)3、執(zhí)行printf語句19for語句使用for語句的本卷須知三個表達式之間有且僅有兩個分號,不可省略三個表達式可以省略,但必須符合一定的條件增值表達式不僅僅是增20for語句三個表達式的省略如果已為循環(huán)變量賦初值,初始化表達式可以省略int i = 0;int sum=0; for (;i 2;i+) sum = sum + i;21for語句三個表達式的省略如果省略循環(huán)控制表達式,
7、那么表示循環(huán)條件永遠為真int sum=0; int i;for (i = 0;i+) sum = sum + i;死循環(huán)22for語句三個表達式的省略如果已在循環(huán)體內(nèi)改變了循環(huán)控制變量,那么增值表達式可以省略int sum=0; int i;for (i = 0;i 0;i-)for ( i = 10;i 0;i = i/2) sum += i;25編程小貼士變量的初值未賦初值的變量其初始值為隨機值int i = 0 ,sum;sum = 0;for (int i = 0;i 0;i-) sum += i,sum = sum + 1;27空語句僅由一個分號構(gòu)成的語句什么也不做通常用于延時程序
8、for ( i = 0;i 100;i+) ;for ( i = 0;i 100;i+) ;for ( i = 0;i 100;i+) 28for中的空語句int sum=0; int i;for (; ;) ;printf(“hello world);死循環(huán),重復(fù)執(zhí)行這一句永遠都沒有執(zhí)行時機空語句29空語句while中的空語句正常情況下while語句后沒有分號,for也一樣錯誤的使用分號會導(dǎo)致程序錯誤i = 1;while (i 10) ; sum = sum + i;i = 1;while (i 10) ; sum = sum + i;30想一個1100之間的數(shù)猜對: right!猜錯:w
9、rong!并提示大小循序漸進式編程例6.6:猜數(shù)游戲31只猜1次直到猜對為止最多猜10次猜多個數(shù)10次猜不對就猜下一個數(shù)循序漸進式編程例6.6:猜數(shù)游戲32怎樣模擬計算機“想一個數(shù)呢?隨機函數(shù)rand()產(chǎn)生0,RAND_MAX 之間的隨機數(shù)magic = rand(); #include RAND_MAX在stdlib.h中定義,不大于雙字節(jié)整數(shù)的最大值32767 循序漸進式編程例6.6:猜數(shù)游戲33產(chǎn)生0,b-1 之間的隨機數(shù)magic = rand()%b;產(chǎn)生a,a+b-1 之間的隨機數(shù)magic = rand()%b + a; 循序漸進式編程例6.6:猜數(shù)游戲34#include #
10、include main() int magic; /*計算機想的數(shù)*/int guess; /*人猜的數(shù)*/magic = rand()%100 + 1; /*“想一個1,100之間的數(shù)magic*/printf(Please guess a magic number:);scanf(%d, &guess); if (guess magic) printf(Wrong! Too high!n); else if (guess magic) printf(Wrong! Too low!n); else printf(Right! n); printf(The number is:%d n, m
11、agic); 例5.4只猜1次35#include #include main() int magic; int guess; int counter; /*記錄人猜次數(shù)的計數(shù)器變量*/magic = rand() % 100 + 1; counter = 0; /*計數(shù)器變量count初始化為0*/doprintf(Please guess a magic number:);scanf(%d, &guess); counter +; /*計數(shù)器變量count加1*/if (guess magic) printf(Wrong! Too high!n);else if (guess magic)
12、 printf(Wrong! Too low!n); else printf(Right!n);while (guess != magic); printf(counter = %d n, counter); 直到猜對為止例6.636每次運行程序時計算機所“想的數(shù)都是一樣的,這是什么原因呢?函數(shù)rand()產(chǎn)生的只是偽隨機數(shù)隨機函數(shù)srand為函數(shù)rand()設(shè)置隨機數(shù)種子來實現(xiàn)對函數(shù)rand所產(chǎn)生的偽隨機數(shù)的 “隨機化 通過輸入隨機數(shù)種子,產(chǎn)生1,100之間的隨機數(shù)scanf(%u, &seed); srand(seed); magic = rand() % 100 + 1; 循序漸進式編程
13、例6.6:猜數(shù)游戲37#include #include main() int magic; int guess; int counter; /*記錄人猜次數(shù)的計數(shù)器變量*/ unsigned int seed; printf(Please enter seed:);scanf(%u, &seed);srand(seed);magic = rand() % 100 + 1; counter = 0; /*計數(shù)器變量count初始化為0*/doprintf(Please guess a magic number:);scanf(%d, &guess); counter +; /*計數(shù)器變量cou
14、nt加1*/if (guess magic) printf(Wrong! Too high!n);else if (guess magic) printf(Wrong! Too low!n); else printf(Right!n);while (guess != magic); printf(counter = %d n, counter); 直到猜對為止例6.638使用計算機讀取其時鐘值并把該值自動設(shè)置為隨機數(shù)種子,產(chǎn)生1,100之間的隨機數(shù)函數(shù)time()返回以秒計算的當(dāng)前時間值,該值被轉(zhuǎn)換為無符號整數(shù)并用作隨機數(shù)發(fā)生器的種子 #include srand(time(NULL); ma
15、gic = rand() % 100 + 1; 函數(shù)time()能為程序員提供代表時間的字符串,使用NULL作為函數(shù)參數(shù),使其不具備此功能循序漸進式編程例6.6:猜數(shù)游戲39#include #include #include main() int magic; int guess; int counter; /*記錄人猜次數(shù)的計數(shù)器變量*/ srand(time(NULL);magic = rand() % 100 + 1; counter = 0; /*計數(shù)器變量count初始化為0*/doprintf(Please guess a magic number:);scanf(%d, &gu
16、ess); counter +; /*計數(shù)器變量count加1*/if (guess magic) printf(Wrong! Too high!n);else if (guess magic) printf(Wrong! Too high!n);else if (guess magic) printf(Wrong! Too low!n); else printf(Right!n);while (guess != magic & counter 10); printf(counter = %d n, counter); 例6.7最多猜10次41本章主要內(nèi)容 循環(huán)的類型 while語句和do w
17、hile語句 for語句 嵌套循環(huán) goto、 break 、continue語句42嵌套循環(huán)將一個循環(huán)語句放在另一個循環(huán)語句的循環(huán)體中構(gòu)成的循環(huán)for 、while、do-while語句均可以嵌套循環(huán)先由外層循環(huán)進行內(nèi)層循環(huán),執(zhí)行完內(nèi)層循環(huán)后返回外層,并再次進入內(nèi)層,直至外層循環(huán)執(zhí)行完畢43嵌套循環(huán)嵌套循環(huán)的實例總循環(huán)次數(shù)10 * 8 = 80在每次循環(huán)全部執(zhí)行完成的前提下,即為內(nèi)外層循環(huán)次數(shù)的乘積int i, j, sum =0;for (i = 0;i 10; i+ ) for (j = 0;j magic) printf(Wrong!Too high!n);else if (guess
18、 magic) printf(Wrong!Too low!n);else printf(Right!n);while (guess != magic & counter magic) printf(Wrong!Too high!n);else if (guess magic) printf(Wrong!Too low!n);else printf(Right!n);while (guess != magic & counter 10);printf(counter = %dn, counter); printf(Do you want to continue(Y/N or y/n)?);sca
19、nf( %c, &reply);while (reply = Y) | (reply = y); 6.4嵌套循環(huán)例6.12防止非法字符輸入47本章主要內(nèi)容 循環(huán)的類型 while語句和do while語句 for語句 嵌套循環(huán) goto、break、continue語句48流程的轉(zhuǎn)移控制goto語句break語句continue語句exit()函數(shù)49goto語句一般形式50goto語句作用使程序無條件跳轉(zhuǎn)到語句標(biāo)號所標(biāo)識的語句執(zhí)行int i, sum =0;for (i = 0;i 10) goto err;err: printf(“ok);51goto語句優(yōu)點跳轉(zhuǎn)方便缺點過多的goto語句
20、使流程隨意跳轉(zhuǎn)而導(dǎo)致程序流程混亂不建議在程序中使用goto語句52break語句作用退出switch結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的循環(huán)體當(dāng)程序執(zhí)行到break語句時,循環(huán)立即終止,從循環(huán)語句后的第一條語句開始繼續(xù)執(zhí)行Break?退出一層循環(huán)或switch53break實例break語句n?10Please enter n:10n = 10Please enter n: -10Program is over!-10#include main() int i, n; for (i=1; i=5; i+) printf(Please enter n:); scanf(%d, &n); if (n 0) break
21、; printf(n = %dn, n); printf(Program is over!n);54continue語句作用當(dāng)程序執(zhí)行到continue語句時,程序?qū)⑻^continue語句后面尚未執(zhí)行的語句,開始下一次循環(huán)Continue?中斷此次循環(huán),開始下一次55#include main() int i, n; for (i=1; i=5; i+) printf(Please enter n:); scanf(%d, &n); if (n 0) continue; printf(n = %dn, n); printf(Program is over!n);continue實例conti
22、nue語句n?10Please enter n:10n = 10Please enter n: -10Please enter n:20n = 20Please enter n: -20Please enter n:30n = 30Program is over!-1020-203056在嵌套循環(huán)中,continue和break只對包含它們的最內(nèi)層循環(huán)起作用跳出多重循環(huán)的方法使用goto語句使用break層層跳出Goto語句的適用場合快速跳出多重循環(huán)跳向共同的出口位置,進行退出前的錯誤處理工作goto、continue和break語句57用goto語句跳向共同的出口位置void Init(vo
23、id) char *p1 = NULL;char *p2 = NULL;char *p3 = NULL;p1 = (char*)malloc(256); if (p1 = NULL) goto Exit; p2 = (char*)malloc(256); if (p2 = NULL) goto Exit; p3 = (char*)malloc(256); if (p3 = NULL) goto Exit; /*正常處理的代碼*/Exit: if (p1 != NULL) free(p1); if (p2 != NULL) free(p2); if (p3 != NULL) free(p3);
24、return;58exit()函數(shù)作用終止整個程序的運行,強制返回到操作系統(tǒng),將int型參數(shù)code返回到調(diào)用進程Code = 0或EXIT_SUCCESS:正常退出Code非0或EXIT_FAILURE:程序異常退出用法 exit(0);59exit()函數(shù)exit?退出整個程序程序結(jié)束exit60exit()函數(shù)exit實例int i, sum =0;for (i = 0;i 10; i+ ) if ( i = 5) exit(0); sum = sum + i;printf(“sum = %d,sum);int i, j, sum =0;for (i = 0;i 10; i+ ) for (j = 0;j 10; j+ ) if ( j = 5) exit(0); sum = sum + j; sum = sum + i;printf(“sum = %d,sum);61韓信有一隊兵,他想知道有多少人,便讓士兵排隊報數(shù)。按從1至5報數(shù),最末一個士兵報的數(shù)為1;按從1至6報數(shù),最末一個士兵報的數(shù)為5;按從1至7報數(shù),最末一個士兵報的數(shù)為4;最后再按從1至11報數(shù),最末一個士兵報的數(shù)為10。你知道韓信至少有多少兵嗎?設(shè)兵數(shù)為x,那么x應(yīng)滿足:x%5=1 & x%6=5 & x%7=4 & x%11
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡(luò)安全管理員高級工試題庫含答案
- 高級企業(yè)人力資源管理師三級題庫+參考答案
- 第八單元幾分之一(教學(xué)設(shè)計)-2024-2025學(xué)年三年級上冊數(shù)學(xué)人教版
- 2024國家能源集團第一紀(jì)檢中心系統(tǒng)內(nèi)招聘擬錄用人員筆試參考題庫附帶答案詳解
- 2024國家電投福建公司招聘2人(福建福州)筆試參考題庫附帶答案詳解
- 19《大雁歸來》教學(xué)設(shè)計-2024-2025學(xué)年七年級語文上冊同步課堂(統(tǒng)編版2024)
- 2025年硫代硫酸鹽項目合作計劃書
- 《測量長度-綜合與實踐 小小測量員》(教學(xué)設(shè)計)-2024-2025學(xué)年二年級上冊數(shù)學(xué)西師大版
- 2024包頭正信投資集團有限公司子公司招聘工作人員筆試參考題庫附帶答案詳解
- Module8 Unit 1 He lives in the east of the US.(教學(xué)設(shè)計)-2023-2024學(xué)年外研版(一起)英語四年級下冊
- 光伏電站運維安全風(fēng)險管控清單
- 保安員考核評分標(biāo)準(zhǔn)與細則
- 四年級豎式計算大全100道
- 履行法定義務(wù)糾正違法行為的模板
- 越劇基本知識講座
- 崗位績效獎勵制度
- JGT161-2016 無粘結(jié)預(yù)應(yīng)力鋼絞線
- Visual Studio 2019(C#)Windows數(shù)據(jù)庫項目開發(fā)高職全套教學(xué)課件
- 深圳中考自主招生簡歷
- 壽光金遠東變性淀粉有限公司年產(chǎn)2萬噸乳酸、丙交酯、聚乳酸項目環(huán)境影響報告表
- 美術(shù)社團活動記錄
評論
0/150
提交評論