第4單元-電子課件PPT課件_第1頁
第4單元-電子課件PPT課件_第2頁
第4單元-電子課件PPT課件_第3頁
第4單元-電子課件PPT課件_第4頁
第4單元-電子課件PPT課件_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第 1 課 while 語句學習目標1. 理解循環(huán)結(jié)構(gòu)的含義。2. 熟練掌握 while 語句的格式和功能。3. 初步應用 while 語句解決一些實際問題。第1頁/共69頁循環(huán)結(jié)構(gòu)在程序設計中,經(jīng)常需要反復執(zhí)行某一條語句或一個語句塊,這種結(jié)構(gòu)稱為“循環(huán)結(jié)構(gòu)”或者“重復結(jié)構(gòu)”。其實,計算機最擅長的就是重復做一件事情,所以循環(huán)結(jié)構(gòu)在程序設計中應用非常廣泛。在 C+ 中,循環(huán)結(jié)構(gòu)有三種實現(xiàn)語句:while 語句、do-while 語句和 for 語句。第2頁/共69頁1. while 語句的含義其含義為:先計算表達式(一般稱為循環(huán)條件)的值,當表達式的值為真(循環(huán)條件成立)時,去執(zhí)行一次循環(huán)體。和

2、 if 語句不同的是,執(zhí)行完一次循環(huán)體后,while 語句又回到開始處,繼續(xù)計算和判斷表達式的真假,決定是否再次執(zhí)行循環(huán)體。也就是“當表達式成立時,不斷重復執(zhí)行循環(huán)體”,所以又稱為“當型循環(huán)”。while 語句的格式如下:while(表達式) 循環(huán)體第3頁/共69頁2.while 語句的應用舉例【問題分析】設 sum 存放答案,初始化為 0。再設 i 為循環(huán)控制變量,初始化為 1。當循環(huán)條件(i=100)成立時,反復執(zhí)行以下循環(huán)體:(1) 將 i 累加到和 sum 中;(2) 將 i 取值為下一個數(shù),即 i+。最后,輸出 ans 的值。例1、求 1+2+3+100 的值。第4頁/共69頁/p4

3、-1-1#includeusing namespace std;int main() int i = 1,sum = 0; while(i = 100) sum += i+; cout sum endl; return 0;第5頁/共69頁例2、閱讀程序,寫出程序的運行結(jié)果。/p4-1-2#includeusing namespace std;int main() int i = 100,x = 0,y = 0; while(i 0) i-; x = i % 8; if(x = 1) y+; cout y 0”,用到 i、x 和 y 這 3 個變量,列表如表 4.1-1。通過找規(guī)律發(fā)現(xiàn),每次

4、i 是 8*x+1 時,y 的值會加1,也就是97、89、81、9、1,一 共99/8+1=13。所以,程序最后輸出 y 的值為 13。第7頁/共69頁例3、統(tǒng)計正數(shù)【問題描述】輸入若干整數(shù),以 0 結(jié)尾,統(tǒng)計其中有多少個正整數(shù)?!据斎敫袷健恳恍腥舾烧麛?shù),最后一個為 0?!据敵龈袷健恳恍幸粋€整數(shù),表示輸入的數(shù)據(jù)中正整數(shù)的個數(shù)?!緲永斎搿? 6 -3 2 0【樣例輸出】3第8頁/共69頁【問題分析】對于本題來說,首先要輸入一個整數(shù),當它不為 0 時,需要反復執(zhí)行:(1) 判斷該數(shù)是否為正數(shù),如果是,則答案累加 1;(2) 輸入下一個數(shù),再返回去判斷是否為 0。/p4-1-3#includeus

5、ing namespace std;int main() int x,s = 0; cin x; while(x != 0)/ 也可以簡寫成 while(x) if(x 0) s+; cin x; cout s endl; return 0;第9頁/共69頁例4、投資收益【問題描述】小華在去年賺了一大筆錢。他想把這些錢用于投資,并對自己能得到多少收益感到好奇。已知投資的年利率為 r(020 之間的整數(shù)),小華現(xiàn)有 m 元錢。他想知道投資多少年后,他的錢將會超過 y 元?!据斎敫袷健恳恍腥齻€整數(shù) r、m 和 y,相鄰兩個整數(shù)之間用一個空格隔開。m 為 1001000000 之間的整數(shù)?!据敵龈袷?/p>

6、】一行一個整數(shù),即要投資的年數(shù)。保證答案的范圍在 1400 之間?!緲永斎搿? 5000 6077【樣例輸出】4【樣例說明樣例說明】第一年后:第一年后:1.05 * 5000 = 5250;第二年后:第二年后:1.05 * 5250 = 5512.5;第三年后:第三年后:1.05 * 5512.5 = 5788.125;第四年后:第四年后:1.05 * 5788.125 = 6077.53125。第10頁/共69頁【問題分析】小華手里有 m 元錢,目標是超過 y 元錢,k 表示答案(初始化為 0)。所以,當條件“m = y”成立時,要反復執(zhí)行:(1) 修改 m 的值,即 m = m *(1

7、+ r%);(2) 修改 k 的值,即 k+。循環(huán)結(jié)束后,k 的值即為所求的答案。/p4-1-4#includeusing namespace std;int main() double r,m,y; int k = 0; cin r m y; while(m = y) m = m * (1 + r / 100); k = k + 1; cout k endl; return 0; 第11頁/共69頁實踐鞏固第12頁/共69頁第 2 課 do-while 語句學習目標1. 熟練掌握 do-while 語句的格式和功能。2. 體會 do-while 語句與 while 語句的區(qū)別。3. 熟練運用

8、 do-while 語句解決一些實際問題。第13頁/共69頁do-while 語句do-while 語句是 C+ 中用于解決至少執(zhí)行一次重復操作(循環(huán)體)的循環(huán)語句。第14頁/共69頁1. do-while 語句的含義do-while 語句的格式如下:do 循環(huán)體while(表達式);其含義為:先執(zhí)行一次循環(huán)體,然后判斷表達式是否成立,如果成立,則返回繼續(xù)執(zhí)行循環(huán)體,直到表達式不成立,才退出循環(huán)。一般稱之為“直到型循環(huán)”。第15頁/共69頁例1、用 do-while 語句實現(xiàn)輸出一行 10 個“”。/p4-2-1#includeusing namespace std;int main() in

9、t i = 1; do printf( “ ” ); i+; while(i = 10); return 0;第16頁/共69頁例2、統(tǒng)計正數(shù)【問題描述】用 do-while 語句實現(xiàn):輸入若干整數(shù),以 0 結(jié)尾,統(tǒng)計其中有多少個正整數(shù)?!据斎敫袷健恳恍腥舾烧麛?shù),最后一個為 0?!据敵龈袷健恳恍幸粋€整數(shù),表示輸入的數(shù)據(jù)中正整數(shù)的個數(shù)?!緲永斎搿? 6 -3 2 0【樣例輸出】3第17頁/共69頁/p4-2-2#includeusing namespace std;int main() int x,s = 0; do cin x; if(x 0) s+; while(x != 0); cout

10、 s endl; return 0;第18頁/共69頁例3、投資收益【問題描述】小華在去年賺了一大筆錢!他想把這些錢用于投資,并對自己能得到多少收益感到好奇。已知投資的年利率為 r(020 之間的整數(shù)),小華現(xiàn)有 m 元錢。他想知道投資多少年后,他的錢將會超過 y 元。要求用 do-while 語句實現(xiàn)?!据斎敫袷健恳恍腥齻€整數(shù)r、m和y,相鄰兩個整數(shù)之間用一個空格隔開。m為1001000000之間的整數(shù)?!据敵龈袷健恳恍幸粋€整數(shù),即要投資的年數(shù)。保證答案的范圍在 1400 之間。第19頁/共69頁【樣例輸入】5 5000 6077【樣例輸出】4/p4-2-3#includeusing nam

11、espace std;int main() double r,m,y; int k = 0; cin r m y; do m = m * (1 + r / 100); k = k + 1; while(m = y) cout k endl; return 0;第20頁/共69頁例4、數(shù)字和【問題描述】輸入一個正整數(shù),輸出它的各位數(shù)字之和?!据斎敫袷健恳恍幸粋€正整數(shù),int 范圍以內(nèi)?!据敵龈袷健恳恍幸粋€正整數(shù),表示答案?!緲永斎搿?58【樣例輸出】15第21頁/共69頁【問題分析】求一個正整數(shù)的各位數(shù)字之和,需要“分解”出它的每一位數(shù)字,每次進行累加。定義累加器 s,初始化為 0。對于正整數(shù)

12、 n,分解的過程就是從低位到高位,不斷求余累加(s += n % 10)和整除(n = n / 10),直到 n 等于 0。第22頁/共69頁/p4-2-4#includeusing namespace std;int main() int n,s = 0; scanf( “ %d ” ,&n); do s += n % 10; n /= 10; while(n != 0); printf( “ %dn ” ,s); return 0;第23頁/共69頁實踐鞏固第24頁/共69頁第 3 課 for 語句學習目標1. 熟練掌握 for 語句的格式、功能和應用場合。2. 學會用 for 語

13、句改寫 while 和 do-while 語句。3. 熟練應用 for 語句解決一些實際問題。第25頁/共69頁for 語句如果重復執(zhí)行的操作(循環(huán)體)次數(shù)是固定的、已知的,則一般使用 for 語句。for 語句的格式如下:for( 表達式 1; 表達式 2; 表達式 3) 循環(huán)體第26頁/共69頁例1、用 for 語句實現(xiàn):輸出一行 10 個“”。/p4-3-1a#includeusing namespace std;int main() for(int i = 1; i = 10; i+) printf( “ ” ); printf( “ n ” ); return 0;第27頁/共69頁

14、for 語句寫法靈活,上述程序也可以寫成:/p4-3-1b#includeusing namespace std;int main() int i = 1; for(; i = 10; i+) printf( “ ” ); printf( “ n ” ); return 0;第28頁/共69頁還可以寫成:/p4-3-1c#includeusing namespace std;int main() int i = 1; for(; i = 10; ) printf( “ n ” ); i+; printf( “ n ” ); return 0;第29頁/共69頁例2、斐波那契數(shù)列【問題描述】斐波

15、那契數(shù)列是指這樣的數(shù)列:第一個數(shù)和第二個數(shù)都為 1,接下來每個數(shù)都等于前面兩個數(shù)之和。編程輸入一個正整數(shù) k,輸出斐波那契數(shù)列第 k 個數(shù)?!据斎敫袷健恳恍幸粋€正整數(shù) k,1k46?!据敵龈袷健恳恍幸粋€正整數(shù),表示斐波那契數(shù)列第 k 個數(shù)的大小?!緲永斎搿?9【樣例輸出】4181【問題分析】第30頁/共69頁/p4-3-2#includeusing namespace std;int main() int k; cin k; int k1 = 1,k2 = 1,k3 = 1; for(int i = 3; i = k; i+) k3 = k1 + k2; k1 = k2; / 迭代法 k2

16、= k3; cout k3 endl; return 0;第31頁/共69頁例3、求平均年齡【問題描述】給出一個班級里每名學生的年齡(正整數(shù)),求所有學生的平均年齡,保留到小數(shù)點后兩位?!据斎敫袷健恳恍幸粋€正整數(shù) n,表示學生的人數(shù),1n100。后面 n 行,每行一個正整數(shù),表示學生的年齡,15年齡25。【輸出格式】一行一個浮點數(shù),保留到小數(shù)點后兩位?!緲永斎搿?1817【樣例輸出】17.50第32頁/共69頁/p4-3-3#includeusing namespace std;int main() int n; float s; scanf( “ %d ” ,&n); for(in

17、t i = 1; i = n; i+) int x; scanf (%d, &x); s += x; printf( “ %.2fn ” ,s/n); return 0;第33頁/共69頁例4、整數(shù)的個數(shù)【問題描述】給定 k 個正整數(shù),每個數(shù)都是大于或等于 1,且小于或等于 10。編程統(tǒng)計其中 1、5 和 10 出現(xiàn)的次數(shù)。【輸入格式】第一行一個正整數(shù) k;第二行包含 k 個正整數(shù),每兩個正整數(shù)之間用一個空格隔開?!据敵龈袷健康谝恍袨?1 出現(xiàn)的次數(shù),第二行為 5 出現(xiàn)的次數(shù),第三行為 10 出現(xiàn)的次數(shù)?!緲永斎搿?1 5 8 10 5【樣例輸出】121第34頁/共69頁/p4-3-

18、4#includeusing namespace std;int main() int n; int s1 = 0,s2 = 0,s3 = 0; scanf (%d, &n); for(int i = 1; i = n; i+) int x; scanf( “ %d ” ,&x); if(x = 1) s1+; if(x = 5) s2+; if(x = 10) s3+; printf( “ %dn%dn%dn ” ,s1,s2,s3); return 0;第35頁/共69頁實踐鞏固第36頁/共69頁第 4 課 循環(huán)嵌套學習目標1. 理解循環(huán)嵌套的含義。2. 熟練應用循環(huán)語句及

19、其嵌套解決一些實際問題。第37頁/共69頁循環(huán)結(jié)構(gòu)的嵌套循環(huán)結(jié)構(gòu)與分支結(jié)構(gòu)的嵌套類似,也可以在一個循環(huán)語句的循環(huán)體里出現(xiàn)另一個循環(huán)語句,不管是 while 語句、do-while 語句還是 for 語句。這樣的循環(huán)結(jié)構(gòu)稱為“循環(huán)嵌套”。第38頁/共69頁例1、輸出矩形【問題描述】輸入 n 和 m,輸出一個 n 行 m 列的“*”矩形圖案?!据斎敫袷健恳恍袃蓚€正整數(shù) n 和 m,中間用一個空格隔開,1n、m100。【輸出格式】輸出一個 n 行 m 列的“*”矩形圖案。【樣例輸入】3 4【樣例輸出】*第39頁/共69頁/p4-4-1#includeusing namespace std;int m

20、ain() int n,m; scanf (%d %d,&n,&m); for(int i = 1; i = n; i+) for(int j = 1; j = m; j+) printf( “ * ” ); printf( “ n ” ); return 0;【問題分析】要輸出 n 行,所以可以編寫一個外層循環(huán),窮舉行。然后,在循環(huán)體里,還要輸出 m 個“*”,所以再嵌套一個內(nèi)層循環(huán),窮舉每一行的“*”個數(shù)。第40頁/共69頁例2、數(shù)字三角形【問題描述】輸入一個正整數(shù) n,輸出 n 行的數(shù)字三角形。其中,第 1 行為數(shù)字 1,第 2 行為數(shù)字 23,第 3行為數(shù)字 456,第

21、 4 行為數(shù)字 7890,第 5 行為數(shù)字 12345,【輸入格式】一行一個正整數(shù) n,1n100?!据敵龈袷健縩 行的數(shù)字三角形?!緲永斎搿?【樣例輸出】1234567890第41頁/共69頁/p4-4-2#includeusing namespace std;int main() int n,t = 1; scanf (%d,&n); for(int i = 1; i = n; i+) for(int j = 1; j = i; j+) printf( “ %d ” ,t % 10); t+; printf( “ n ” ); return 0;第42頁/共69頁例3、與 7 無

22、關(guān)的數(shù)【問題描述】一個正整數(shù),如果它能被 7 整除,或者它的某一位上的數(shù)字為 7,則稱其為“與 7 相關(guān)”的數(shù)?,F(xiàn)在,請編程求出所有小于或等于 n 的“與 7 無關(guān)”的正整數(shù)個數(shù)?!据斎敫袷健恳恍幸粋€正整數(shù) n,n106?!据敵龈袷健恳恍幸粋€整數(shù),表示答案?!緲永斎搿?1【樣例輸出】17第43頁/共69頁/p4-4-3#includeusing namespace std;int main() int n,ans = 0; cin n; for(int i = 1; i = n; i+) int flag1 = 1, flag2 = 1; if(i % 7 = 0) flag1 = 0; i

23、nt x = i; while(x & flag2) if(x % 10 = 7) flag2 = 0; x = x / 10; if(flag1 & flag2) ans+; cout ans endl; return 0;第44頁/共69頁實踐鞏固第45頁/共69頁第 5 課 break 和 continue 語句學習目標1. 理解 break 語句和 continue 語句的作用。2. 學會使用 break 語句和 continue 語句。第46頁/共69頁break 和 continue 語句在循環(huán)結(jié)構(gòu)中,有時需要提前跳出循環(huán)體,或者忽略本次循環(huán)的后續(xù)語句而去執(zhí)行下一次

24、循環(huán)。為此,C+ 提供了 break 語句和 continue 語句。第47頁/共69頁1. break 語句 在循環(huán)體中遇到 break 語句,就會立刻跳出循環(huán)體,執(zhí)行循環(huán)結(jié)構(gòu)后面的語句。例 1、與 7 無關(guān)的數(shù)?!締栴}描述】一個正整數(shù),如果它能被 7 整除,或者它的某一位上的數(shù)字為 7,則稱其為“與 7 相關(guān)”的數(shù)?,F(xiàn)在,請編程求出所有小于或等于 n 的“與 7 無關(guān)”的正整數(shù)個數(shù)?!据斎敫袷健恳恍幸粋€正整數(shù) n,n106 。【輸出格式】一行一個整數(shù),表示答案。【樣例輸入】21【樣例輸出】17第48頁/共69頁【問題分析】判斷 x 中是否有數(shù)字 7 的時候,一旦出現(xiàn)“x % 10 = 7”

25、,則說明 x 是與 7 相關(guān)的數(shù),就可以用 break 語句立刻退出當前的 while 循環(huán),這樣可以提高程序的效率。第49頁/共69頁/p4-5-1#includeusing namespace std;int main() int n,ans = 0; cin n; for(int i = 1; i = n; i+) int flag1 = 1,flag2 = 1; if(i % 7 = 0) flag1 = 0; int x = i; while(x) if(x % 10 = 7) flag2 = 0; break; x = x / 10; if(flag1 & flag2) a

26、ns+; cout ans endl; return 0;第50頁/共69頁2. continue 語句在循環(huán)體中遇到 continue 語句,就會忽略本次循環(huán)的后續(xù)語句而去執(zhí)行下一次循環(huán)。例 2、與 7 無關(guān)的數(shù)。【問題描述】一個正整數(shù),如果它能被 7 整除,或者它的某一位上的數(shù)字為 7,則稱其為“與 7 相關(guān)”的數(shù)。請編程求出所有小于或等于 n 的“與 7 無關(guān)”的正整數(shù)個數(shù)。【輸入格式】一行一個正整數(shù) n,n106 ?!据敵龈袷健恳恍幸粋€整數(shù),表示答案。第51頁/共69頁【問題分析】當 i 是 7 的倍數(shù),即“i % 7 = 0”時,說明 i 已經(jīng)是與 7 相關(guān)的數(shù)了,此時,就不再需要判

27、斷 i的某一位是否是 7 了。所以,可以用 continue 忽略本次循環(huán)的后續(xù)語句,而去執(zhí)行下一次循環(huán),判斷下一個數(shù)了。這樣做同樣可以提高程序的效率。【樣例輸入】21【樣例輸出】17第52頁/共69頁/p4-5-2#includeusing namespace std;int main() int n,ans = 0; cin n; for(int i = 1; i = n; i+) int flag = 1; if(i % 7 = 0) continue; int x = i; while(x) if(x % 10 = 7) flag = 0; break; x = x / 10; if(

28、flag) ans+; cout ans endl; return 0;第53頁/共69頁3. break 語句和 continue 語句的應用舉例例3、素數(shù)的判定【問題描述】輸入一個正整數(shù),判斷其是否為素數(shù)。如果是,則輸出“prime”;否則,輸出“not prime”?!据斎敫袷健恳恍幸粋€正整數(shù) n,2n107 。【輸出格式】一行一個字符串?!緲永斎搿?【樣例輸出】not prime第54頁/共69頁/p4-5-3#include#includeusing namespace std;int main() int x; cin x; for(int i = 2; i = sqrt(x); i+)/ 或者 i*i =x if(x % i = 0) cout “ not “ ; break; cout “ prime ” endl; return 0;第55頁/共69頁例4、素數(shù)的統(tǒng)計【問題描述】輸入兩個正整數(shù) m 和 n,判斷 m 和 n 之間(含 m 和 n)一共有多少個素數(shù)。【輸入格式】一行兩個正整數(shù) m 和 n,2mn104 。【輸出格式】一行一個整數(shù),表示素數(shù)的個數(shù)。

溫馨提示

  • 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

提交評論