《循環(huán)控制do-whil.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《循環(huán)控制do-whil.ppt(27頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、項(xiàng)目3:學(xué)生總評(píng)成績(jī)的統(tǒng)計(jì)與排序 涉及到的知識(shí)點(diǎn)如下:,單元一:while語(yǔ)句的流程以及應(yīng)用 單元二:do-while語(yǔ)句的流程以及應(yīng)用 單元三:for語(yǔ)句的流程以及應(yīng)用 單元四:break、continue語(yǔ)句的應(yīng)用 單元五:循環(huán)結(jié)構(gòu)的嵌套練習(xí) 單元六:分支、循環(huán)結(jié)構(gòu)的綜合應(yīng)用 單元七:一維數(shù)組的定義及應(yīng)用 單元八:二維數(shù)組的定義及應(yīng)用 單元九:學(xué)生總評(píng)成績(jī)統(tǒng)計(jì)與排序的實(shí)現(xiàn),,一般形式為: do 語(yǔ)句組; while(表達(dá)式);,1、 do-while語(yǔ)句的格式,3.3do-while語(yǔ)句,2、 do-while語(yǔ)句的執(zhí)行過(guò)程,直到型循環(huán),3.3do-while語(yǔ)句
2、,,執(zhí)行 1,Y 執(zhí)行 3,Y 執(zhí)行 2,N 結(jié)束,,Y,,Y,,Y,,Y 執(zhí)行 4,N,,特點(diǎn): 循環(huán)至少執(zhí)行一次,練習(xí),試用while編寫(xiě)程序,判斷2000-2010之間的每一個(gè)年是否是閏年,是閏年的輸出“xxxx is leap year”,不是閏年的輸出“xxxx is not leap year”, 例如: “2000 is leap year” “2001 is not leap year” . “2010 is not leap year”,問(wèn)題解析,對(duì)這類(lèi)問(wèn)題,我們可以找出其中的三大關(guān)鍵是: 1、從什么地方開(kāi)始; 2、什么時(shí)
3、候結(jié)束; 3、反復(fù)做什么。,我們可以總結(jié)為: 初始值 循環(huán)做的條件 循環(huán)做的事情,循環(huán)體:通常我們把循環(huán)做的事情稱(chēng)為循環(huán)體。,對(duì)于判斷閏年的問(wèn)題: 1、從哪里開(kāi)始? 2、什么時(shí)候結(jié)束? 3、反復(fù)做的事情? X=2000 /*從這里開(kāi)始*/ While(x<= 2010) /* 如果條件成立 則結(jié)束*/ 1、 判斷x年是不是閏年 。/*重復(fù)要做的事情*/ 2、 ? /* 判斷完當(dāng)前年,指向下一年*/ ,從2000年開(kāi)始,到2010年結(jié)束,判斷某年是不是閏年,第一類(lèi)題目,該類(lèi)題目一般求解若干數(shù)的和以及這些數(shù)的平均值。 求解思路: 找到從哪里開(kāi)始,也就是從那個(gè)數(shù)開(kāi)始加起或者乘起。
4、 從哪里結(jié)束,也就是找到加到(或者乘到)哪個(gè)數(shù)結(jié)束。 循環(huán)執(zhí)行的動(dòng)作以及次數(shù):求和或者求解乘積 關(guān)鍵:如何從當(dāng)前這個(gè)數(shù)轉(zhuǎn)到下一個(gè)數(shù)。,練習(xí),一、計(jì)算12+22+32+42+.+n2 解題步驟: 1、定義保存求和結(jié)果的變量sum,并sum=0。 2、定義變量n,輸入變量n的值。 3、循環(huán)的計(jì)算下面的第4和第五步驟: 4、sum=sum+n2 5、n- -,練習(xí),二、功能:編程實(shí)現(xiàn)1!+2!++n!的和。 提示: 1、n的值必須通過(guò)鍵盤(pán)輸入,要不然你不知道加到誰(shuí)的和。例如輸入6,那就是n==6 2、1!=1 2!=1 2 3!=1 2 3 4!= 1 2 3 4 5!= 1 2 3 4 5
5、6!= 1 2 3 4 5 6 Sum=1!+2!+3!+4!+5!+6!=???,main() long int p,sum=0 ; int i,n; i=1; p=1; /* 先給出n的值,就知道加到誰(shuí)的階乘了*/ scanf(“%d”, ,練習(xí),三、大家來(lái)找茬 #include”stdio.h” main() int sum,i,a; sum=0;i=0; do scanf(“%d”, ,輸入的數(shù)據(jù)分別為:6 -1 Sum=?,練習(xí),四、輸入10個(gè)數(shù),統(tǒng)計(jì)并輸出正數(shù)、負(fù)數(shù)和0的個(gè)數(shù)。 提示: 入口:? 出口:? 循環(huán)執(zhí)行的動(dòng)作:?,練習(xí),四、計(jì)算 1/12-1/22+1/3
6、2-1/42+.-1/1002 解題思路: 入口(開(kāi)始):k=1 出口(結(jié)束):k=100 循環(huán)執(zhí)行的動(dòng)作: sum=sum+(1/k2)?,練習(xí),五、編程題目: 輸入五個(gè)學(xué)生的成績(jī),要求每次從鍵盤(pán)輸入每個(gè)學(xué)生的2門(mén)成績(jī),計(jì)算每個(gè)學(xué)生的平均分,如果平均分?jǐn)?shù)大于等于85為優(yōu)秀;8560為及格。統(tǒng)計(jì)出成績(jī)優(yōu)秀的學(xué)生和及格的學(xué)生人數(shù)。,練習(xí),六、編程題目: 打印并輸出所有的水仙花數(shù),所謂水仙花是指一個(gè)三位數(shù),其各位數(shù)的立方和等于數(shù)本身,如153=13+53+33,練習(xí),七、、計(jì)算 s=1/2+2/3+3/4++(n-1)/n 解題思路: 入口(開(kāi)始):k=1 出口(結(jié)束):k=n 循環(huán)執(zhí)行的動(dòng)作:
7、sum=sum+ k/( k+1),第二類(lèi)題目,該類(lèi)題目一般找尋某個(gè)區(qū)間上符合要求的數(shù)。 求解思路: 從哪里開(kāi)始:也就是從那個(gè)數(shù)開(kāi)始找起。 從哪里結(jié)束:也就是找到哪個(gè)數(shù)結(jié)束。 循環(huán)執(zhí)行的動(dòng)作:判斷這個(gè)數(shù) 符不符合要求。 關(guān)鍵:如何從當(dāng)前這個(gè)數(shù)轉(zhuǎn)到下一個(gè)數(shù)。,練習(xí),一、請(qǐng)找出1100之間所有的偶數(shù)。 解題步驟: 入口(開(kāi)始):從1開(kāi)始 出口(結(jié)束):到100結(jié)束 循環(huán)執(zhí)行的動(dòng)作: 判斷當(dāng)前的數(shù)是不是偶數(shù) 判斷完以后如何轉(zhuǎn)到下一個(gè)數(shù)呢,比如判斷完23后,如何判斷24是不是偶數(shù)呢?,練習(xí),二、請(qǐng)列出所有的個(gè)位數(shù)是4,且能被6整除的2位數(shù)。 解題步驟: 入口(開(kāi)始):從10開(kāi)始 出口(結(jié)束):到99結(jié)
8、束 循環(huán)執(zhí)行的動(dòng)作: 判斷當(dāng)前的數(shù)個(gè)位數(shù)是不是4,并且能被6整除。 當(dāng)前數(shù)怎么轉(zhuǎn)到下一個(gè)數(shù)?,練習(xí),三、功能:編程實(shí)現(xiàn)從鍵盤(pán)輸入m和n的值,求他們的最大公約數(shù)和最小公倍數(shù)。 提示:首先使用輾轉(zhuǎn)相除法求兩個(gè)數(shù)的最大公約數(shù)。然后用兩數(shù)的乘積除以最大公約數(shù),即是兩數(shù)的最小公倍數(shù)。 輾轉(zhuǎn)相除法: 1、設(shè)mn 。 2、令r = m%n 。 3、若r等于0,則n即為最大公約數(shù),退出循環(huán)。否則,令m=n; n=r,轉(zhuǎn)第2步驟。,第三類(lèi)題目,該類(lèi)題目一般通過(guò)循環(huán)不斷的輸入數(shù)據(jù),然后在做相應(yīng)的處理。 求解思路: 如果讀入的是20個(gè)數(shù)據(jù),那么循環(huán)次數(shù)就是20 從哪里開(kāi)始:可以是1或者其他的。 從哪里結(jié)束:可以是2
9、0或者其他的。 循環(huán)執(zhí)行的動(dòng)作:輸入數(shù)據(jù),然后在做其他的操作。,練習(xí),一、輸入20個(gè)整數(shù),求它們的和以及平均值。 解題步驟: 1、定義一個(gè)變量來(lái)對(duì)輸入的整數(shù)的個(gè)數(shù)進(jìn)行計(jì)數(shù) 2、循環(huán)輸入20個(gè)整數(shù)求和,存入sum中。 3、計(jì)算20個(gè)數(shù)的平均值。 4、輸出總和以及平均值。,練習(xí),二、將輸入的一串字符顯示在屏幕上,遇到字符“$”時(shí)停止。 解題步驟: 入口(開(kāi)始):讀入一個(gè)字符 出口(結(jié)束):讀入字符“$” 循環(huán)執(zhí)行的動(dòng)作: 將當(dāng)前讀入的字符顯示在屏幕上。,三、輸入a和n的值,編寫(xiě)程序求下列的數(shù)學(xué)計(jì)算式: a+aa+aaa+aaaa++aa.aa 例如當(dāng)a=3 n=5時(shí)表達(dá)式為: 3+33+333+
10、3333+33333,,n個(gè)a,四、猴子吃桃問(wèn)題。 猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,還不過(guò)癮,又多吃了一個(gè)。第二天又將剩下的桃子,吃掉一半,又多了一個(gè)。以后每天將前一天剩下的桃子吃掉一半,再多吃一個(gè)。到第10天只剩下一個(gè)桃子了,求第一天共摘了多少桃子。,do-while綜合練習(xí),1、計(jì)算1+1/2+1/4++1/50的值,并顯示出來(lái) 2、計(jì)算1+1/3+1/5+.+1/99的和。 3、輸入一個(gè)正整數(shù),然后統(tǒng)計(jì)該正整數(shù)各位中零的個(gè)數(shù),并求各位數(shù)字中的最大者。 4、求和 1+(1+2)+(1+2+3)+(1+2+3+4)+..(1+2+3+4+5+6+7+8+9+10) 5、編寫(xiě)程序計(jì)算1001000之間有多少個(gè)數(shù)其各位數(shù)字之和是5.,6、有一分?jǐn)?shù)序列:1,3,5,8,13,21,用do-while循環(huán)求出這個(gè)數(shù)列的前20項(xiàng)之和。 7、有近千名學(xué)生排隊(duì),7人一行余3人,5人一行余2人,3人一行余1人,編寫(xiě)程序求學(xué)生人數(shù)。 8、編程序解決百馬百擔(dān)問(wèn)題:有100匹馬,駝100擔(dān)貨,大馬駝3擔(dān),中馬駝2擔(dān),兩匹小馬駝1擔(dān),問(wèn)有大、中、小馬各有多少匹?,