版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、UNIX C編程編程yyyy-M- 1age *給一個不多于給一個不多于5位的正整數(shù),求它是幾位數(shù),分別打印每一位數(shù)字,并按逆序位的正整數(shù),求它是幾位數(shù),分別打印每一位數(shù)字,并按逆序打印出各位數(shù)字。打印出各位數(shù)字。求求num的各位數(shù)字:的各位數(shù)字:ten_tho=num/10000;tho=(num-ten_tho*10000)/1000;hun=(num-ten_tho*10000-tho*1000)/100;ten=(num-ten_tho*10000-tho*1000-hun*100)/10;indiv=(num-ten_tho*10000-tho*1000-hun*100-ten*10
2、)UNIX C編程編程yyyy-M- 2age * 習(xí)題習(xí)題: 有有4個圓塔,圓心為個圓塔,圓心為(2,2),(-2,2),(-2,-2),(2,-2),圓半,圓半徑為徑為1,這,這4個塔高個塔高10m,它,它以外無建筑物?,F(xiàn)輸入任意以外無建筑物?,F(xiàn)輸入任意一點的坐標,求該點的建筑一點的坐標,求該點的建筑高度(塔外高度為高度(塔外高度為0)。)。UNIX C編程編程yyyy-M- 3age *知識點知識點:& goto循環(huán)循環(huán)& while循環(huán)循環(huán)& dowhile循環(huán)循環(huán)& for循環(huán)循環(huán)& break、continue語句語句重點:重點: while
3、循環(huán)循環(huán) do - while循環(huán)循環(huán) for循環(huán)循環(huán)難點:難點:s for循環(huán)循環(huán)第第6章章 循環(huán)控制循環(huán)控制UNIX C編程編程yyyy-M- 4age *6.1 概述概述 循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計的基本結(jié)構(gòu)之一,它和順序循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計的基本結(jié)構(gòu)之一,它和順序結(jié)構(gòu)、選擇結(jié)構(gòu)共同作為各種復(fù)雜程序的基本構(gòu)造單元。結(jié)構(gòu)、選擇結(jié)構(gòu)共同作為各種復(fù)雜程序的基本構(gòu)造單元。 (1) 用用goto語句和語句和if語句構(gòu)成循環(huán);語句構(gòu)成循環(huán); (2) 用用while語句;語句; (3) 用用dowhile語句;語句; (4) 用用for語句。語句。 UNIX C編程編程yyyy-M- 5age *6
4、.2 goto語句以及用語句以及用goto語句構(gòu)成循環(huán)語句構(gòu)成循環(huán)q goto語句為無條件轉(zhuǎn)向語句,它的一般形式為語句為無條件轉(zhuǎn)向語句,它的一般形式為 goto 語句標號語句標號;例如:例如:goto label1;q 結(jié)構(gòu)化程序設(shè)計方法主張限制使用結(jié)構(gòu)化程序設(shè)計方法主張限制使用goto語句。一般來說,可語句。一般來說,可以有兩種用途:以有兩種用途:v與與if語句一起構(gòu)成循環(huán)結(jié)構(gòu);語句一起構(gòu)成循環(huán)結(jié)構(gòu);v從多層循環(huán)的內(nèi)層循環(huán)跳到外層循環(huán)外時才用到從多層循環(huán)的內(nèi)層循環(huán)跳到外層循環(huán)外時才用到goto語句。語句。q 這種用法不符合結(jié)構(gòu)化原則,一般不宜采用,只有在不得已時這種用法不符合結(jié)構(gòu)化原則,一般
5、不宜采用,只有在不得已時(例如能大大提高效率例如能大大提高效率)才使用。才使用。UNIX C編程編程yyyy-M- 6age *例例 用用if語句和語句和goto語句構(gòu)成循環(huán),求語句構(gòu)成循環(huán),求 。6.2 goto語句以及用語句以及用goto語句構(gòu)成循環(huán)語句構(gòu)成循環(huán) 1001nnmain()int i, sum=0; i=1; loop: if(i=100) sum=sum+i; i+; goto loop; printf(“nsum=%d,sum);sum=5050UNIX C編程編程yyyy-M- 7age *q while語句用來實現(xiàn)語句用來實現(xiàn)“當(dāng)型當(dāng)型”循環(huán)結(jié)構(gòu)。其一般形式如下:循環(huán)
6、結(jié)構(gòu)。其一般形式如下: while (表達式表達式) 語句組語句組 v 當(dāng)表達式為非當(dāng)表達式為非0值時,執(zhí)行值時,執(zhí)行while語句中的內(nèi)嵌語句組。語句中的內(nèi)嵌語句組。 v其特點是:先判斷表達式,后執(zhí)行語句組。其特點是:先判斷表達式,后執(zhí)行語句組。6.3while語句語句UNIX C編程編程yyyy-M- 8age *6.3while語句語句例例 求求 。用傳統(tǒng)流程圖和。用傳統(tǒng)流程圖和N-S結(jié)構(gòu)流程圖表示算法。結(jié)構(gòu)流程圖表示算法。 1001nnmain() int i,sum=0; i=1; while (i=100) sum=sum+i; i+; printf(“%d,sum); 5050U
7、NIX C編程編程yyyy-M- 9age *6.3while語句語句例例 輸入兩個正整數(shù)輸入兩個正整數(shù)m和和n,求其最大公約數(shù)和最小公倍數(shù)。,求其最大公約數(shù)和最小公倍數(shù)。q 算法:算法:v n*m p;v 大數(shù)放在大數(shù)放在n中,小數(shù)放在中,小數(shù)放在m中中;v m!=0,繼續(xù);否則,最后一步繼續(xù);否則,最后一步;v r=n%m; mn; r m;v 回到判斷回到判斷m!=0步步;v 最大公約數(shù)為最大公約數(shù)為n,最小公倍數(shù)為最小公倍數(shù)為p/n。input n and m12,35greatest common divisor is 1lease common multiple is 420UNI
8、X C編程編程yyyy-M- 10age *6.3while語句語句 例例 求求Sn=a+aa+aaa+aaa n個個a之值,其中之值,其中a是一個數(shù)字。是一個數(shù)字。例如:例如:2+22+222+2222+22222(此時此時n=5),n由鍵盤輸入。由鍵盤輸入。q 算法:算法:i=1;sum=0;t=0;輸入輸入a和和ni=nt=t+a;sum=sum+t;a=a*10;i+;輸出輸出suminput a and n:2,5a+aa+aaa+.=24690UNIX C編程編程yyyy-M- 11age *q 需要注意:需要注意:v 循環(huán)體如果包含一個以上的語句,應(yīng)該用循環(huán)體如果包含一個以上的語
9、句,應(yīng)該用“ ”括起來,括起來,以復(fù)合語句形式出現(xiàn)。以復(fù)合語句形式出現(xiàn)。v 在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句(即改變表達在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句(即改變表達式的值為式的值為0)。如果無此語句,則表達式的值始終不改變,)。如果無此語句,則表達式的值始終不改變,循環(huán)永不結(jié)束。循環(huán)永不結(jié)束。6.3while語句語句UNIX C編程編程yyyy-M- 12age *q do while語句的一般形式為:語句的一般形式為: do 語句組語句組 while (表達式表達式);v 先執(zhí)行一次指定的語句組,先執(zhí)行一次指定的語句組,然后判別表達式,當(dāng)表達式的然后判別表達式,當(dāng)表達式的值為非值為非
10、0時,返回重新執(zhí)行語句時,返回重新執(zhí)行語句組,如此反復(fù),直到表達式的組,如此反復(fù),直到表達式的值等于值等于0為止,此時循環(huán)結(jié)束。為止,此時循環(huán)結(jié)束。v 其特點是:先執(zhí)行語句組,其特點是:先執(zhí)行語句組,后判斷表達式。后判斷表達式。6.4 do while語句語句UNIX C編程編程yyyy-M- 13age *q例例 用用do_while語句求語句求 。6.4 do while語句語句 1001nnmain() int i,sum=0; i=1; do sum=sum+i; i+; while(i=100); printf(%d,sum); 5050UNIX C編程編程yyyy-M- 14age
11、 *q 如果如果while后面的表達式一開始就為假后面的表達式一開始就為假(0值值)時,兩種循環(huán)的結(jié)果是不同的。時,兩種循環(huán)的結(jié)果是不同的。q 例例 while和和do-while循環(huán)的比較。循環(huán)的比較。 2次運行程序,各輸入次運行程序,各輸入1和和11 6.4 do while語句語句 結(jié)論:當(dāng)結(jié)論:當(dāng)while后面的表達式的第一次的值為后面的表達式的第一次的值為“真真”時,兩種循環(huán)得到時,兩種循環(huán)得到的結(jié)果相同。否則,二者結(jié)果不相同的結(jié)果相同。否則,二者結(jié)果不相同(指二者具有相同的循環(huán)體的情況指二者具有相同的循環(huán)體的情況)。main() int i,sum=0; scanf(%d,&
12、;i); while (i=10) sum=sum+i; i+; printf(“sum=%d,sum); main() int i,sum=0; scanf(%d,&i); do sum=sum+i; i+; while (i=10); printf(“sum=%d,sum); UNIX C編程編程yyyy-M- 15age *q for語句的一般形式為:語句的一般形式為:for(表達式表達式1;表達式表達式2;表達式表達式3) 語句組語句組 q 執(zhí)行過程:執(zhí)行過程:v先求解表達式先求解表達式1。v求解表達式求解表達式2,若其值為真,若其值為真(值為非值為非0),則執(zhí),則執(zhí)行行for
13、語句中的內(nèi)嵌語句,然后執(zhí)行下一步。語句中的內(nèi)嵌語句,然后執(zhí)行下一步。若為假若為假(值為值為0),則結(jié)束循環(huán)。,則結(jié)束循環(huán)。v求解表達式求解表達式3。v轉(zhuǎn)回上面第二步,繼續(xù)執(zhí)行。轉(zhuǎn)回上面第二步,繼續(xù)執(zhí)行。v循環(huán)結(jié)束,執(zhí)行循環(huán)結(jié)束,執(zhí)行for語句下面的一個語句。語句下面的一個語句。6.5 for 語句語句UNIX C編程編程yyyy-M- 16age *q for語句最簡單的應(yīng)用形式也就是最易理解的如下形式:語句最簡單的應(yīng)用形式也就是最易理解的如下形式: for(循環(huán)變量賦初值循環(huán)變量賦初值;循環(huán)條件循環(huán)條件;循環(huán)變量增值循環(huán)變量增值) 語句組語句組 q 相當(dāng)于以下語句:相當(dāng)于以下語句: 表達式表
14、達式1; while(表達式表達式2) 語句語句 表達式表達式3; q 例例: for(i=1;i=100;i+) sum=sum+i;6.5 for 語句語句i=1;while (i=100) sum=sum+i; i+; UNIX C編程編程yyyy-M- 17age *q 說明:說明:v 表達式表達式1省略,此時應(yīng)在省略,此時應(yīng)在for語句之前給循環(huán)變量賦初值。語句之前給循環(huán)變量賦初值。注意省略表達注意省略表達式式1時,其后的分號不能省略。時,其后的分號不能省略。如如for(;i=100;i+) sum=sum+i;執(zhí)行時,執(zhí)行時,跳過跳過“求解表達式求解表達式1”這一步,其他不變。這一
15、步,其他不變。v 如果表達式如果表達式2省略,即不判斷循環(huán)條件,循環(huán)無終止地進行下去。也就省略,即不判斷循環(huán)條件,循環(huán)無終止地進行下去。也就是認為表達式是認為表達式2始終為真。始終為真。v 例如:例如:for(i=1; ;i+) sum=sum+i; 表達式表達式1是一個賦值表達式,表達式是一個賦值表達式,表達式2空缺??杖薄?它相當(dāng)于:它相當(dāng)于: i=1; while(1) sum=sum+1; i+;6.5 for 語句語句UNIX C編程編程yyyy-M- 18age *v 表達式表達式3省略,但此時程序設(shè)計者應(yīng)另外設(shè)法保證循環(huán)能正省略,但此時程序設(shè)計者應(yīng)另外設(shè)法保證循環(huán)能正常結(jié)束。如:
16、常結(jié)束。如: for(i=1;i=100;) sum=sum+i; i+;v 表達式表達式1和表達式和表達式3省略,只有表達式省略,只有表達式2,即只給循環(huán)條件,即只給循環(huán)條件,如:如: for(;i=100;) while(i=100) sum=sum+i; 相當(dāng)于相當(dāng)于 sum=sum+i; i+; i+; 在這種情況下,完全等同于在這種情況下,完全等同于while語句語句。6.5 for 語句語句UNIX C編程編程yyyy-M- 19age *v 三個表達式都省略三個表達式都省略 for(;) 語句組語句組 相當(dāng)于相當(dāng)于 while(1) 語句組。語句組。 即不設(shè)初值,不判斷條件即不設(shè)
17、初值,不判斷條件(認為表達式認為表達式2為真值為真值),循環(huán)變量,循環(huán)變量不增值。無終止地執(zhí)行循環(huán)體。不增值。無終止地執(zhí)行循環(huán)體。v 表達式表達式1可以是設(shè)置循環(huán)變量初值的賦值表達式,也可以是可以是設(shè)置循環(huán)變量初值的賦值表達式,也可以是與循環(huán)變量無關(guān)的其他表達式。表達式與循環(huán)變量無關(guān)的其他表達式。表達式3也如此。表達式也如此。表達式1和和表達式表達式3也可以是逗號表達式。如也可以是逗號表達式。如: for (sum=0;i=100;i+) sum=sum+i; for(sum=0,i=1;i=100;i+) sum=sum+i; for(i=0,j=100;i=j;i+,j-) k+=i*j;
18、 for(i=1;i=100;i+,i+) sum=sum+i; 相當(dāng)于相當(dāng)于 for(i=1;i=100;i=i+2) sum=sum+i;6.5 for 語句語句UNIX C編程編程yyyy-M- 20age *v 表達式一般是關(guān)系表達式或邏輯表達式表達式一般是關(guān)系表達式或邏輯表達式,但也可以是數(shù)值但也可以是數(shù)值表達式或字符表達式,只要其值為非零,就執(zhí)行循環(huán)體。分表達式或字符表達式,只要其值為非零,就執(zhí)行循環(huán)體。分析下面兩個例子:析下面兩個例子: for(i=0;(c=getchar() != n;i+=c); for( ;(c=getchar()!=n;) printf(%c,c); 作
19、用是每讀入一個字符后立即輸出該字符,直到輸入一個作用是每讀入一個字符后立即輸出該字符,直到輸入一個“換行換行”為止。為止。q 注意,從終端鍵盤向計算機輸入時,是在按注意,從終端鍵盤向計算機輸入時,是在按Enter鍵以后才送鍵以后才送到內(nèi)存緩沖區(qū)中去的。運行情況:到內(nèi)存緩沖區(qū)中去的。運行情況: computer (輸入輸入) computer (輸出輸出)而不是而不是ccoommppuutteerr 6.5 for 語句語句UNIX C編程編程yyyy-M- 21age *q 一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。q 三種
20、循環(huán)三種循環(huán)(while循環(huán)、循環(huán)、dowhile循環(huán)和循環(huán)和for循環(huán)循環(huán))可以互相嵌套??梢曰ハ嗲短?。q 例如,下面幾種都是合法的形式:例如,下面幾種都是合法的形式:6.6 循環(huán)的嵌套循環(huán)的嵌套(2) do do while( ); while( );(3) for(;) for(; ;) (4) while( ) do while( ); (5) for(; ;) while( ) (1) while( ) while( ) (6) do for (; ;) while( );UNIX C編程編程yyyy-M- 22age *q 四種循環(huán)都可以用來處理同一問題,一般情況下它們可以互四種循
21、環(huán)都可以用來處理同一問題,一般情況下它們可以互相代替。但一般不提倡相代替。但一般不提倡用用goto型循環(huán)。型循環(huán)。q while和和do.while循環(huán),只在循環(huán),只在while后面指定循環(huán)條件,在后面指定循環(huán)條件,在循環(huán)體中應(yīng)包含使循環(huán)趨于結(jié)束的語句循環(huán)體中應(yīng)包含使循環(huán)趨于結(jié)束的語句(如如i+,或,或i=i+1等等)。q for循環(huán)可以在表達式循環(huán)可以在表達式3中包含使循環(huán)趨于結(jié)束的操作,甚至中包含使循環(huán)趨于結(jié)束的操作,甚至可以將循環(huán)體中的操作全部放到表達式可以將循環(huán)體中的操作全部放到表達式3中。因此中。因此for語句的功語句的功能更強,凡用能更強,凡用while循環(huán)能完成的,用循環(huán)能完成的
22、,用for循環(huán)都能實現(xiàn)。循環(huán)都能實現(xiàn)。q 用用while和和dowhile循環(huán)時,循環(huán)變量初始化的操作應(yīng)在循環(huán)時,循環(huán)變量初始化的操作應(yīng)在while和和dowhile語句之前完成。而語句之前完成。而for語句可以在表達式語句可以在表達式1中中實現(xiàn)循環(huán)變量的初始化。實現(xiàn)循環(huán)變量的初始化。q while循型、循型、dowhile循環(huán)和循環(huán)和for循環(huán),可以用循環(huán),可以用break語句跳語句跳出循環(huán),用出循環(huán),用continue語句結(jié)束本次循環(huán)。而對用語句結(jié)束本次循環(huán)。而對用goto語句和語句和if語句構(gòu)成的循環(huán),不能用語句構(gòu)成的循環(huán),不能用break語句和語句和continue語句進行控制。語句進
23、行控制。6.7 幾種循環(huán)的比較幾種循環(huán)的比較UNIX C編程編程yyyy-M- 23age *q break語句語句v break語句可以用來從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束語句可以用來從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語句。循環(huán),接著執(zhí)行循環(huán)下面的語句。v break語句的一般形式為:語句的一般形式為: break;v break語句不能用于循環(huán)語句和語句不能用于循環(huán)語句和switch語句之外的任何其語句之外的任何其他語句中。他語句中。6.8break語句和語句和continue語句語句for(r=1;r100) break; printf(%f,area); UNIX C編程編程yyyy-M- 24age *q continue語句語句v 一般形式為:一般形式為: continue;v 作用為結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,作用為結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,接著進行下一次是否執(zhí)行循環(huán)的判定
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省廣州市2025屆高三上學(xué)期12月調(diào)研測試語文試題(含答案)
- 環(huán)形紅斑的臨床護理
- 《政策爭論》課件
- 【培訓(xùn)課件】課題研究的實施過程
- 淋巴瘤樣丘疹病的臨床護理
- 血崩的健康宣教
- 多形紅斑的臨床護理
- 陰囊濕疹樣癌的臨床護理
- JJF(陜) 003-2019 砂漿稠度測定儀校準規(guī)范
- 【培訓(xùn)課件】認識浪費與效率
- 三切口食管癌手術(shù)步驟
- 高三一模作文“文學(xué)不是我生命中的唯一”導(dǎo)寫
- (2024年)功能醫(yī)學(xué)與健康管理
- 2023年度省綜合專家?guī)煸u標專家繼續(xù)教育培訓(xùn)考試試題(三套)
- 試驗檢測單位安全培訓(xùn)課件
- 二年級下冊加減混合豎式練習(xí)360題附答案
- 公路瀝青路面設(shè)計標準規(guī)范
- 2024年湖北交投智能檢測股份有限公司招聘筆試參考題庫含答案解析
- 2023年銀行安全保衛(wèi)知識考試題庫(含答案)
- 水庫白蟻防治標書
- 廣東省深圳市寶安、羅湖、福田、龍華四區(qū)2023-2024學(xué)年數(shù)學(xué)九年級第一學(xué)期期末聯(lián)考試題含解析
評論
0/150
提交評論