3第三章循環(huán)結(jié)構(gòu)_第1頁
3第三章循環(huán)結(jié)構(gòu)_第2頁
3第三章循環(huán)結(jié)構(gòu)_第3頁
3第三章循環(huán)結(jié)構(gòu)_第4頁
3第三章循環(huán)結(jié)構(gòu)_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1 1第第三三章章循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)2 2第第三三章章 什么是循環(huán)結(jié)構(gòu)?什么是循環(huán)結(jié)構(gòu)? 循環(huán)語句循環(huán)語句 練習(xí)和綜合設(shè)計(jì)練習(xí)和綜合設(shè)計(jì)3 3第第三三章章循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是通過對(duì)條件的判斷來重復(fù)執(zhí)行某是通過對(duì)條件的判斷來重復(fù)執(zhí)行某些程序語句或程序段些程序語句或程序段 c c語言中是用語言中是用forfor語語句或句或whilewhile語句或語句或dodowhilewhile語句來語句來構(gòu)成循環(huán)結(jié)構(gòu)的。構(gòu)成循環(huán)結(jié)構(gòu)的。循環(huán)結(jié)構(gòu)的主要功循環(huán)結(jié)構(gòu)的主要功能是重復(fù)執(zhí)行某些能是重復(fù)執(zhí)行某些語句或某段程序。語句或某段程序。 4 4第第三三章章問題問題: :在唱歌等大獎(jiǎng)賽評(píng)分時(shí),一般要有若干名在唱歌等大獎(jiǎng)賽

2、評(píng)分時(shí),一般要有若干名評(píng)委,記分規(guī)則為:去掉一個(gè)最高分,去評(píng)委,記分規(guī)則為:去掉一個(gè)最高分,去掉一個(gè)最低分,再算平均分。設(shè)按百分制掉一個(gè)最低分,再算平均分。設(shè)按百分制計(jì)分,試設(shè)計(jì)一個(gè)算分程序。計(jì)分,試設(shè)計(jì)一個(gè)算分程序。 用循環(huán)來累用循環(huán)來累計(jì)總得分計(jì)總得分程序5 5第第三三章章語句形式:語句形式:for(for(表達(dá)式表達(dá)式1;1;表達(dá)式表達(dá)式2;2;表達(dá)式表達(dá)式3) 3) 語句語句; ; 可以是復(fù)合語句可以是復(fù)合語句非非0時(shí)執(zhí)行循環(huán)體時(shí)執(zhí)行循環(huán)體循環(huán)前先求解循環(huán)前先求解常為賦值語句常為賦值語句每次執(zhí)行完循環(huán)體后每次執(zhí)行完循環(huán)體后求解求解,常為增量或減量常為增量或減量執(zhí)行過程執(zhí)行過程 :(1

3、1)求解表達(dá)式)求解表達(dá)式1 1,為循環(huán)控制,為循環(huán)控制變量賦初值。變量賦初值。(2 2)求解表達(dá)式)求解表達(dá)式2 2,若表達(dá)式,若表達(dá)式2 2的的值為真,則執(zhí)行循環(huán)體一次,若值為真,則執(zhí)行循環(huán)體一次,若為假則結(jié)束循環(huán)結(jié)構(gòu),轉(zhuǎn)去執(zhí)行為假則結(jié)束循環(huán)結(jié)構(gòu),轉(zhuǎn)去執(zhí)行循環(huán)的后繼語句。循環(huán)的后繼語句。(3 3)執(zhí)行完一次循環(huán)體后,接著)執(zhí)行完一次循環(huán)體后,接著求解表達(dá)式求解表達(dá)式3 3,對(duì)循環(huán)控制變量進(jìn),對(duì)循環(huán)控制變量進(jìn)行增量或減量操作,再重復(fù)第行增量或減量操作,再重復(fù)第2 2步步操作。操作。for(x=1;x5;x+)for(x=1;x5;x+) printf( printf( %d%d ;x;x);

4、);6 6第第三三章章例例 從鍵盤上輸入張三同學(xué)五門課程的成績從鍵盤上輸入張三同學(xué)五門課程的成績6767、9292、7878、8383、7575,計(jì)算出平均成績并輸出。,計(jì)算出平均成績并輸出。#include stdio.h#include main()main()intint i,sum,score; sum=0; i,sum,score; sum=0; for(i for(i=1; i=5; i+)=1; i=5; i+) scanf(%d,&score scanf(%d,&score); sum=sum+score; ); sum=sum+score; printf(n

5、printf(n平均成績?yōu)椋浩骄煽優(yōu)椋?6.2f n,%6.2f n, sum/5.0); sum/5.0); 第第i i次循環(huán)次循環(huán) i=5 i=5 的值的值 sumsum的值的值 1 1 真真 0+670+67 2 2 真真 67+9267+92 3 3 真真 159+78159+78 4 4 真真 237+83237+83 5 5 真真 320+75320+75 6 6 假假 結(jié)束循環(huán)結(jié)束循環(huán)7 7第第三三章章例例 從鍵盤上輸入一個(gè)大于從鍵盤上輸入一個(gè)大于2 2的整數(shù)的整數(shù)n n,判斷,判斷n n是是不是素?cái)?shù)。不是素?cái)?shù)。 只能被只能被1 1和它本身整除的整數(shù)稱為素?cái)?shù)。在和它本身整除的整

6、數(shù)稱為素?cái)?shù)。在數(shù)學(xué)中,要判斷數(shù)學(xué)中,要判斷n n是否為素?cái)?shù),通常讓是否為素?cái)?shù),通常讓n n除以除以2 2到到n n的平方根之間的每一個(gè)整數(shù),如果的平方根之間的每一個(gè)整數(shù),如果n n能被能被2 2到到n n的的平方根之間的某個(gè)整數(shù)整除,則說明平方根之間的某個(gè)整數(shù)整除,則說明n n不是素?cái)?shù),不是素?cái)?shù),否則否則n n一定是素?cái)?shù)。一定是素?cái)?shù)。程序8 8第第三三章章省略表達(dá)式省略表達(dá)式1 1i=1;i=1;for( ;i=10;i+)for( ;i=10;i+) sum=sum+i; sum=sum+i;forfor語句的任何一個(gè)表達(dá)式都可以省,但不能語句的任何一個(gè)表達(dá)式都可以省,但不能省略分號(hào)。例如:

7、省略分號(hào)。例如:省略表達(dá)式省略表達(dá)式3 3for( i=1;i=10;)for( i=1;i=10;) sum=sum+i; i+; sum=sum+i; i+; 省略表達(dá)式省略表達(dá)式2 2時(shí),時(shí),循環(huán)將變成死循環(huán)循環(huán)將變成死循環(huán)循環(huán)體由多個(gè)語句組成時(shí),循環(huán)體由多個(gè)語句組成時(shí),應(yīng)該寫成復(fù)合語句的形式應(yīng)該寫成復(fù)合語句的形式 forfor語句中可應(yīng)用逗號(hào)表達(dá)式,使兩個(gè)或多個(gè)控語句中可應(yīng)用逗號(hào)表達(dá)式,使兩個(gè)或多個(gè)控制變量同時(shí)控制循環(huán)制變量同時(shí)控制循環(huán)for(i=0,j=10;ij;i+,jfor(i=0,j=10;ij;i+,j-)-) 循環(huán)體循環(huán)體 forfor語句允許在循環(huán)體內(nèi)改變循環(huán)控制變量的

8、值語句允許在循環(huán)體內(nèi)改變循環(huán)控制變量的值sum=0sum=0;for(count=1;count=100;count+)for(count=1;count=3000) count=100 ; if(sum=3000) count=100 ;在循環(huán)體外的語句不受循環(huán)的控制,在循環(huán)體內(nèi)在循環(huán)體外的語句不受循環(huán)的控制,在循環(huán)體內(nèi)的語句受循環(huán)的控制。的語句受循環(huán)的控制。 9 9第第三三章章語句形式:語句形式:while(while(表達(dá)式表達(dá)式) ) 語句;語句; 可以是復(fù)合語句,其可以是復(fù)合語句,其中必須含有改變條件中必須含有改變條件表達(dá)式值的語句表達(dá)式值的語句執(zhí)行過程:執(zhí)行過程:先計(jì)先計(jì)算表達(dá)式的

9、值,當(dāng)算表達(dá)式的值,當(dāng)表達(dá)式的值為非表達(dá)式的值為非 0 0 時(shí)執(zhí)行語句;為時(shí)執(zhí)行語句;為 0 0 時(shí)執(zhí)行循環(huán)的后繼時(shí)執(zhí)行循環(huán)的后繼1010第第三三章章例例 從鍵盤上輸入張三同學(xué)五門課程的成績從鍵盤上輸入張三同學(xué)五門課程的成績6767、9292、7878、8383、7575,計(jì)算出平均成績并輸出。,計(jì)算出平均成績并輸出。對(duì)下面的程序進(jìn)行修改,用對(duì)下面的程序進(jìn)行修改,用whilewhile代替代替forfor#include stdio.h#include / /* *例例3.13.1的程序的程序* */ /main()main() int int i,sum,score; sum=0; i,su

10、m,score; sum=0; for(i=1; i=5; i+) for(i=1; i=5; i+) scanf(%d,&score scanf(%d,&score); sum=sum+score; ); sum=sum+score; printf(n printf(n平均成績?yōu)椋浩骄煽優(yōu)椋?6.2f n,%6.2f n, sum/5.0); sum/5.0); 1111第第三三章章例例 計(jì)算計(jì)算1 1至至2020之間的奇數(shù)之和及偶數(shù)之和。之間的奇數(shù)之和及偶數(shù)之和。 說明:說明:判斷一個(gè)數(shù)判斷一個(gè)數(shù)n n是否為偶數(shù)的常用方法為:是否為偶數(shù)的常用方法為: n%2=0n%2=0

11、。判斷一個(gè)數(shù)判斷一個(gè)數(shù)n n是否為某個(gè)數(shù)的倍數(shù)的常用方法是否為某個(gè)數(shù)的倍數(shù)的常用方法為:為:n%n%某個(gè)數(shù)某個(gè)數(shù)=0=0,如,如 n%5=0 n%5=0 可用于判斷可用于判斷n n是是否為否為5 5的倍數(shù)。的倍數(shù)。 程序1212第第三三章章例例: :求求nn的值的值main()main() int int n,sum=0; n,sum=0; n=1; n=1; while(n=10) while(n=10) sum=sum+n; sum=sum+n; n+; n+; printf( printf( 1-101-10的累加和為的累加和為%d%d ,sum);,sum);n=1n=1 1010問題

12、:問題:1.1.語句語句 n=1n=1;能放在循環(huán)體內(nèi)嗎?;能放在循環(huán)體內(nèi)嗎?2.2.語句語句 n=10 n=10 中的等號(hào)能去掉嗎中的等號(hào)能去掉嗎?3.3.語句語句 n+ n+ 能去掉或放在循環(huán)外嗎能去掉或放在循環(huán)外嗎?4.4.如要求如要求 1 1到到 10 10 的累乘的累乘 應(yīng)怎樣修改應(yīng)怎樣修改程序?程序?s如何修改程序如何修改程序可求可求2+4+6+ +102+4+6+ +10的值的值先判斷后執(zhí)行循環(huán)體先判斷后執(zhí)行循環(huán)體1313第第三三章章語句形式:語句形式:dodo 語句;語句; while(while(表達(dá)式表達(dá)式);); 執(zhí)行過程:執(zhí)行過程:先執(zhí)行語先執(zhí)行語句,后判斷條件。句,后

13、判斷條件。表達(dá)式的值為非表達(dá)式的值為非0 0時(shí),時(shí),繼續(xù)執(zhí)行語句;表達(dá)繼續(xù)執(zhí)行語句;表達(dá)式的值為式的值為0 0時(shí),執(zhí)行時(shí),執(zhí)行循環(huán)的后繼。循環(huán)的后繼??梢允菑?fù)合語句,其可以是復(fù)合語句,其中必須含有改變條件中必須含有改變條件表達(dá)式值的語句表達(dá)式值的語句1414第第三三章章例例 求求1 1!+2+2!+3+3!+4+4!+ + +20 +20!的值。!的值。 main()main()float n=1,sum=0,t=1;float n=1,sum=0,t=1; do dot=tt=t* *n n; ; sum=sum+t; sum=sum+t; n+; while(n=20); n+; whil

14、e(n=20); printf(1!+2!+3!+ printf(1!+2!+3!+ + 20!=%e n , sum); + 20!=%e n , sum); 第第n n次循環(huán)次循環(huán) t t的值的值 sumsum的值的值 n=20n=20的值的值1 1! 0+1! 1 1! 0+1! 真真(n=2)(n=2)2 2! 1+2! 2 2! 1+2! 真真(n=3)(n=3)3 3! 3+3! 3 3! 3+3! 真真(n=4) (n=4) 4 4! 9+4! 4 4! 9+4! 真真(n=5)(n=5)5 5! 33+5! 5 5! 33+5! 真真(n=6)(n=6) 20 20! 20 2

15、0! 假假(n=21)(n=21) 結(jié)束循環(huán)結(jié)束循環(huán)1515第第三三章章在循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu)稱在循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu)稱為循環(huán)嵌套。內(nèi)層循環(huán)中再包含其它循環(huán)結(jié)為循環(huán)嵌套。內(nèi)層循環(huán)中再包含其它循環(huán)結(jié)構(gòu),稱為多重循環(huán)嵌套。構(gòu),稱為多重循環(huán)嵌套。 c c語言中的三種語言中的三種循環(huán)語句(循環(huán)語句(forfor、whilewhile、dodowhilewhile)可以互相)可以互相嵌套,構(gòu)成所需嵌套,構(gòu)成所需的多重循環(huán)結(jié)構(gòu)的多重循環(huán)結(jié)構(gòu)循環(huán)嵌套時(shí),內(nèi)層循環(huán)必須被完全包含于外循環(huán)嵌套時(shí),內(nèi)層循環(huán)必須被完全包含于外層循環(huán)內(nèi),不允許循環(huán)結(jié)構(gòu)交叉。層循環(huán)內(nèi),不允許循環(huán)結(jié)構(gòu)交叉。 1

16、616第第三三章章例例3.103.10 打印由打印由星號(hào)星號(hào)組成的組成的5 5行行5 5列的矩形列的矩形* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *以下以下循環(huán)語句可在同一行上輸出五個(gè)星號(hào):循環(huán)語句可在同一行上輸出五個(gè)星號(hào): for(j=1;j=5;j+) printffor(j=1;j=5;j+) printf(* *););s若讓該循環(huán)語句執(zhí)行五次,且每執(zhí)行一次輸若讓該循環(huán)語句執(zhí)行五次,且每執(zhí)行一次輸出一個(gè)換行,就可以輸出五行五列星號(hào)出一個(gè)換行,就可以輸

17、出五行五列星號(hào)雙重循環(huán)的執(zhí)行過程如下:雙重循環(huán)的執(zhí)行過程如下:i=1i=1時(shí),時(shí),j=1,2,3,4,5j=1,2,3,4,5, 輸出輸出5 5個(gè)個(gè)* *并換行并換行i=2i=2時(shí),時(shí),j=1,2,3,4,5j=1,2,3,4,5, 輸出輸出5 5個(gè)個(gè)* *并換行并換行i=3i=3時(shí),時(shí),j=1,2,3,4,5j=1,2,3,4,5, 輸出輸出5 5個(gè)個(gè)* *并換行并換行i=4i=4時(shí),時(shí),j=1,2,3,4,5j=1,2,3,4,5, 輸出輸出5 5個(gè)個(gè)* *并換行并換行i=5i=5時(shí),時(shí),j=1,2,3,4,5j=1,2,3,4,5, 輸出輸出5 5個(gè)個(gè)* *并換行并換行for(i=1;i

18、=5;i+) for(i=1;i=5;i+) for(j=1;j=5;j+) for(j=1;j=5;j+) printf printf(* *);); printf(n printf(n); ); 多重循環(huán)的執(zhí)行過多重循環(huán)的執(zhí)行過程為:程為:外循環(huán)跨一步,外循環(huán)跨一步,內(nèi)循環(huán)轉(zhuǎn)一圈內(nèi)循環(huán)轉(zhuǎn)一圈 1717第第三三章章for(i=1;i=5;i+) for(i=1;i=5;i+) for(j=1;j=5;j+) for(j=1;j=5;j+) printf printf(* *);); printf(n printf(n); ); s要要打印如下打印如下圖形應(yīng)如何修改下面的雙重循環(huán)圖形應(yīng)如何修改

19、下面的雙重循環(huán):* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *要求:要求:在在vc+6.0vc+6.0環(huán)境下,通過師生環(huán)境下,通過師生互動(dòng)的形式完成該互動(dòng)的形式完成該題的編程題的編程 1818第第三三章章語句形式:語句形式: break;break;u執(zhí)行過程:執(zhí)行過程:

20、終止終止switchswitch語句或循環(huán)語句的執(zhí)語句或循環(huán)語句的執(zhí)行,跳出當(dāng)前行,跳出當(dāng)前breakbreak所在的控制結(jié)構(gòu),轉(zhuǎn)去所在的控制結(jié)構(gòu),轉(zhuǎn)去執(zhí)行后繼語句。執(zhí)行后繼語句。 double e=1.0,u=1.0; double e=1.0,u=1.0; int int n; n; for(n=1; n=20; n+) for(n=1; n=20; n+) u=u/n; u=u/n; e=e+u; e=e+u; if(u1.0e-7) break; if(u9 | ch9 | ch0) continue; 0) continue; count+; count+; printf(count

21、 printf(count=%d n,count); =%d n,count); 在在whilewhile和和do-whiledo-while循環(huán)結(jié)構(gòu)中,循環(huán)結(jié)構(gòu)中,continuecontinue立立即轉(zhuǎn)去檢查循環(huán)控制表達(dá)式,在即轉(zhuǎn)去檢查循環(huán)控制表達(dá)式,在forfor循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)中,則立即轉(zhuǎn)向計(jì)算表達(dá)式中,則立即轉(zhuǎn)向計(jì)算表達(dá)式3 3,對(duì)循環(huán)控制變,對(duì)循環(huán)控制變量增量或減量。量增量或減量。 2020第第三三章章例例: :本例模擬了一個(gè)物體的自由落體過程。從本例模擬了一個(gè)物體的自由落體過程。從“高空高空”釋放一個(gè)物體,它在下降的過程中速度釋放一個(gè)物體,它在下降的過程中速度會(huì)越來越快,落地反彈

22、后在上升的過程中它的會(huì)越來越快,落地反彈后在上升的過程中它的速度會(huì)越來越慢。圖速度會(huì)越來越慢。圖3-14顯示某一時(shí)刻物體所顯示某一時(shí)刻物體所處的位置。處的位置。程序2121第第三三章章語句語句while(!e); while(!e); 中的表達(dá)式!中的表達(dá)式!e e等價(jià)于等價(jià)于 a)a)e=0 e=0 b)b)e!=1 e!=1 c)c)e!=0 e!=0 d)d)e=1e=1 下面程序段的運(yùn)行結(jié)果是下面程序段的運(yùn)行結(jié)果是_。a=1;b=2; c=2;a=1;b=2; c=2;while(abc) t=a;a=b;b=t;c-;while(abc) t=a;a=b;b=t;c-;printf(%d,%d,%d,a,b,cprintf(%d,%d,%d,a,b,c););a)a)1,2,0 1,2,0 b)b)2,1,0 2,1,0 c)c)1,2,1 1,2,1 d)d)2,1,12,1,1下面程序段的運(yùn)行結(jié)果是下面程序段的運(yùn)行結(jié)果是_。x=y=0;x=y=0;while(x15) y+;x+=+y; while(x10 &

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論