版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 概述概述 gotogoto語句以及用語句以及用gotogoto語句構(gòu)成循環(huán)語句構(gòu)成循環(huán) 用用whilewhile語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán) 用用do-whiledo-while語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán) 用用for for 語句實現(xiàn)循環(huán)語句實現(xiàn)循環(huán) 循環(huán)的嵌套循環(huán)的嵌套 幾種循環(huán)的比較幾種循環(huán)的比較 breakbreak語句語句continuecontinue和語句和語句 程程 序序 舉舉 例例 什么是循環(huán)?什么是循環(huán)? 為什么要使用循環(huán)?為什么要使用循環(huán)? 100 1n yn 問題問題1 1: 問題問題2:2: 在許多問題中需要用到循環(huán)控制。循環(huán)結(jié)構(gòu) 是結(jié)構(gòu)化程序設(shè)計的基本結(jié)構(gòu)之一,它和順序結(jié)
2、 構(gòu)、選擇結(jié)構(gòu)共同作為各種復雜程序的基本構(gòu)造 單元。 goto語句為無條件轉(zhuǎn)向語句,它的一般形式 為 goto goto 語句標號;語句標號; 語句標號用標識符表示,它的定名規(guī)則與變量 名相同,即由字母、數(shù)字和下劃線組成,其第 一個字符必須為字母或下劃線。 例如:例如:goto label_1; 合法; goto 123; 不合法. 結(jié)構(gòu)化程序設(shè)計方法主張限制使用goto語句,因 為濫用goto語句將使程序流程無規(guī)律、可讀性差. 一般來說,可以有兩種用途: (1) 與if語句一起構(gòu)成循環(huán)結(jié)構(gòu); (2) 從循環(huán)體中跳轉(zhuǎn)到循環(huán)體外。 但是這種用法不符合結(jié)構(gòu)化原則,一般不宜采 用,只有在不得已時(例
3、如能大大提高效率)才使用. 100 1n n 這里用的是“當型”循環(huán) 結(jié)構(gòu),當滿足“i=100” 時執(zhí) 行花括弧內(nèi)的循環(huán)體。 運行結(jié)果:運行結(jié)果:50505050 while語句用來實現(xiàn)“當型”循環(huán)結(jié)構(gòu)。 一般形式:一般形式: while (while (表達式表達式) ) 語句語句 當表達式為非0值時,執(zhí)行while語 句中的內(nèi)嵌語句。其特點是:先判斷表達 式,后執(zhí)行語句。 100 1n n (1)循環(huán)體如果包含一個以上 的語句,應(yīng)該用花括弧括起來,以復 合語句形式出現(xiàn).(2)在循環(huán)體中應(yīng)有 使循環(huán)趨向于結(jié)束的語句 。 運行結(jié)果:運行結(jié)果:50505050 注意:注意: 循環(huán)體如果包含一個以
4、上的語句,應(yīng)該用花括 弧括起來,以復合語句形式出現(xiàn)。 在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句。如 果無此語句,則i的值始終不改變,循環(huán) 永不結(jié)束。 do-while語句的特點:先執(zhí)行循環(huán)體,然后判斷循環(huán)條件 是否成立。 一般形式一般形式: : do do 循環(huán)體語句 whilewhile (表達式); 執(zhí)行過程:執(zhí)行過程:先執(zhí)行一次指定的循環(huán)體語句,然后判 別表達式,當表達式的值為非零(“真”) 時,返回 重新執(zhí)行循環(huán)體語句,如此反復,直到表達式的值 等于0為止,此時循環(huán)結(jié)束。 運行結(jié)果:運行結(jié)果:50505050 100 1n n whilewhile語句和用語句和用do-whiledo-wh
5、ile語句的比較語句的比較: : 在一般情況下,用while語句和用do-while語 句處理同一問題時,若二者的循環(huán)體部分是一 樣的,它們的結(jié)果也一樣。但是如果while后面 的表達式一開始就為假(0值)時,兩種循環(huán)的結(jié) 果是不同的。 100 1n n 運行結(jié)果:運行結(jié)果: 11 sum=55 sum=55 再運行一次:再運行一次: 1111 sum=0sum=0 運行結(jié)果:運行結(jié)果: 11 sum=55 sum=55 再運行一次:再運行一次: 1111 sum=11sum=11 (1)當while后面的表達式的 第一次的值為“真”時,兩種循環(huán) 得到的結(jié)果相同。否則,二者結(jié)果 不相同。 in
6、clude include void main()void main() int a,n,t,i,s=0;int a,n,t,i,s=0; scanf(“%d,%d”, scanf(“%d,%d”, t=a; t=a; while(i=n)while(i=n) s=s+t; s=s+t; t=t t=t* *10+a;10+a; i+; i+; printf(%dn,s); printf(%dn,s); C語言中的for語句使用最為靈活,不僅可以用于循 環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不 確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代 替while語句。 一般形式一般形式: : for
7、for(表達式1;表達式2;表達式3) 語句 forfor語句的執(zhí)行過程:語句的執(zhí)行過程: (1) 先求解表達式1。 (2) 求解表達式2,若其值為真(值為非0),則執(zhí) 行for語句中指定的內(nèi)嵌語句,然后執(zhí)行下 面第(3)步。若為假(值為0),則結(jié)束循環(huán), 轉(zhuǎn)到第(5)步。 (3) 求解表達式3。 (4) 轉(zhuǎn)回上面第(2)步驟繼續(xù)執(zhí)行。 (5) 循環(huán)結(jié)束,執(zhí)行for語句下面的一個語句 表達式表達式2? 執(zhí)行語句語句 成立成立 不成立不成立 執(zhí)行for循環(huán)之后的語句 執(zhí)行表達式3 執(zhí)行表達式執(zhí)行表達式1 循環(huán)初始條件循環(huán)初始條件 循環(huán)控制條件循環(huán)控制條件 循環(huán)體循環(huán)體 for語句等價于下列語句:
8、語句等價于下列語句: 表達式表達式1; while (表達式(表達式2) 語句;語句; 表達式表達式3; for語句最簡單的應(yīng)用形式也就是最易理解的如下 形式: forfor(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值) 例如例如: : for(i=1;i=100;i+) sum=sum+i; 它相當于以下語句: i=1; while(i=100) sum=sum+i;i+; 顯然,用for語句 簡單、方便。 (1) for語句的一般形式中的“表達式1”可以省略,此 時應(yīng)在for語句之前給循環(huán)變量賦初值。注意省略表達 式1時,其后的分號不能省略。如 for(;i=100;i+) sum=sum+i
9、; 執(zhí)行時,跳過“求解表達式1”這一步,其他不變。 (2) 如果表達式2省略,即不判斷循環(huán)條件,循環(huán)無終 止地進行下去。也就是認為表達式2始終為真。 例如:例如:for(i=1; ;i+) sum=sum+i; 表達式1是一個賦值表達式,表達式2空缺。它相當于: i=1; while(1) sum=sum+1;i+; (3) 表達式3也可以省略,但此時程序設(shè)計者應(yīng)另外設(shè) 法保證循環(huán)能正常結(jié)束。如:如: for(i=1;i=100;) sum=sum+i;i+; 在上面的for語句中只有表達式1和表達式2,而沒有 表達式3。i+的操作不放在for語句的表達式3的位置處, 而作為循環(huán)體的一部分,效
10、果是一樣的,都能使循環(huán)正 常結(jié)束。 (4) 可以省略表達式1和表達式3,只有表達式2,即只 給循環(huán)條件。如:如: for(;i=100;) while(i=100) sum=sum+i; 相當于 sum=sum+i; i+; i+; 在這種情況下,完全等同于while語句??梢奻or語句 比while語句功能強,除了可以給出循環(huán)條件外,還可 以賦初值,使循環(huán)變量自動增值等。 (5) 3個表達式都可省略,如:如: for(; ;) 語句 相當于 while(1) 語句 即不設(shè)初值,不判斷條件(認為表達式2為真值), 循環(huán)變量不增值。無終止地執(zhí)行循環(huán)體。 (6) 表達式1可以是設(shè)置循環(huán)變量初值的賦
11、值表達式, 也可以是與循環(huán)變量無關(guān)的其他表達式。如如: : for (sum=0;i=100;i+) sum=sum+i; 表達式3也可以是與循環(huán)控制無關(guān)的任意表達式。 表達式1和表達式3可以是一個簡單的表達式,也可以 是逗號表達式,即包含一個以上的簡單表達式,中間用 逗號間隔。如:如: for(sum=0,i=1;i=100;i+) sum=sum+i; 或 for(i=0,j=100;i=j;i+,j-) k=i+j; 表達式1和表達式3都是逗號表達式,各包含兩個賦值 表達式,即同時設(shè)兩個初值,使兩個變量增值. 在逗號表達式內(nèi)按自左至右順序求解,整個逗號表達 式的值為其中最右邊的表達式的值
12、。如如: : for(i=1;i=100;i+,i+) sum=sum+i; 相當于 for(i=1;i=100;i=i+2) sum=sum+i; (7) 表達式一般是關(guān)系表達式(如i=100)或邏輯表達式 (如ab (c=getchar()!=n;i+=c); 在表達式2中先從終端接收一個字符賦給c,然后判斷 此賦值表達式的值是否不等于n(換行符),如果 不等于n,就執(zhí)行循環(huán)體。 此for語句的循環(huán)體為空語句,把本來要在循環(huán) 體內(nèi)處理的內(nèi)容放在表達式3中,作用是一樣的??梢?for語句功能強,可以在表達式中完成本來應(yīng)在循環(huán)體 內(nèi)完成的操作。 for( ;(c=getchar()!=n;)
13、printf(%c,c); for語句中只有表達式2,而無表達式1和表達式3。 其作用是每讀入一個字符后立即輸出該字符,直到輸入 一個“換行”為止。請注意,從終端鍵盤向計算機輸入 時,是在按Enter鍵以后才將一批數(shù)據(jù)一起送到內(nèi)存緩 沖區(qū)中去的。 運行情況:運行情況: ComputerComputer ( (輸入輸入) ) Computer (Computer (輸出輸出) ) 而不是而不是 CcoommppuutteerrCcoommppuutteerr 注意注意: : C語言中的for語句比其他語言(如BASIC, PASCAL)中的FOR語句功能強得多。可以把循環(huán)體 和一些與循環(huán)控制無關(guān)
14、的操作也作為表達式1或 表達式3出現(xiàn),這樣程序可以短小簡潔。但過分 地利用這一特點會使for語句顯得雜亂,可讀性 降低,最好不要把與循環(huán)控制無關(guān)的內(nèi)容放到 for語句中。 100 1n n 例例5.65.6 用/41-1/3+1/5-1/7+公式求的 近似值,直到某一項的絕對值小于為止。 100 1n n 運行結(jié)果:運行結(jié)果: pi= 3.141594 例例5.75.7 求Fibonacci數(shù)列前40個數(shù)。這個數(shù)列有如下 特點:第1,2兩個數(shù)為1,1。從第3個數(shù)開始,該數(shù)是 其前面兩個數(shù)之和。即: F(1)=1 (n=1) F(2)=1 (n=2) F(n)=F(n-1)+F(n-2) (n3
15、) 算法如圖所示: 1 F 100 1n n 運行結(jié)果:運行結(jié)果: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 57022887 9227465 14930352 24157817 39088169 63245986 102334155 100 1n n 運行結(jié)果:運行結(jié)果: 17 17 is a prime number 例例5
16、.85.8判斷判斷m m是否素數(shù)。是否素數(shù)。 5.4.1 break5.4.1 break語句語句 break語句可以用來從循環(huán)體內(nèi)跳出循環(huán)體, 即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語句 一般形式:一般形式: break;break; 注意注意: :break語句不能用于循環(huán)語句和switch語 句之外的任何其他語句中。 例例: float pi=3.14159; for(r=1;r100) break; printf(r=%f,area=%fn,r,area); 程序的作用是計算程序的作用是計算r=1r=1到到r=10r=10時的圓面積,直到時的圓面積,直到 面積面積areaarea大于大于1
17、00100為止。從上面的為止。從上面的forfor循環(huán)可以看循環(huán)可以看 到:當?shù)剑寒攁rea100area100時,執(zhí)行時,執(zhí)行breakbreak語句,提前結(jié)束循語句,提前結(jié)束循 環(huán),即不再繼續(xù)執(zhí)行其余的幾次循環(huán)環(huán),即不再繼續(xù)執(zhí)行其余的幾次循環(huán)。 5.4.2 continue5.4.2 continue語句語句 作用為結(jié)束本次循環(huán),即跳過循環(huán)體中下面 尚未執(zhí)行的語句,接著進行下一次是否執(zhí)行循 環(huán)的判定. 一般形式:一般形式: continue;continue; continue語句和break語句的區(qū)別 continue語句只結(jié)束本次循環(huán),而不是終止 整個循環(huán)的執(zhí)行。 while(表達式1
18、) for if(表達式2) continue; 0 continue語句和break語句的區(qū)別 break語句則是結(jié)束整個循環(huán)過程,不再判 斷執(zhí)行循環(huán)的條件是否成立。 while(表達式1) for if(表達式2) break; (1)四種循環(huán)都可以用來處理同一問題,一般情 況下它們可以互相代替。但一般不提倡用goto 型循環(huán)。 (2)在while循環(huán)和do-while循環(huán)中,只在while 后面的括號內(nèi)指定循環(huán)條件,因此為了使循環(huán) 能正常結(jié)束,應(yīng)在循環(huán)體中包含使循環(huán)趨于結(jié) 束的語句(如i+,或i=i+1等)。 for循環(huán)可以在表達式3中包含使循環(huán)趨于 結(jié)束的操作,甚至可以將循環(huán)體中的操作
19、全部 放到表達式3中。因此for語句的功能更強,凡 用while循環(huán)能完成的,用for循環(huán)都能實現(xiàn)。 (3)用while和do-while循環(huán)時,循環(huán)變量初始 化的操作應(yīng)在while和do-while語句之前完成。 而for語句可以在表達式1中實現(xiàn)循環(huán)變量的初 始化。 (4)while循環(huán)、do-while循環(huán)和for循環(huán),可以 用break語句跳出循環(huán),用continue語句結(jié)束本 次循環(huán)(break語句和continue語句見下節(jié))。而 對用goto語句和if語句構(gòu)成的循環(huán),不能用 break語句和continue語句進行控制. 一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu) 稱為循環(huán)的嵌套。內(nèi)嵌
20、的循環(huán)中還可以嵌套 循環(huán),這就是多層循環(huán)。 三種循環(huán)(while循環(huán)、do-while循環(huán)和for循 環(huán))可以互相嵌套。 下面幾種都是合法的形式: (1) while( ) (2) do (3) for(;) while( ) do for(;) while( ); while( ); (4) while( ) (5) for(;) (6) do do while( ) for(;) while( ) while( ) (1)四種循環(huán)都可以用來處理同一問題,一般情 況下它們可以互相代替。但一般不提倡用goto 型循環(huán)。 (2)在while循環(huán)和do-while循環(huán)中,只在while 后面的括號
21、內(nèi)指定循環(huán)條件,因此為了使循環(huán) 能正常結(jié)束,應(yīng)在循環(huán)體中包含使循環(huán)趨于結(jié) 束的語句(如i+,或i=i+1等)。 for循環(huán)可以在表達式3中包含使循環(huán)趨于 結(jié)束的操作,甚至可以將循環(huán)體中的操作全部 放到表達式3中。因此for語句的功能更強,凡 用while循環(huán)能完成的,用for循環(huán)都能實現(xiàn)。 (3)用while和do-while循環(huán)時,循環(huán)變量初始 化的操作應(yīng)在while和do-while語句之前完成。 而for語句可以在表達式1中實現(xiàn)循環(huán)變量的初 始化。 (4)while循環(huán)、do-while循環(huán)和for循環(huán),可以 用break語句跳出循環(huán),用continue語句結(jié)束本 次循環(huán)(break語句
22、和continue語句見下節(jié))。而 對用goto語句和if語句構(gòu)成的循環(huán),不能用 break語句和continue語句進行控制. 運行結(jié)果:運行結(jié)果: 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 例例5.9 5.9 求求100100200200間的全部素數(shù)。間的全部素數(shù)。 #include #include void main() int m,k,i,n=0; for(m=101;m=200;m=m+2) k=sqrt(m); for(i=2;i=k+1)printf(%
23、5d ,m);n=n+1; if(n%10=0) printf(n); printf (n); 例例5.10 5.10 求求S=1!+2!+3!+10!S=1!+2!+3!+10! #include void main() int i,j; long s=0, t=1; for(i=1;i=10;i+) t=t*j; s=s+t; printf (“%ldn“,s); 例例5.10 5.10 求求S=1!+2!+3!+10!S=1!+2!+3!+10! #include void main() int i,j; long s=0,t; for(i=1;i=10;i+) t=1; for(j=1
24、;j=i;j+) t=t*j; s=s+t; printf (“%ldn“,s); 例例5.105.10 譯密碼。為使電文保密,往往按一定規(guī)律將 其轉(zhuǎn)換成密碼,收報人再按約定的規(guī)律將其譯回原文。 例如例如: :可以按以下規(guī)律將電文變成密碼: 將字母A變成字母E,a變成e,即變成其后的第4個字 母,W變成A,X變成B,Y變成C,Z變成D。 1 F 運行結(jié)果:運行結(jié)果: China! Glmre! 例例5.105.10輸入一行字符,要求輸出其相應(yīng)的密碼輸入一行字符,要求輸出其相應(yīng)的密碼 include void main() char c; while(c=getchar()!=n) if(c=a
25、 printf(%cn,c); 100 1n n 輸入兩個正整數(shù)輸入兩個正整數(shù),求最大公約數(shù)和最小公倍求最大公約數(shù)和最小公倍數(shù) include include void main()void main() int m,int m,t,i,p,q;,t,i,p,q; scanf(“%d,%d”, scanf(“%d,%d”, if(mn) if(mn) t=m; m=n; n=t; t=m; m=n; n=t; for(i=1;i=m;i+) for(i=1;i=m;i+) if(m%i=0 p=i; for(i=n;i=m for(i=n;i=m* *n,i+)n,i+) if(i%m=0 b
26、reak; q=i; break; printf(“%d,%d”,p,q); printf(“%d,%d”,p,q); 100 1n n 一個數(shù)如果等于它的因子和,這個數(shù)就稱為一個數(shù)如果等于它的因子和,這個數(shù)就稱為“完數(shù)完數(shù)”例例 如如6的因子為的因子為1,2,3,而,所以是完數(shù),而,所以是完數(shù), 求求1000以內(nèi)的所有完數(shù)以內(nèi)的所有完數(shù) #include #include void main()void main() int i,j,s;int i,j,s; for(i=1;i=1000;i+) for(i=1;i=1000;i+) s=0; s=0; for(j=1;ji,j+) for(j=1;ji,j+) if(i%j=0) if(i%j=0) s=s+j; s=s+j; if(i=s) if(i=s) printf(“%dn”,i) printf(“%dn”,i) * * * * * * * * * * * * * * * * * * * * * * * * * include include void main()void main() int i,j,k;int i,j,k; for(i=1;i=4;i+) for(i=1;i=4;i+) for(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年蘭州外語職業(yè)學院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 2025年麗江師范高等??茖W校高職單招數(shù)學歷年(2016-2024)頻考點試題含答案解析
- 2025年中山職業(yè)技術(shù)學院高職單招數(shù)學歷年(2016-2024)頻考點試題含答案解析
- 2025年上海行健職業(yè)學院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 營養(yǎng)與慢性病防控-洞察分析
- 2025年三亞航空旅游職業(yè)學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 用戶畫像在電商中的應(yīng)用-洞察分析
- 天仙子病蟲害防治研究-洞察分析
- 陶瓷材料在微波器件中的應(yīng)用-洞察分析
- 遺傳基因與文化適應(yīng)-洞察分析
- 銷售與銷售目標管理制度
- 人教版(2025新版)七年級下冊英語:寒假課內(nèi)預習重點知識默寫練習
- 2024年食品行業(yè)員工勞動合同標準文本
- 全屋整裝售后保修合同模板
- 高中生物學科學推理能力測試
- GB/T 44423-2024近紅外腦功能康復評估設(shè)備通用要求
- 2024-2030年中國減肥行業(yè)市場發(fā)展分析及發(fā)展趨勢與投資研究報告
- 運動技能學習
- 2024年公安部直屬事業(yè)單位招聘筆試參考題庫附帶答案詳解
- 臨沂正祥建材有限公司牛心官莊鐵礦礦山地質(zhì)環(huán)境保護與土地復墾方案
- 六年級上冊數(shù)學應(yīng)用題練習100題及答案
評論
0/150
提交評論