




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目五
循環(huán)結(jié)構(gòu)程序設(shè)計(jì)任務(wù)12求階乘——for語句任務(wù)13求π的近似值——while語句任務(wù)14計(jì)算數(shù)字位數(shù)——do…while語句任務(wù)15統(tǒng)計(jì)非正常視力人數(shù)——轉(zhuǎn)移控制語句任務(wù)16輸出區(qū)間內(nèi)素?cái)?shù)——循環(huán)結(jié)構(gòu)的比較與嵌套任務(wù)描述:編寫程序,求10!(10!=1*2*3…*10)。任務(wù)分析:在本任務(wù)中,“有規(guī)律性的重復(fù)”表現(xiàn)為每次在上次乘積的基礎(chǔ)上再乘以比上次大1的數(shù),所以應(yīng)該用循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)。從1到10共有10個(gè)數(shù)相乘,也就是循環(huán)變量初值、步長增量、循環(huán)次數(shù)都已確定,所以適合用for語句來實(shí)現(xiàn)。任務(wù)12求階乘——for語句5.1for語句for語句的一般形式for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
{語句序列;}說明:(1)“表達(dá)式1”一般為賦值表達(dá)式,為循環(huán)變量賦初值。(2)“表達(dá)式2”一般為關(guān)系表達(dá)式或邏輯表達(dá)式,表示循環(huán)條件。(3)“表達(dá)式3”一般為賦值表達(dá)式,表示循環(huán)變量的更新。(4)“語句序列”是需要重復(fù)執(zhí)行的循環(huán)體,可以是單條語句,也可以是用花括號(hào)括起來的復(fù)合語句。任務(wù)12求階乘——for語句5.1for語句for語句的一般形式(1)計(jì)算“表達(dá)式1”的值,即對(duì)循環(huán)變量賦初值。(2)以“表達(dá)式2”作為循環(huán)條件,若結(jié)果為真,轉(zhuǎn)步驟(3);若為假,轉(zhuǎn)步驟(5)。(3)執(zhí)行一次循環(huán)體,即“語句序列”。(4)計(jì)算“表達(dá)式3”,即對(duì)循環(huán)變量進(jìn)行更新,轉(zhuǎn)到步驟(2)。(5)結(jié)束循環(huán),執(zhí)行for循環(huán)之后的語句。任務(wù)12求階乘——for語句5.1for語句for語句的一般形式從以上執(zhí)行流程可知,for循環(huán)先判斷條件后執(zhí)行循環(huán)體,因此循環(huán)次數(shù)可能為0。例:以下為計(jì)算1+2+…+10的程序段,試陳述程序執(zhí)行過程。sum=0;for(i=1;i<=10;i++)sum+=i;任務(wù)12求階乘——for語句5.1for語句2.for語句的變式(1)for語句中的表達(dá)式可以部分或全部省略,但兩個(gè)“;”不能省略。變式1:sum=0,i=1;for(;i<=10;i++)sum+=i;任務(wù)12求階乘——for語句變式2:sum=0;for(i=1;i<=10;){sum+=i;i++;}變式3:sum=0,i=1;for(;i<=10;){sum+=i;i++;}5.1for語句(2)for語句中的表達(dá)式允許出現(xiàn)與循環(huán)控制無關(guān)的表達(dá)式,例如剛才的程序段可以做如下變式:for(sum=0,i=1;i<=10;sum+=i,i++);任務(wù)12求階乘——for語句#include<stdio.h>main(){inti,t=1;for(i=1;i<=10;i++)t*=i;printf("10!=%d",t);}任務(wù)實(shí)施:任務(wù)12求階乘——for語句任務(wù)總結(jié):for語句特別適合于給定循環(huán)變量初值、步長增量以及循環(huán)次數(shù)的循環(huán)結(jié)構(gòu)。在使用for循環(huán)實(shí)現(xiàn)求和、求積運(yùn)算時(shí)要特別注意和積變量賦初值的問題。任務(wù)拓展:輸出所有的水仙花數(shù)(水仙花數(shù)是一個(gè)三位數(shù),其各數(shù)位上的數(shù)字立方之和等于該書本身,如153=13+53+33)。任務(wù)12求階乘——for語句任務(wù)13求π的近似值——while語句任務(wù)描述:利用以下公式求解π的近似值,直到最后一項(xiàng)的絕對(duì)值小于10-8為止。任務(wù)分析:從公式來看,它滿足“有規(guī)律的重復(fù)”,要使用循環(huán)結(jié)構(gòu),但跟任務(wù)12不同的是循環(huán)次數(shù)并不確定,所以要用一種新的循環(huán)語句——while語句。5.2while語句while語句用來實(shí)現(xiàn)“當(dāng)型”循環(huán)結(jié)構(gòu),其一般格式為:while(表達(dá)式){語句序列;}(1)“表達(dá)式”一般為關(guān)系表達(dá)式或邏輯表達(dá)式,表示循環(huán)條件。(2)“語句序列”是需要重復(fù)執(zhí)行的循環(huán)體,可以是單條語句,也可以是用花括號(hào)括起來的復(fù)合語句。(3)循環(huán)體內(nèi)一般要有能夠改變表達(dá)式值的操作,最終使表達(dá)式的值變?yōu)?,如果沒有改變表達(dá)式值的操作,也可以在循環(huán)體內(nèi)借助break語句強(qiáng)行退出循環(huán)。任務(wù)13求π的近似值——while語句5.2while語句while循環(huán)的執(zhí)行流程如圖所示:(1)以“表達(dá)式”作為循環(huán)條件,若結(jié)果為真,轉(zhuǎn)步驟(2);若為假,轉(zhuǎn)步驟(4)。(2)執(zhí)行一次循環(huán)體,即“語句序列”。(3)返回步驟(1),開始下一輪的循環(huán)條件測(cè)試。(4)結(jié)束循環(huán),執(zhí)行while循環(huán)之后的語句。任務(wù)13求π的近似值——while語句5.2while語句while循環(huán)的執(zhí)行流程如圖所示:(1)以“表達(dá)式”作為循環(huán)條件,若結(jié)果為真,轉(zhuǎn)步驟(2);若為假,轉(zhuǎn)步驟(4)。(2)執(zhí)行一次循環(huán)體,即“語句序列”。(3)返回步驟(1),開始下一輪的循環(huán)條件測(cè)試。(4)結(jié)束循環(huán),執(zhí)行while循環(huán)之后的語句。任務(wù)13求π的近似值——while語句#include<stdio.h>main(){intt=1;doublepi=0,i=1;while(1/i>=1e-8){pi+=1/i*t;t=-t;i+=2;}printf("pi=%lf\n",pi*4);}任務(wù)實(shí)施:任務(wù)13求π的近似值——while語句任務(wù)總結(jié):本任務(wù)用while語句完成了循環(huán)次數(shù)不確定的求解π的問題但并不意味著while語句不能完成循環(huán)次數(shù)確定的情況。任務(wù)拓展:1.編寫程序,用while語句求解10!。2.編寫程序,從鍵盤輸入一行字符,統(tǒng)計(jì)其中英文字母、數(shù)字和其它字符的個(gè)數(shù)。任務(wù)13求π的近似值——while語句任務(wù)14計(jì)算數(shù)字位數(shù)——do…while語句任務(wù)描述:編寫程序,從鍵盤輸入一個(gè)整數(shù),計(jì)算該整數(shù)有幾位數(shù)。任務(wù)分析:本任務(wù)的基本思路是將整數(shù)反復(fù)除以10,直到商為0為止,執(zhí)行除法的次數(shù)就是該數(shù)的位數(shù)。由于整數(shù)至少有一位數(shù),也就是循環(huán)體至少要執(zhí)行一次,所以選用“直到型”循環(huán)更合適,即do…while語句。5.3do…while語句do…while語句用來實(shí)現(xiàn)“直到型”循環(huán)結(jié)構(gòu),其一般格式為:do{語句序列;}while(表達(dá)式);(1)“表達(dá)式”一般為關(guān)系表達(dá)式或邏輯表達(dá)式,表示循環(huán)條件,相當(dāng)于for語句中的“表達(dá)式2”。需要特別注意的是“while(表達(dá)式);”中的“;”不能省略。(2)“語句序列”是需要重復(fù)執(zhí)行的循環(huán)體,循環(huán)體無論是單條語句還是復(fù)合語句都建議用花括號(hào)括起來。(3)循環(huán)體內(nèi)一般要有能夠改變表達(dá)式值的操作,最終使表達(dá)式的值變?yōu)?;如果沒有改變表達(dá)式值的操作,也可以在循環(huán)體內(nèi)借助break語句強(qiáng)行退出循環(huán).。任務(wù)14計(jì)算數(shù)字位數(shù)——do…while語句5.3do…while語句do…while語句執(zhí)行過程如圖所示:(1)執(zhí)行一次循環(huán)體,即“語句序列”。(2)以“表達(dá)式”作為循環(huán)條件,若結(jié)果為真,轉(zhuǎn)步驟(1);若為假,轉(zhuǎn)步驟(3)。(3)結(jié)束循環(huán),執(zhí)行do…while循環(huán)之后的語句。從以上執(zhí)行流程可知,do…while循環(huán)是先執(zhí)行循環(huán)后體判斷條件,因此循環(huán)次數(shù)>0。任務(wù)14計(jì)算數(shù)字位數(shù)——do…while語句#include<stdio.h>main(){intx,num=0;printf("請(qǐng)輸入一個(gè)整數(shù):");scanf("%d",&x);do{num++;x=x/10;}while(x!=0);printf("有%d位數(shù)\n",num);}任務(wù)實(shí)施:任務(wù)14計(jì)算數(shù)字位數(shù)——do…while語句任務(wù)總結(jié):本任務(wù)用do…while語句完成了循環(huán)體至少循環(huán)一次但總循環(huán)次數(shù)不確定的求解數(shù)字位數(shù)的問題,要注意條件while(x!=0);中的“;”不能遺漏。任務(wù)拓展:1.輸入兩個(gè)正整數(shù),使用輾轉(zhuǎn)相除法求它們的最大公約數(shù)和最小公倍數(shù)。(輾轉(zhuǎn)相除法又名歐幾里得算法,這條算法基于一個(gè)定理:兩個(gè)正整數(shù)a和b,它們的最大公約數(shù)等于較大數(shù)a除以較小數(shù)b的余數(shù)c和較小數(shù)b之間的最大公約數(shù)。)2.用do…while語句完成任務(wù)13中求解π的近似值。任務(wù)14計(jì)算數(shù)字位數(shù)——do…while語句任務(wù)描述:現(xiàn)行推廣使用的對(duì)數(shù)視力表采用5分記錄法,六歲以上的兒童或成人有5.0及以上的視力方為正常視力。編寫兩個(gè)程序,完成以下功能:(1)輸入十個(gè)中學(xué)生的裸眼視力,判斷是否含有非正常視力。(2)輸入十個(gè)中學(xué)生的裸眼視力,輸出其中的非正常視力并統(tǒng)計(jì)非正常視力出現(xiàn)的次數(shù)。任務(wù)分析:在本任務(wù)中,程序有可能不是完整地執(zhí)行十次循環(huán),這時(shí)需要根據(jù)情況在循環(huán)結(jié)構(gòu)中加入轉(zhuǎn)移控制語句:break語句或continue語句。任務(wù)15統(tǒng)計(jì)非正常視力人數(shù)——轉(zhuǎn)移控制語句5.4break語句在任務(wù)11中已經(jīng)介紹過break語句可以使程序跳出switch結(jié)構(gòu),轉(zhuǎn)而執(zhí)行switch結(jié)構(gòu)之后的語句。實(shí)際上break語句的作用不止如此,它還可以用于for語句、while語句以及do…while語句構(gòu)成的循環(huán)結(jié)構(gòu)中,使程序跳出循環(huán),轉(zhuǎn)移到循環(huán)之后的語句。任務(wù)15統(tǒng)計(jì)非正常視力人數(shù)——轉(zhuǎn)移控制語句5.4break語句例如著名的愛因斯坦階梯問題:有一個(gè)長階梯,若每步上2階,最后剩下1階;若每步上3階,最后剩2階;若每步上5階,最后剩下4階;若每步上6階,最后剩5階;只有每步上7階,最后剛好一階也不剩,請(qǐng)問該階梯至少有多少階。程序代碼如下:for(i=7;1;i=i+7){if(i%3==2&&i%5==4&&i%6==5){printf("%d",i);break;}}任務(wù)15統(tǒng)計(jì)非正常視力人數(shù)——轉(zhuǎn)移控制語句5.4break語句使用break語句有兩點(diǎn)需要注意:(1)break語句在switch結(jié)構(gòu)中,只退出其所在的switch結(jié)構(gòu),而不影響switch所在的任何循環(huán)或與其嵌套的switch結(jié)構(gòu)。(2)break語句在嵌套的循環(huán)中只能跳出它所在的那層循環(huán),而不能從內(nèi)層循環(huán)直接跳出最外層循環(huán)(這一點(diǎn)將在下一任務(wù)中體現(xiàn))。任務(wù)15統(tǒng)計(jì)非正常視力人數(shù)——轉(zhuǎn)移控制語句5.5continue語句continue語句只能用在循環(huán)中,用來提前結(jié)束本輪循環(huán),進(jìn)入下一輪循環(huán)。continue語句與break語句的區(qū)別是:前者只是提前結(jié)束本輪循環(huán)進(jìn)入下一輪循環(huán),也就是不執(zhí)行本輪循環(huán)continue之后的語句,并不跳出循環(huán)結(jié)構(gòu),而后者則是直接跳出循環(huán)結(jié)構(gòu)。例如:for(i=1;i<=30;i++){if(i%3==0)continue;printf("%5d",i);}任務(wù)15統(tǒng)計(jì)非正常視力人數(shù)——轉(zhuǎn)移控制語句(1)#include<stdio.h>main(){inti,t=0;floatx;printf("請(qǐng)輸入十個(gè)學(xué)生的視力:");for(i=1;i<=10;i++){scanf("%f",&x);if(x<5.0){t=1;break;}}if(t==1)printf("有非正常視力\n");elseprintf("沒有非正常視力\n");}任務(wù)實(shí)施:任務(wù)15統(tǒng)計(jì)非正常視力人數(shù)——轉(zhuǎn)移控制語句(2)#include<stdio.h>main(){inti,t=0;floatx;printf("請(qǐng)輸入十個(gè)學(xué)生的視力:");for(i=1;i<=10;i++){scanf("%f",&x);if(x>=5.0)continue;printf("%5.1f",x);t++;}printf("\n非正常視力出現(xiàn)%d次\n",t);}任務(wù)實(shí)施:任務(wù)15統(tǒng)計(jì)非正常視力人數(shù)——轉(zhuǎn)移控制語句任務(wù)總結(jié):程序(1)中一旦遇到非正常視力便啟動(dòng)break語句直接退出循環(huán);程序(2)中遇到正常視力就執(zhí)行continue語句結(jié)束本次循環(huán)進(jìn)入下一次循環(huán)。任務(wù)拓展:編寫程序,輸入一個(gè)整數(shù),判斷是否為素?cái)?shù)(素?cái)?shù)又叫質(zhì)數(shù),是指除了1和它本身外,不能被其他自然數(shù)整除的大于1的自然數(shù))。任務(wù)15統(tǒng)計(jì)非正常視力人數(shù)——轉(zhuǎn)移控制語句任務(wù)描述:請(qǐng)?jiān)谏蟼€(gè)任務(wù)拓展中素?cái)?shù)判斷的基礎(chǔ)上,繼續(xù)完善程序,輸出100以內(nèi)所有的素?cái)?shù),8個(gè)一行。任務(wù)分析:完成單個(gè)素?cái)?shù)判斷就已經(jīng)使用了循環(huán)結(jié)構(gòu),在此基礎(chǔ)上輸出區(qū)間內(nèi)所有素?cái)?shù)就需要循環(huán)結(jié)構(gòu)的嵌套了。嵌套之前,先來比較一下所有的循環(huán)結(jié)構(gòu),以便選擇合適的循環(huán)嵌套。任務(wù)16輸出區(qū)間內(nèi)素?cái)?shù)——循環(huán)結(jié)構(gòu)的比較與嵌套5.6循環(huán)結(jié)構(gòu)的比較前面的任務(wù)分別介紹了for語句、while語句以及do…while語句構(gòu)成的三種循環(huán)結(jié)構(gòu),通常狀況下這三種結(jié)構(gòu)是通用的,但在使用上各有特色。如果在執(zhí)行循環(huán)體之前能夠確定循環(huán)次數(shù),或者能夠確定循環(huán)變量的初值、終值和步長,一般選用for循環(huán);如果循環(huán)次數(shù)由循環(huán)體執(zhí)行情況確定,并且循環(huán)體有可能一次也不執(zhí)行,一般選用while循環(huán);如果循環(huán)次數(shù)由循環(huán)體執(zhí)行情況確定,并且循環(huán)體至少執(zhí)行一次,則選用do…while循環(huán)。任務(wù)16輸出區(qū)間內(nèi)素?cái)?shù)——循環(huán)結(jié)構(gòu)的比較與嵌套5.6循環(huán)結(jié)構(gòu)的比較用while語句和do…while語句處理同一問題時(shí),若循環(huán)體部分是一樣的,它們的執(zhí)行結(jié)果會(huì)有兩種情況:如果while語句第一次判斷條件為真,則兩者執(zhí)行結(jié)果相同;否則兩者結(jié)果不同。當(dāng)輸入不同的k值時(shí),試比較執(zhí)行完兩個(gè)程序段后k值的不同。程序段1:scanf(“%d”,&k);while(k<10)++k;任務(wù)16輸出區(qū)間內(nèi)素?cái)?shù)——循環(huán)結(jié)構(gòu)的比較與嵌套程序段2:scanf(“%d”,&k);do{++k;}while(k<10);5.7循環(huán)結(jié)構(gòu)的比較循環(huán)嵌套是指在一個(gè)循環(huán)結(jié)構(gòu)的循環(huán)體內(nèi)部又包含一個(gè)完整的循環(huán)結(jié)構(gòu)。處于循環(huán)體內(nèi)部的循環(huán)結(jié)構(gòu)稱為內(nèi)層循環(huán),處于循環(huán)較外部的循環(huán)結(jié)構(gòu)稱為外層循環(huán)。如果內(nèi)層循環(huán)中再包含其它循環(huán)結(jié)構(gòu),則稱為多重循環(huán)。根據(jù)解決問題的需要及語句的使用特色,for語句、while語句和do…while語句可以自身嵌套,也可以互相嵌套。為了使層次分明,嵌套循環(huán)的書寫最好采用縮進(jìn)形式。任務(wù)16輸出區(qū)間內(nèi)素?cái)?shù)——循環(huán)結(jié)構(gòu)的比較與嵌套5.7循環(huán)結(jié)構(gòu)的比較例如,以下是打印加法口訣表的程序:#include<stdio.h>main(){inti,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf("%3d+%d=%-3d",j,i,i+j);printf("\n");/*屬于外層循環(huán)*/}}任務(wù)16輸出區(qū)間內(nèi)素?cái)?shù)——循環(huán)結(jié)構(gòu)的比較與嵌套#include<stdio.h>#include<math.h>main(){intn,j,t,m,cnt=0;for(n=2;n<100;n++){t=1;
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 5840-2:2021/Amd 1:2025 EN Cardiovascular implants - Cardiac valve prostheses - Part 2: Surgically implanted heart valve substitutes - Amendment 1
- 不同行業(yè)交叉數(shù)據(jù)分析表
- 教育科技融合發(fā)展模式創(chuàng)新研究報(bào)告
- 2025年節(jié)能技術(shù)服務(wù)項(xiàng)目發(fā)展計(jì)劃
- 2025廣西農(nóng)村投資集團(tuán)有限公司校園招聘140人筆試參考題庫附帶答案詳解
- 2025年通信計(jì)費(fèi)軟件合作協(xié)議書
- 2025年河北石家莊建筑行業(yè)大型國有企業(yè)公開招聘46人筆試參考題庫附帶答案詳解
- 2025天津市南華工程建設(shè)監(jiān)理有限公司招聘10人筆試參考題庫附帶答案詳解
- 汽車車載網(wǎng)絡(luò)控制技術(shù) 試題庫及答案 判斷題
- 2024年低輻射玻璃(采暖地區(qū)用)項(xiàng)目資金申請(qǐng)報(bào)告代可行性研究報(bào)告
- 勞務(wù)派遣勞務(wù)外包項(xiàng)目方案投標(biāo)文件(技術(shù)方案)
- 2025年安全員C證(專職安全員)考試題庫
- 地理-天一大聯(lián)考2025屆高三四省聯(lián)考(陜晉青寧)試題和解析
- 2025年廣州市公安局招考聘用交通輔警200人高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 貴州省貴陽市2024-2025學(xué)年九年級(jí)上學(xué)期期末語文試題(含答案)
- 2025年江蘇海事職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年常考版參考題庫含答案解析
- 計(jì)件工資計(jì)算表格模板
- 兩癌防治知識(shí)培訓(xùn)
- 小學(xué)生主題班會(huì) 傳承雷鋒精神 爭(zhēng)做時(shí)代新人 課件
- rcs-9611c-線路保護(hù)測(cè)控裝置-技術(shù)使用說明
- 走遍德國-(課堂PPT)課件
評(píng)論
0/150
提交評(píng)論