版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、第第 四四 章章 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)4.1 用格里高利公式求用格里高利公式求的近似值的近似值 (while語句語句)4.2 統(tǒng)計一個整數(shù)的位數(shù)統(tǒng)計一個整數(shù)的位數(shù) (do-while語句語句)4.3 判斷素數(shù)判斷素數(shù) (break 和和 continue 語句語句)4.4 求求1!+2!+.+100! (循環(huán)嵌套循環(huán)嵌套)4.5 循環(huán)結(jié)構(gòu)程序設計循環(huán)結(jié)構(gòu)程序設計本章要點本章要點什么是循環(huán)什么是循環(huán)? 為什么要使用循環(huán)為什么要使用循環(huán)? 如何實現(xiàn)循環(huán)如何實現(xiàn)循環(huán)?實現(xiàn)循環(huán)時,如何確定循環(huán)條件和循環(huán)體實現(xiàn)循環(huán)時,如何確定循環(huán)條件和循環(huán)體?怎樣使用怎樣使用while 和和do-while語句實現(xiàn)次數(shù)不確
2、定的語句實現(xiàn)次數(shù)不確定的循環(huán)循環(huán)?while 和和do-while語句有什么不同語句有什么不同?如何使用如何使用break語句處理多循環(huán)條件語句處理多循環(huán)條件?如何實現(xiàn)多重循環(huán)如何實現(xiàn)多重循環(huán)?引入案例引入案例自動售貨機自動售貨機 假設自動售貨機出售4種商品,薯片(crisps)、爆米花(popcorn)、巧克力(chocolate)和可樂(cola),售價分別是每份3.0、2.5、4.0和3.5元。在屏幕上顯示以下菜單,用戶可以連續(xù)查詢商品的價格。當用戶輸入編號14,顯示相應商品的價格;輸入0,退出查詢;輸入其他編號,顯示價格為0。 1 Select crisps 2 Select popc
3、orn 3 Select chocolate 4 Select cola 0 Exitwhile 和和 do-whileint main(void) int choice=1, i; double price; while(choice!=0) printf(1 Select crispsn); . printf(Enter choice: ); scanf(%d, &choice); switch (choice) case 1: printf(price=3.0n); break; . int main(void) int choice, i; double price; do p
4、rintf(1 Select crispsn); . printf(Enter choice: ); scanf(%d, &choice); switch (choice) case 1: printf(price=3.0n); break; . while(choice!=0);choice=0while 和和 do-whilewhile (條件條件) 循環(huán)體語句循環(huán)體語句; 循環(huán)體語句循環(huán)體語句while下一條語句下一條語句真真假假do 循環(huán)體語句循環(huán)體語句 while (條件條件);循環(huán)體語句條件do-while的下一條語句真真假假條件條件例例4-1:使用格里高利公式求使用格里高
5、利公式求的近似值,要求精確到的近似值,要求精確到最后一項的絕對值最后一項的絕對值不不小于小于104。例例4-2 從鍵盤輸入一批學生的成績(輸入從鍵盤輸入一批學生的成績(輸入負數(shù)負數(shù)表示表示學生成績輸入完畢),計算平均成績,并統(tǒng)計不及學生成績輸入完畢),計算平均成績,并統(tǒng)計不及格學生的人數(shù)。格學生的人數(shù)。例例4-3 統(tǒng)計一個整數(shù)的位數(shù)統(tǒng)計一個整數(shù)的位數(shù):從鍵盤讀入一個整數(shù),從鍵盤讀入一個整數(shù),統(tǒng)計該數(shù)的位數(shù)。統(tǒng)計該數(shù)的位數(shù)。while和和do-while應用練習應用練習11114357例例4-1:用格里高利公式求:用格里高利公式求的近似值的近似值例例2-8:求求 1-1/3+1/5- 的前的前n
6、項和。項和。算法描述:算法描述:用戶輸入項數(shù)用戶輸入項數(shù)nfor(i = 1; i =0.0001) 累加項 pi計算公式中下一項 item例例4-1:用格里高利公式求:用格里高利公式求的近似值的近似值#include#includeint main()int flag=1, i=1;double item=1,pi=0;while(fabs(item)=0.0001)pi=pi+item;i+;flag=-1*flag;item=flag*1.0/(2*i-1);pi=4*pi;printf(=%lf,pi);算法描述:算法描述:公式中第一項公式中第一項 itemwhile(fabs(ite
7、m)=0.0001) 累加項累加項 pi 計算公式中下一項計算公式中下一項 item11114357例例4-2:求平均成績,并統(tǒng)計不及格人數(shù):求平均成績,并統(tǒng)計不及格人數(shù)例例3-3:輸入一個正整數(shù):輸入一個正整數(shù)n,再,再輸入輸入n個學生的成績,計算平均個學生的成績,計算平均分,并統(tǒng)計不及格成績的個數(shù)分,并統(tǒng)計不及格成績的個數(shù)算法描述:算法描述:用戶輸入學生人數(shù)用戶輸入學生人數(shù)nfor(i = 1; i =0) 學生個數(shù)累加學生個數(shù)累加 sum例例4-2:求平均成績,并統(tǒng)計不及格人數(shù):求平均成績,并統(tǒng)計不及格人數(shù)輸入一批學生的成績(輸入輸入一批學生的成績(輸入“負負數(shù)數(shù)”表示學生成績輸入完畢)
8、,表示學生成績輸入完畢),計算平均成績,并統(tǒng)計不及格學計算平均成績,并統(tǒng)計不及格學生的人數(shù)。生的人數(shù)。算法描述:算法描述:輸入第輸入第1個學生的成績個學生的成績 gradewhile(grade=0) 累加成績累加成績 total 學生個數(shù)累加學生個數(shù)累加 sum 統(tǒng)計不及格成績的個數(shù)統(tǒng)計不及格成績的個數(shù) count 輸入下一個學生的成績輸入下一個學生的成績 gradeint main()int i, sum=0,count=0;double grade,total=0;printf(請輸入學生分數(shù):請輸入學生分數(shù):);scanf(%lf,&grade);while(grade=0)t
9、otal=total+grade;sum+;if(grade60) count+;printf(請輸入學生分數(shù):請輸入學生分數(shù):);scanf(%lf,&grade);printf(平均分平均分:%.2lf,不及格人數(shù)不及格人數(shù):%d,total/sum,count);例例4-3 統(tǒng)計一個整數(shù)的位數(shù)統(tǒng)計一個整數(shù)的位數(shù)要求:從鍵盤讀入一個整數(shù),統(tǒng)計該數(shù)的位數(shù)。要求:從鍵盤讀入一個整數(shù),統(tǒng)計該數(shù)的位數(shù)。算法分析算法分析輸入一個整數(shù)輸入一個整數(shù)n do n對對10取整,結(jié)果仍存放至取整,結(jié)果仍存放至n 位數(shù)加位數(shù)加1 lengthwhile( ) n!=0例例4-3 統(tǒng)計一個整數(shù)的位數(shù)統(tǒng)計一
10、個整數(shù)的位數(shù)要求:從鍵盤讀入一個整數(shù),要求:從鍵盤讀入一個整數(shù),統(tǒng)計該數(shù)的位數(shù)。統(tǒng)計該數(shù)的位數(shù)。算法分析算法分析輸入一個整數(shù)輸入一個整數(shù)n do n對對10取整,結(jié)果仍存放至取整,結(jié)果仍存放至n 位數(shù)加位數(shù)加1 lengthwhile( ) n!=0#include int main()int n,length;printf(請輸入一個整數(shù)請輸入一個整數(shù));scanf(%d,&n);don=n/10;length+;while(n!=0);printf(位數(shù)為位數(shù)為:%d,length);4.3 判斷素數(shù)判斷素數(shù)例例4-4 輸入一個正整數(shù)輸入一個正整數(shù)m,判斷它是否為素數(shù)。,判斷它是否
11、為素數(shù)。4.3.1 程序解析程序解析4.3.2 break語句語句 和和continue語句語句思考:思考:1. 如何判斷一個數(shù)是素數(shù)?如何判斷一個數(shù)是素數(shù)?2. 考慮是判斷一個數(shù)是素數(shù)容易還是判斷一考慮是判斷一個數(shù)是素數(shù)容易還是判斷一個數(shù)不是素數(shù)容易?個數(shù)不是素數(shù)容易?3. 當利用循環(huán)判斷出一個數(shù)不是素數(shù)時,如當利用循環(huán)判斷出一個數(shù)不是素數(shù)時,如何提前退出循環(huán)?何提前退出循環(huán)?4. 一一個數(shù)不是素數(shù)的狀態(tài)如何個數(shù)不是素數(shù)的狀態(tài)如何得到得到?例例4-4源程序判斷素數(shù)源程序判斷素數(shù)int main(void) int i, m;printf(“Enter a number: );scanf (%
12、d, &m);for (i = 2; i m/2&m1 ) printf(%d is a prime number! n, m); else printf(No!n); Enter a number: 9NoEnter a number: 1111 is a prime number!continue 語句語句while(exp) 語句語句1 if (expb) continue; 語句語句2跳過跳過continue后面的語后面的語句,繼續(xù)下一次循環(huán)句,繼續(xù)下一次循環(huán)語句語句1while下一條語句下一條語句真真假假exp語句語句2expb假假真真break 和和 continu
13、e#include stdio.hint main(void) char c; int i; for (i = 0; i 10; i+) c = getchar(); if (c = n) break; putchar(c); continue;break 和和 continue例如例如 以下程序段輸出以下程序段輸出100200之間所有能被之間所有能被3整除的數(shù)。整除的數(shù)。for(i = 100;i = 200;i+) if( i % 3 != 0 ) continue; printf(“%d ”,i);例例4-5 簡單的猜數(shù)游戲。最多允許猜簡單的猜數(shù)游戲。最多允許猜5次。次。# includ
14、e int main(void) int yournumber,mynumber = 38; int count; for(count=1; count mynumber ) printf(Sorry! 大了大了!n); else printf(Sorry!小了小了r!n); return 0;最多允許猜最多允許猜5次次猜對了如何提前退出?猜對了如何提前退出? if(yournumber = mynumber) printf(正確正確n); break; 4.4 求求1! + 2! + . + 100!#includeint main()int i,j;double item,sum=0; /
15、* item 存放計算階乘的結(jié)果存放計算階乘的結(jié)果 */for(i=1;i=100;i+)item=1;/* 每次求階乘都從每次求階乘都從1開始開始 */* 內(nèi)層循環(huán)算出內(nèi)層循環(huán)算出 item! */for(j=1;j=i;j+)item=item*j;sum=sum+item;printf(1! + 2! + . + 100!=%e,sum);嵌套循環(huán)嵌套循環(huán)分析嵌套循環(huán)的執(zhí)行過程分析嵌套循環(huán)的執(zhí)行過程for(i = 1; i = 100; i+) item = 1; for (j = 1; j = i; j+) item = item * j; sum = sum + item; n 外層
16、循環(huán)變量外層循環(huán)變量 i 的每個值的每個值內(nèi)層循環(huán)變量內(nèi)層循環(huán)變量 j 變化一個輪次;變化一個輪次;n 內(nèi)外層循環(huán)變量不能相同內(nèi)外層循環(huán)變量不能相同分別用分別用 i 和和 j求求1! + 1!*2! + + 1!*2!*n! for(i=1;i=n;i+)itemsum=1;for(j=1;j=i;j+)jc=1;for(k=1;k=j;k+)jc=jc*k;itemsum=itemsum*jc;sum=sum+itemsum;printf(%e,sum);練習:請寫出以下三段代碼的運行結(jié)果練習:請寫出以下三段代碼的運行結(jié)果for (i = 1; i = 5; i+) for (j = 1;
17、j = i; j+) printf (%3d%3dn, i, j );for (i = 1; i = 5; i+) if(i=3) break; for (j = 1; j = i; j+) printf (%3d%3dn, i, j ); for (i = 1; i = 5; i+) if(i=3) continue; for (j = 1; j = i; j+) printf (%3d%3dn, i, j ); 4.4 循環(huán)嵌套循環(huán)嵌套例例4-12古典算術(shù)問題搬磚頭古典算術(shù)問題搬磚頭 某地需要搬運磚塊,已知男人一人搬某地需要搬運磚塊,已知男人一人搬3塊,女人一人搬塊,女人一人搬2塊塊,小孩
18、兩人搬一塊。,小孩兩人搬一塊。 問用問用45人正好搬人正好搬45塊磚,有多少種搬法?塊磚,有多少種搬法?int man,woman,child /存放男人,女人和小孩人數(shù)存放男人,女人和小孩人數(shù)man+woman+child=45/條件條件1:滿足:滿足45人人man*3+woman*2+child*0.5=45 /條件條件2:滿足:滿足45磚磚算法:算法:列舉男人所有可能的人數(shù)列舉男人所有可能的人數(shù)列舉女人所有可能的人數(shù)列舉女人所有可能的人數(shù)列舉小孩所有可能的人數(shù)列舉小孩所有可能的人數(shù)if(條件條件1滿足滿足 并且并且 條件條件2滿足滿足) 該組合滿足要求該組合滿足要求例例4-12古典算術(shù)問
19、題搬古典算術(shù)問題搬磚頭磚頭for(m=0;m=15;m+) for(w=0;w=22;w+) for(c=0;c=45;c+) /滿足滿足45人且人且滿足滿足45磚磚 if(m*3+w*2+c*0.5=45 & m+w+c=45) printf(man=%d,women=%d,chile=%dn,m,w,c); 算法:算法:列舉男人所有可能的人數(shù)列舉男人所有可能的人數(shù)列舉女人所有可能的人數(shù)列舉女人所有可能的人數(shù)列舉小孩所有可能的人數(shù)列舉小孩所有可能的人數(shù)if(滿足滿足45人人 并且并且 滿足滿足45磚磚) 該組合滿足要求該組合滿足要求能否進行優(yōu)化?能否進行優(yōu)化?例例4-12古典算術(shù)問題
20、搬古典算術(shù)問題搬磚頭磚頭for(m=0;m=15;m+) for(w=0;w=22;w+) for(c=0;c=45;c+) /滿足滿足45人且人且滿足滿足45磚磚 if(m*3+w*2+c*0.5=45 & m+w+c=45 ) printf(man=%d,women=%d,chile=%dn,m,w,c); V1.1版版c=45-m-w;/計算小孩的數(shù)量計算小孩的數(shù)量例例4-12古典算術(shù)問題搬古典算術(shù)問題搬磚頭磚頭V1.1版版for(m=0;m=15;m+) for(w=0;w=22;w+) V1.0版版for(m=0;m=15;m+) for(w=0;w=22;w+) for(c
21、=0;c=45;c+) V1.1=16*23 =368V1.0=16*23*46 =16928練習練習百錢買百雞百錢買百雞百錢買百雞的問題算是一套非常經(jīng)典的不定方程的百錢買百雞的問題算是一套非常經(jīng)典的不定方程的問題,題目很簡單:公雞問題,題目很簡單:公雞5文錢一只,母雞文錢一只,母雞3文錢一文錢一只,小雞只,小雞3只一文錢,只一文錢,用用100文錢買一百只雞文錢買一百只雞,其中公雞,母雞,小雞都必其中公雞,母雞,小雞都必須要有,問公雞,母雞,小雞要買多少只剛好湊足須要有,問公雞,母雞,小雞要買多少只剛好湊足100文錢文錢。練習練習百錢買百百錢買百雞關(guān)鍵代碼雞關(guān)鍵代碼for(cock=1;coc
22、k=19;cock+) for(hen=1;hen=31;hen+) chicken=100-cock-hen;/小雞數(shù)量小雞數(shù)量if(15*cock+9*hen+chicken=300) printf(公雞:公雞:%d,母雞,母雞%d,小雞,小雞%dn,cock,hen,chicken); 4.5 循環(huán)結(jié)構(gòu)程序設計循環(huán)結(jié)構(gòu)程序設計循環(huán)程序的實現(xiàn)要點:循環(huán)程序的實現(xiàn)要點: 歸納出歸納出哪些操作需要反復執(zhí)行?哪些操作需要反復執(zhí)行? 這些操作在什么情況下重復執(zhí)行這些操作在什么情況下重復執(zhí)行? 選用合適的循環(huán)語句選用合適的循環(huán)語句for 事先給定循環(huán)次數(shù),首選事先給定循環(huán)次數(shù),首選for 通過其他條
23、件控制循環(huán),考慮通過其他條件控制循環(huán),考慮while或或do-while循環(huán)體循環(huán)體循環(huán)條件循環(huán)條件while do-while4.5 循環(huán)結(jié)構(gòu)程序設計循環(huán)結(jié)構(gòu)程序設計練習練習例例4-8-1 輸入一批學生的成績,求最高分輸入一批學生的成績,求最高分(for)例例4-8-2 輸入一批學生的成績,求最高分輸入一批學生的成績,求最高分(while)例例4-8-3 輸入一批學生的成績,求最高分輸入一批學生的成績,求最高分(do-while)例例4-9 逆序問題。將一個正整數(shù)逆序輸出逆序問題。將一個正整數(shù)逆序輸出例例4-11 斐波那契數(shù)列問題。輸出斐波那契(斐波那契數(shù)列問題。輸出斐波那契(Fibonac
24、ci)序)序列的前列的前10項:項:1,1,2,3,5,8,13,21,34,55。例例4-8-1 輸入一批學生的成績,求最高分輸入一批學生的成績,求最高分(for)算法分析算法分析1. 輸入學生人數(shù)輸入學生人數(shù) n2. 輸入第一位學生成績,并存入最高分輸入第一位學生成績,并存入最高分max 3. 利用利用for循環(huán),輸入剩余循環(huán),輸入剩余n-1位學生成績位學生成績 輸入學生分數(shù)輸入學生分數(shù) grade 將學生成績與最高分進行比較,若大于最高分則將最高將學生成績與最高分進行比較,若大于最高分則將最高分賦值為該名學生成績分賦值為該名學生成績 4. 輸出最高分輸出最高分 Whiledo while
25、例例4-9 逆序問題。將一個正整數(shù)逆序逆序問題。將一個正整數(shù)逆序輸出輸出算法分析:算法分析: 12345 5 4 3 2 112345 % 10 = 5 12345 / 10 = 1234 1234 % 10 = 4 1234 / 10 = 123 123 % 10 = 3 123 / 10 = 12 12 % 10 = 2 12 / 10 = 1 1 % 10 = 1 1 / 10 = 0 結(jié)束結(jié)束循環(huán)不變式循環(huán)不變式 x%10 x=x/10循環(huán)結(jié)束條件循環(huán)結(jié)束條件 x=0scanf( “%d”, &x);while ( ) digit = x %10; x = x/10 ; pri
26、ntf( %d , digit);用用do-while實現(xiàn)?實現(xiàn)?x != 0例例4-11 斐波那契數(shù)列問題。斐波那契數(shù)列問題。輸出輸出斐波那契(斐波那契(Fibonacci)序列的前)序列的前10項:項:1,1,2,3,5,8,13,21,34,55。算法分析算法分析核心:從核心:從第第3項開始,每一項都是前兩項之和項開始,每一項都是前兩項之和第第1項項 n1=1第第2項項 n2=1輸出輸出n1,n2 /循環(huán)輸出后循環(huán)輸出后310項項for(i=3,i=10;i+) n3=n1+n2;輸出輸出n3n1=n2;n2=n3;4.4 求求1! + 2! + . + 100!#includeint
27、main()int i,j;double item,sum=0; /* item 存放計算階乘的結(jié)果存放計算階乘的結(jié)果 */for(i=1;i=100;i+)item=1;/* 每次求階乘都從每次求階乘都從1開始開始 */* 內(nèi)層循環(huán)算出內(nèi)層循環(huán)算出 item! */for(j=1;j=i;j+)item=item*j;sum=sum+item;printf(1! + 2! + . + 100!=%e,sum);不夠模塊化不夠模塊化1.2程序設計語言的功能程序設計語言的功能流程控制流程控制語句級語句級控制控制 順序順序 分支分支 循環(huán)循環(huán)將復雜程序劃分為若干個相互獨立的模塊將復雜程序劃分為若干個相互獨立的模塊main()主函數(shù)主函數(shù)function1function2function34.4 求求1! + 2! + . + 100! for (i = 1; i = 100; i+) item = i
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c 課程設計選題系統(tǒng)
- 桂林南農(nóng)糖業(yè)有限公司生產(chǎn)項目環(huán)境影響報告表
- 2026年黃山市湯口鎮(zhèn)黃山旅游服務管理有限公司管理人員招聘筆試備考題庫及答案解析
- 2026南昌市勞動保障事務代理中心招聘勞務派遣人員筆試備考題庫及答案解析
- 2026湖南長沙人才集團有限公司勞務外包人員招聘7人筆試模擬試題及答案解析
- 成都市實驗小學明道分校儲備教師招聘筆試備考題庫及答案解析
- 紙藝創(chuàng)作技藝承諾函6篇
- 2026年河北石家莊無極縣武術(shù)學校公開選聘事業(yè)單位工作人員10名筆試參考題庫及答案解析
- 議論文:青少年應該注重鍛煉身體6篇
- 2026年安康旬陽某單位基層工作人員招聘(4人)筆試參考題庫及答案解析
- 孕婦貧血教學課件
- 超市冷庫應急預案(3篇)
- 5年(2021-2025)山東高考生物真題分類匯編:專題17 基因工程(解析版)
- 2025年10月自考00610高級日語(二)試題及答案
- 新華資產(chǎn)招聘筆試題庫2025
- 2025年中國潛孔鉆機行業(yè)細分市場研究及重點企業(yè)深度調(diào)查分析報告
- 食品經(jīng)營場所及設施設備清洗消毒和維修保養(yǎng)制度
- 2026年遼寧軌道交通職業(yè)學院單招職業(yè)技能測試題庫必考題
- 老年人遠離非法集資講座
- 沙子石子采購合同范本
- 名詞單數(shù)變復數(shù)教案
評論
0/150
提交評論