C語言循環(huán)控制_第1頁
C語言循環(huán)控制_第2頁
C語言循環(huán)控制_第3頁
C語言循環(huán)控制_第4頁
C語言循環(huán)控制_第5頁
已閱讀5頁,還剩78頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、13456main( ) int s=0,i=1; loop: if ( i100 ) s=s+i; i=i+1; loop; printf(“s=%dn”,s);loop: 語句標(biāo)號語句標(biāo)號goto loop: 無條件轉(zhuǎn)向語句無條件轉(zhuǎn)向語句if與與goto構(gòu)成了循環(huán)構(gòu)成了循環(huán)7n goto 語句標(biāo)號語句標(biāo)號;n 將程序控制轉(zhuǎn)移到將程序控制轉(zhuǎn)移到“語句標(biāo)號語句標(biāo)號”標(biāo)識的語句執(zhí)行。標(biāo)識的語句執(zhí)行。8用用標(biāo)識符標(biāo)識符表示表示用來標(biāo)識語句,它出現(xiàn)在語句的前面,用用來標(biāo)識語句,它出現(xiàn)在語句的前面,用冒號冒號 ( :)與語句分開,使用格式為:與語句分開,使用格式為: 語句標(biāo)號:語句;語句標(biāo)號:語句;p

2、1:printf(“hello!”); printf(“world!”); . goto p1;2a:printf(“this is a book!”); goto 2a;n 語句標(biāo)號僅對語句標(biāo)號僅對goto語句有意義,通常只給語句有意義,通常只給goto語句要語句要轉(zhuǎn)去的語句加標(biāo)號。轉(zhuǎn)去的語句加標(biāo)號。9n 語句標(biāo)號:語句標(biāo)號:if(表達(dá)式)表達(dá)式) 語句;語句; goto 語句標(biāo)號;語句標(biāo)號;n 當(dāng)當(dāng)if中的表達(dá)式為真時,執(zhí)行循環(huán)體,為假時跳出中的表達(dá)式為真時,執(zhí)行循環(huán)體,為假時跳出循環(huán),執(zhí)行循環(huán)體下面的語句。循環(huán),執(zhí)行循環(huán)體下面的語句。循環(huán)體循環(huán)體10goto語句容易造成程序不清晰,不利于

3、實現(xiàn)語句容易造成程序不清晰,不利于實現(xiàn)結(jié)構(gòu)化程序設(shè)計,因此,最好不用在程序中使用它。結(jié)構(gòu)化程序設(shè)計,因此,最好不用在程序中使用它。11實現(xiàn)實現(xiàn)當(dāng)型當(dāng)型循環(huán)循環(huán)12 while(表達(dá)式)表達(dá)式) 循環(huán)體;循環(huán)體;n 先求解表達(dá)式的值。先求解表達(dá)式的值。 判斷表達(dá)式的值,為真則執(zhí)行循環(huán)體。判斷表達(dá)式的值,為真則執(zhí)行循環(huán)體。 再判斷表達(dá)式的值,重復(fù)上述工作。當(dāng)表達(dá)式的再判斷表達(dá)式的值,重復(fù)上述工作。當(dāng)表達(dá)式的 值為假時退出循環(huán)。值為假時退出循環(huán)。13循環(huán)體循環(huán)體表達(dá)式表達(dá)式flasetrue14考察下列各例,總結(jié)控制循環(huán)執(zhí)行的方式。考察下列各例,總結(jié)控制循環(huán)執(zhí)行的方式。15例例6-1、main()

4、int i=1,sum=0; while(i=100) sum+=i; i+; i不僅參與運算,還要控制循環(huán)。不僅參與運算,還要控制循環(huán)。注意:循環(huán)體用注意:循環(huán)體用括起來括起來;n 初始值:初始值:i=1,sum=0;n 循環(huán)條件:循環(huán)條件:i=100n 循環(huán)控制:循環(huán)控制:i+; 16#include main( ) char c; c=getchar( ); while(c!=n) switch(c-2) case 0: case 1: putchar(c+4); case 2: putchar(c+4);break; case 3: putchar(c+3); default:putc

5、har(c+2);break; c=getchar( ); 例例2while(c=getchar( )!=n)表達(dá)更為簡潔。表達(dá)更為簡潔。只要滿足一定條件,需要多少次就運行多少次。只要滿足一定條件,需要多少次就運行多少次。17n 初始值:無初始值:無;n 循環(huán)條件:循環(huán)條件:(c=getchar( ) )!=nn 循環(huán)控制:輸入的字符循環(huán)控制:輸入的字符18while(c=getchar( )!=n)while(c=getchar( )!=n)19#include main( ) char c; while(c=getchar( )!=n) switch(c-2) case 0: case 1

6、: putchar(c+4); case 2: putchar(c+4);break; case 3: putchar(c+3); default:putchar(c+2);break; 20Example 6.1-Programmain()/*計算計算y=xn */int count, n;float x, y;printf(Enter the values of x and n:);scanf(%f %d, &x, &n);y=1.0;count=1;/*Initialization*/* Loop Begins */while (count = n)/*Testing*/y=y*x;co

7、unt+;/*Incrementing*/* End of Loop*/printf(nx=%f; n=%d; x to power n=%fn,x,n,y);21void main() double sum=0,p=1; int i=1; while(i=64) sum+=p; p*=2; i+; printf(“%.7len”, sum); getch();2223242526272829do while 循環(huán)直到型直到型循環(huán)循環(huán)30 do 循環(huán)體;循環(huán)體; while(表達(dá)式)表達(dá)式)n 先執(zhí)行循環(huán)體。先執(zhí)行循環(huán)體。 再求解表達(dá)式的值,判斷,為真則執(zhí)行循環(huán)體,否再求解表達(dá)式的值,判斷,為

8、真則執(zhí)行循環(huán)體,否則退出循環(huán)。則退出循環(huán)。 31循環(huán)體語句循環(huán)體語句表達(dá)式表達(dá)式flasetrue32例例1_2main() int i=1,sum=0; do sum+=i; i+; while(i=100);采用的是什么循環(huán)采用的是什么循環(huán)結(jié)束控制方法?結(jié)束控制方法?計數(shù)法計數(shù)法33例:例:main() int i,flag; i=0; flag=0; do i+; if(i%3=2&i%5=3&i%7=2) flag=1; while(flag!=1); printf(“i=%dn”, i); 采用的是什么循環(huán)采用的是什么循環(huán)結(jié)束控制方法?結(jié)束控制方法?標(biāo)志法標(biāo)志法34調(diào)試下列程序調(diào)試下

9、列程序,并指出是實現(xiàn)的什么功能。并指出是實現(xiàn)的什么功能。main()int k,num; k=1; num=26; do k*=num%10; num/=10; while(num); printf(k=%dn,k);35n while與與do.while: while:先判定表達(dá)式,后執(zhí)行循環(huán);先判定表達(dá)式,后執(zhí)行循環(huán); dowhile:先執(zhí)行循環(huán),再判斷表達(dá)式;:先執(zhí)行循環(huán),再判斷表達(dá)式; 即即:dowhile語句的循環(huán)體至少會被執(zhí)行一次。語句的循環(huán)體至少會被執(zhí)行一次。 int i=0;while(i)int i=0;dowhile(i);執(zhí)行次執(zhí)行次執(zhí)行次執(zhí)行次n除循環(huán)體一次都不執(zhí)行的情

10、況外,除循環(huán)體一次都不執(zhí)行的情況外,while與與dowhile可以互相轉(zhuǎn)換??梢曰ハ噢D(zhuǎn)換。36步長型步長型循環(huán)循環(huán)37 for(表達(dá)式表達(dá)式1;表達(dá)式;表達(dá)式2;表達(dá)式;表達(dá)式3) 循環(huán)體;循環(huán)體;n 執(zhí)行表達(dá)式執(zhí)行表達(dá)式1(初始化表達(dá)式);(初始化表達(dá)式); 判斷表達(dá)式判斷表達(dá)式2,為真則執(zhí)行循環(huán)體,否則退出循環(huán);,為真則執(zhí)行循環(huán)體,否則退出循環(huán); 執(zhí)行表達(dá)式執(zhí)行表達(dá)式3(修正表達(dá)式);(修正表達(dá)式); 再判斷表達(dá)式再判斷表達(dá)式2, 重復(fù)上述過程,直到表達(dá)式重復(fù)上述過程,直到表達(dá)式2值為假。值為假。 38求解表達(dá)式求解表達(dá)式1表達(dá)式表達(dá)式2flasetrue循環(huán)體語句循環(huán)體語句求解表達(dá)式求

11、解表達(dá)式3for語句的下一語句語句的下一語句for語句語句39n一般說來,一般說來,for 語句的格式可以理解為如下形式:語句的格式可以理解為如下形式:for(初始化表達(dá)式初始化表達(dá)式 ; 條件表達(dá)式條件表達(dá)式 ;修正表達(dá)式);修正表達(dá)式) 循環(huán)體語句循環(huán)體語句 例如:求例如:求1100的和的和 int i, sum=0; for(i=1; i=100 ; i+) sum=sum+i;40n由由for語句流程圖可以看出,可以有以下幾種省略語句流程圖可以看出,可以有以下幾種省略形式:形式:表達(dá)式表達(dá)式1省略,但不能省略分號。但給循環(huán)變量賦初省略,但不能省略分號。但給循環(huán)變量賦初值應(yīng)在值應(yīng)在for

12、語句前完成。語句前完成。例如:例如: i=1; for(; i=100 ; i+) 41表達(dá)式表達(dá)式3省略,但不能省略分號。但要將表達(dá)式省略,但不能省略分號。但要將表達(dá)式3包包含到循環(huán)體中。含到循環(huán)體中。例如:例如: for( i=1; i=100 ; ) i+; 42表達(dá)式表達(dá)式1、3省略,但不能省略分號。但要將在省略,但不能省略分號。但要將在for語語句前賦初值,并將表達(dá)式句前賦初值,并將表達(dá)式3包含到循環(huán)體中。此時相當(dāng)包含到循環(huán)體中。此時相當(dāng)于于while循環(huán)。循環(huán)。例如:例如: i=1; for(; i100) break; 44表達(dá)式表達(dá)式1、2、3省略,但不能省略分號。但要在循環(huán)省

13、略,但不能省略分號。但要在循環(huán)體中控制循環(huán)的結(jié)束。此時,相當(dāng)于體中控制循環(huán)的結(jié)束。此時,相當(dāng)于while(1)語句。語句。例如:例如: i=1; for(; ;) if(i100) break; i+; 45n表達(dá)式表達(dá)式1、3可以是一個簡單的表達(dá)式,也可以是逗可以是一個簡單的表達(dá)式,也可以是逗號表達(dá)式。號表達(dá)式。 如:如: sum=0; for (i=1;i100;i+) 可以寫為:可以寫為: for(sum=0,i=1;i100;i+)46474849505152跳出循環(huán)體或switch結(jié)構(gòu)注意:只跳出本層次循環(huán)53Example 6.5The program reads a list o

14、f positive values and calculates their average.54main()int m;float x, sum, average;printf(This program computes the average of a set of numbersn);printf(Enter values one after anothern);printf(Enter a NEGATIVE number at the end.nn);sum=0;for(m=1;m=1000;+m)scanf(%f,&x);if(x0)break;sum+=x;average=sum/

15、(float)(m-1);printf(n);printf(Number of values = %dn, m-1);printf(Sum = %fn, sum);printf(Average = %fn, average);5556 continue; 結(jié)束結(jié)束本次本次循環(huán),接著進(jìn)行下一次循環(huán)。循環(huán),接著進(jìn)行下一次循環(huán)。57Example 6.7The program evaluates the square root of a series of number and prints the results. The process stops when the number 9999 is

16、 typed in.58#include main()int count, negative;double number, sqroot;printf(Enter 9999 to STOPn);count=0;negative=0;while(count=100)printf(Enter a number:);scanf(%lf,&number);if(number=9999)break;/*EXIT FROM THE LOOP*/if(number0)printf(Number is negativenn);negative+;continue;/*SKIP REST OF THE LOOP

17、*/sqroot=sqrt(number);printf(Number = %lfnSquare root=%lfnn,number,sqroot);count+;printf(Number of items done=%dn,count);printf(nnNegative items=%dn,negative);printf(END OF DATAn);59結(jié)果:結(jié)果:1491614916* *60輸出輸出100100200200間所有不能被間所有不能被3 3整除的數(shù)整除的數(shù)61A) 7 B) 8 C) 9 D) 10答案:答案:B62A) k=3 B)k=4 C)k=2 D)k=0答案:

18、答案:B63A) x=4 B)x=8 C) x=6 D)x=12答案:答案:B64 #include #include main ( ) int m, k, i; scanf(“%d”,&m); k = (int) sqrt(m); for (i=2; i=k+1) printf(%d is a prime number!n,m); else printf(%d is not a prime number!n,m); 例:判斷例:判斷m是否為素數(shù)是否為素數(shù)讀入讀入mk=sqrt(m)I=2當(dāng)當(dāng)I=k+1真真 假假輸出是素數(shù)輸出是素數(shù) 輸出不是素數(shù)輸出不是素數(shù)65 continue環(huán)境環(huán)境可用在

19、循環(huán)語句與可用在循環(huán)語句與switch語句語句只能用在循環(huán)語句只能用在循環(huán)語句功能功能跳出跳出當(dāng)前整個當(dāng)前整個循環(huán)語句與循環(huán)語句與switch語句語句跳出跳出本次本次循環(huán),繼續(xù)下一次循循環(huán),繼續(xù)下一次循環(huán)環(huán)均不能控制均不能控制ifgoto構(gòu)成的循環(huán)構(gòu)成的循環(huán)在多重循環(huán)中,在多重循環(huán)中,break用于跳出本層循環(huán)。用于跳出本層循環(huán)。6667外層循環(huán)外層循環(huán)內(nèi)層循環(huán)內(nèi)層循環(huán)結(jié)果:結(jié)果:x=12,y=868Program 6_2A program to print the multiplication table from 11 to 1210 as shown below is given: 1

20、2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 11 22 33 44 55 66 77 88

21、99 110 12 24 36 48 60 72 84 96 108 12069#define COLMAX 10#define ROWMAX 12main()int row, column, y;row=1;printf( MULTIPLICATION TABLEn);printf(-n);do/*.OUTER LOOP BEGINGS.*/column=1;do/*.INNER LOOP BEGINS.*/y=row*column;printf(%4d,y);column=column+1;while(column = COLMAX); /*INNER LOOP ENDS*/printf(n);row=row+1;while(row = ROWMAX); /*.OUTER LOOPS ENDS.*/printf(-n);706_2B#define COLMAX 10#define

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論