C語言程序設(shè)計(jì)模塊三循環(huán)程序設(shè)計(jì)訓(xùn)練_第1頁
C語言程序設(shè)計(jì)模塊三循環(huán)程序設(shè)計(jì)訓(xùn)練_第2頁
C語言程序設(shè)計(jì)模塊三循環(huán)程序設(shè)計(jì)訓(xùn)練_第3頁
C語言程序設(shè)計(jì)模塊三循環(huán)程序設(shè)計(jì)訓(xùn)練_第4頁
C語言程序設(shè)計(jì)模塊三循環(huán)程序設(shè)計(jì)訓(xùn)練_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、模塊三模塊三 循環(huán)程序設(shè)計(jì)訓(xùn)練循環(huán)程序設(shè)計(jì)訓(xùn)練能力目標(biāo)掌握循環(huán)結(jié)構(gòu)的構(gòu)成及特點(diǎn);掌握循環(huán)控制變量的使用;熟練掌握三種基本的循環(huán)控制語句;熟練掌握一重循環(huán)的構(gòu)建方法,學(xué)會(huì)構(gòu)建二重循環(huán);了解goto語句構(gòu)成的循環(huán);知識(shí)準(zhǔn)備知識(shí)準(zhǔn)備 任務(wù)引例-計(jì)算計(jì)算1+2+1+2+100100。算法設(shè)計(jì)算法設(shè)計(jì) 把每一個(gè)加數(shù)看成要投入的硬幣數(shù)把每一個(gè)加數(shù)看成要投入的硬幣數(shù), ,第一次投第一次投了了1 1枚硬幣枚硬幣, ,第二次投了第二次投了2 2枚硬幣枚硬幣,第第100100次投了次投了100100枚硬枚硬幣。定義一個(gè)變量幣。定義一個(gè)變量s s用來存放累加和,相當(dāng)于存放硬幣的用來存放累加和,相當(dāng)于存放硬幣的容器,

2、變量容器,變量i i代表加數(shù)(也可以看成累加次數(shù)),相當(dāng)于代表加數(shù)(也可以看成累加次數(shù)),相當(dāng)于投放的硬幣數(shù),見圖投放的硬幣數(shù),見圖3-13-1。s = s + i; /s = s + i; /* * 投入投入i i 枚硬幣到枚硬幣到s s中中* */ /i = i + 1; /i = i + 1; /* * 計(jì)算下次投幣數(shù)計(jì)算下次投幣數(shù) * */ /圖3-1 算法設(shè)計(jì)示意圖#include void main( ) int s=0;/s用來存放累加和,初始值為0int i=1;/i用來存放累加次數(shù),初值為1表示第一次相加 while(i=100) s=s+i;/把數(shù)i累加到s中 i+;/累加

3、次數(shù)增1,i也是累加數(shù) printf(“s=%dn”,s);輸出結(jié)果輸出結(jié)果 s=5050s=5050 程序清單程序清單3.1 while語句 用while語句實(shí)現(xiàn)的循環(huán),其結(jié)構(gòu)是當(dāng)型循環(huán)結(jié)構(gòu),即先判斷后執(zhí)行循環(huán)體的循環(huán)結(jié)構(gòu),流程圖如下圖所示。做中學(xué)做中學(xué)3-1 3-1 從鍵盤輸入從鍵盤輸入n(n0)n(n0)的值,計(jì)算并輸出的值,計(jì)算并輸出n!n!。算法設(shè)計(jì)算法設(shè)計(jì) 程序中需要定義一個(gè)變量f用來存放連乘積,連乘積變量的初值通常被置成1,還需要定義一個(gè)變量i用來提供1 n個(gè)乘數(shù)。需要做的就是將這n個(gè)乘數(shù)循環(huán)乘入連乘積中。循環(huán)控制變量為i,初值是1;初始化部分:i=1;判斷部分:i=n;循環(huán)體部

4、分:f=f*i;迭代部分:i+;算法見右圖。結(jié)束#include void main( ) int i=1,n;/初始化部分 double f=1; printf(請輸入變量n的值:n);scanf(%d,&n); while(i=n) /判斷部分 f=f*i;/循環(huán)體部分 i+;/迭代部分 printf(%d!=%le,n,f);程程序序清清單單程序運(yùn)行程序運(yùn)行 請輸入變量請輸入變量n n的值:的值: 30 30 30!=2.652529e+032 30!=2.652529e+032 知識(shí)點(diǎn)while語句語法格式: while(表達(dá)式) 語句 其中,“語句”表示while循環(huán)結(jié)構(gòu)中不

5、斷被重復(fù)執(zhí)行的語句行,稱為循環(huán)體。若循環(huán)體內(nèi)有多條語句,則用花括弧引起來。while循環(huán)結(jié)構(gòu)的功能: 只要循環(huán)條件表達(dá)式成立(條件表達(dá)式為真),則執(zhí)行循環(huán)體,直到表達(dá)式不成立(表達(dá)式為假)時(shí)結(jié)束循環(huán)。循環(huán)體可以為空語句、簡單語句或復(fù)合語句。注 意 while語句中的表達(dá)式一般是關(guān)系表達(dá)式或邏輯表達(dá)式,只要表達(dá)式的值為真(非0)就繼續(xù)循環(huán)(執(zhí)行循環(huán)體中的語句); 循環(huán)體中應(yīng)該有使循環(huán)趨于結(jié)束的語句,否則出現(xiàn)死循環(huán); while語句的循環(huán)體允許嵌套while結(jié)構(gòu),也可以允許多層循環(huán)嵌套; while結(jié)構(gòu)中,判斷部分若一開始條件就不成立,循環(huán)體一次都不執(zhí)行。3.2 do-while語句 用do-wh

6、ile語句實(shí)現(xiàn)的循環(huán),其結(jié)構(gòu)是直到型循環(huán)結(jié)構(gòu)。它的特點(diǎn)是先執(zhí)行循環(huán)體,再判斷循環(huán)條件是否成立,流程圖如下圖所示。做中學(xué)做中學(xué)3-2 3-2 用用do-whiledo-while語句計(jì)算語句計(jì)算11001100的和。的和。算法設(shè)計(jì)算法設(shè)計(jì) 程序中需要定義一個(gè)變量total用來存放累加和,累加和變量的初值通常被置成0,還需要定義一個(gè)變量n用來提供加數(shù)。需要做的就是將這100個(gè)加數(shù)循環(huán)加入累加和中。循環(huán)控制變量為n。初始化部分:n=1;判斷部分:n=100;循環(huán)體部分:total=total*n;迭代部分:n+;算法見右圖。#include void main( ) int n=1,total=0;

7、 do total=total+n; n+; while(n=100); printf(total=%d,total);輸出結(jié)果輸出結(jié)果 total=5050total=5050 當(dāng)當(dāng)n n的初值為的初值為102102時(shí),時(shí),whilewhile后面的后面的“表達(dá)式表達(dá)式”一開始就為一開始就為“假假”,do whiledo while循環(huán)的循環(huán)體也被執(zhí)行一次。循環(huán)的循環(huán)體也被執(zhí)行一次。 程序清單程序清單知識(shí)點(diǎn)do-while語句語法格式: do 語句組 while(條件表達(dá)式);執(zhí)行過程: 先執(zhí)行循環(huán)體語句一次,再判別表達(dá)式的值,若為真(非0) ,則繼續(xù)循環(huán),否則終止循環(huán)。 一般用while和

8、do while語句解決同一問題時(shí),若兩者的循環(huán)體部分一樣,它們的結(jié)果也一樣。 但當(dāng)while后面的“表達(dá)式”一開始就為“假”時(shí),它們的結(jié)果就不一樣。注 意3.3 for語句 在C語言程序設(shè)計(jì)中,for循環(huán)結(jié)構(gòu)使用最為靈活,不僅適用于循環(huán)次數(shù)已知的情況,也適用于循環(huán)次數(shù)不能確定、只能給出循環(huán)結(jié)束條件的情況,它完全可以替代while語句。做中學(xué)做中學(xué)3-3 3-3 用用forfor語句實(shí)現(xiàn)求語句實(shí)現(xiàn)求11001100的累加和。的累加和。算法設(shè)計(jì)算法設(shè)計(jì) 循環(huán)控制變量為k,s用來存放累加和。初始化部分:k=1;判斷部分:k=100;循環(huán)體部分:s=s+k;迭代部分:k+;算法見右圖。輸出輸出結(jié)果輸

9、出結(jié)果 total=5050total=5050知識(shí)點(diǎn)for語句語法格式: for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體語句;執(zhí)行過程 見右圖說明 3個(gè)表達(dá)式可以為任何表達(dá)式。v 表達(dá)式1通常為賦值表達(dá)式。v 表達(dá)式2作為循環(huán)控制條件。v 表達(dá)式3通常為賦值表達(dá)式。v 表達(dá)式1、3一般為簡單表達(dá)式,也可以為逗號表達(dá)式v 3個(gè)表達(dá)式均可以省略或部分省略。但分號不能省循環(huán)的比較:v 幾種循環(huán)一般可互相替代。v for語句主要用于給定循環(huán)控制變量初值,步長增量以及循環(huán)次數(shù)確定的循環(huán)結(jié)構(gòu)。v 循環(huán)次數(shù)及控制條件要在循環(huán)過程中才能確定的循環(huán)可用while或do-while語句。v 循環(huán)條件:while

10、、do-while在while條件表達(dá)式中指定,for循環(huán)在“表達(dá)式2”中指定。v 循環(huán)變量的初始化:while、do-while在循環(huán)之前指定循環(huán)變量初值,for循環(huán)在“表達(dá)式1”中指定。v 判斷循環(huán)條件的時(shí)機(jī):while、for循環(huán)先判斷循環(huán)條件,后執(zhí)行循環(huán)體;do-while循環(huán)先執(zhí)行循環(huán)體,后判斷循環(huán)條件。3.4 循環(huán)嵌套 循環(huán)嵌套即一個(gè)循環(huán)體內(nèi)還包含另一個(gè)或幾個(gè)完整的循環(huán)結(jié)構(gòu),當(dāng)內(nèi)嵌的循環(huán)中還嵌套其他循環(huán)時(shí),成為多層循環(huán)。做中學(xué)做中學(xué)3-4 3-4 打印下列形式的乘積表:打印下列形式的乘積表:11=121=2 22=431=3 32=1 33=991=9 92=18 93=27 99

11、=81算法設(shè)計(jì)算法設(shè)計(jì) 使用嵌套的循環(huán)結(jié)構(gòu),外層循環(huán)控制變量設(shè)為i,用來控制行數(shù),其初值為1,終值為9;內(nèi)層循環(huán)控制變量設(shè)為j,用來控制每行打印的內(nèi)容,初值為1,終值為i。即外層循環(huán)控制打印不同的行,內(nèi)層循環(huán)控制打印同一行中的各個(gè)算式。算法見下圖。#include void main(void) int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d*%d=%2d ,i,j,i*j); printf(n); 輸出結(jié)果輸出結(jié)果程程序序清清單單知識(shí)點(diǎn)三種循環(huán)結(jié)構(gòu)(for、while和do while)可以互相嵌套。多重循環(huán)的使用與單一循環(huán)完全相同,但應(yīng)

12、特別注意內(nèi)、外層循環(huán)條件的變化。多重循環(huán)嵌套時(shí)。循環(huán)之間可以并列,但不能交叉。可用轉(zhuǎn)移語句把流程轉(zhuǎn)出循環(huán)體外,但不能從外面轉(zhuǎn)向循環(huán)體內(nèi)。123456while() while() do dowhile(); while();for(;) for(;) while() dowhile(); for(;) while() do for (;) while();3.5 循環(huán)退出語句3.5.1 break語句 循環(huán)過程中,若滿足一定的條件需要退出循環(huán),可用break語句實(shí)現(xiàn)。做中學(xué)做中學(xué)3-3 3-3 求解當(dāng)求解當(dāng)n n 多少時(shí)多少時(shí)1 12 2n n的積剛好大于的積剛好大于10001000。算法設(shè)計(jì)

13、算法設(shè)計(jì) 定義變量f(初值為1)存放連乘積,變量n(初值為1)存放乘數(shù),沒有具體循環(huán)次數(shù)??梢杂脀hile(f=10000),或do-while(f=10000)語句實(shí)現(xiàn);也可以用for語句實(shí)現(xiàn),但表達(dá)式2要空缺,函數(shù)體中當(dāng)f的值大于10000時(shí),用break退出循環(huán)。#include void main(void) float f=1; int n; for(n=1;n+) f*=n; if (f1000) break;/積大于1000時(shí),推出循環(huán) printf(n=%d,%d!=%fn,n,n,f);輸出結(jié)果輸出結(jié)果 n=7n=7,7!=5040.0000007!=5040.000000程

14、序清單程序清單3.5.2 continue語句 有時(shí)在循環(huán)的過程中,若滿足一定的條件本次循環(huán)的剩余語句可以不執(zhí)行,用來加速循環(huán),可用continue語句實(shí)現(xiàn)。做中學(xué)做中學(xué)3-6 3-6 輸出輸出11001100之間的不能被之間的不能被5 5整除的數(shù)。整除的數(shù)。算法設(shè)計(jì)算法設(shè)計(jì) 定義變量n當(dāng)循環(huán)控制變量,也是被除數(shù),若n能被5整除,則結(jié)束本次循環(huán),立即進(jìn)入下一次循環(huán)。#include void main(void) int n; for (n=1;n=100;n+) if (n%5=0) continue; printf(%5d,n); 輸出結(jié)果輸出結(jié)果1 12 3 4 6 7 8 9 11 1

15、2 13 14 16 17 18 192 3 4 6 7 8 9 11 12 13 14 16 17 18 19 81 82 83 84 86 87 88 89 91 92 93 94 96 97 98 9981 82 83 84 86 87 88 89 91 92 93 94 96 97 98 99程程序序清清單單3.5.3 goto語句 goto語句為無條件轉(zhuǎn)向語句,它可以控制程序的轉(zhuǎn)向操作。做中學(xué)做中學(xué)3-7 3-7 反復(fù)讀取鍵盤字符,并顯示在屏幕,直到讀到回車反復(fù)讀取鍵盤字符,并顯示在屏幕,直到讀到回車符為止。符為止。程程序序清清單單#include void main()char c

16、h,ch1;printf(請輸入一串字符:n);output :ch=getchar();/定義了語句標(biāo)號outputch1=getchar();/讀取回車符printf(n你輸入的字符為:%cn,ch);if (ch!=n) goto output;程序運(yùn)行程序運(yùn)行 請輸入一串字符:請輸入一串字符:qwertyuiopqwertyuiop你輸入的字符為:你輸入的字符為:q q你輸入的字符為:你輸入的字符為:e e你輸入的字符為:你輸入的字符為:t t你輸入的字符為:你輸入的字符為:u u你輸入的字符為:你輸入的字符為:o o說明:該程序通過說明:該程序通過gotogoto和和ifif語句的結(jié)合使用,實(shí)現(xiàn)了循環(huán)結(jié)構(gòu)。語句的結(jié)合使用,實(shí)現(xiàn)了循環(huán)結(jié)構(gòu)。知識(shí)點(diǎn)goto語句語法格式:goto 語句標(biāo)號;語句標(biāo)號是按標(biāo)識(shí)符規(guī)定書寫的符號,放在某一語句行的前面,標(biāo)號后加冒號。語句標(biāo)號起標(biāo)識(shí)語句的作用,與goto語句配合使用。執(zhí)行g(shù)oto語句后,程序?qū)⑻D(zhuǎn)到該標(biāo)號處并執(zhí)行其后的語句。標(biāo)號必須與goto語句同處于一個(gè)函數(shù)中,但可以不在一個(gè)循環(huán)體中。goto

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論