版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第五章第五章語句語句順序結構順序結構: :main( ) int a , b; scanf(%d%d,&a,&b); printf(abn); printf(ab) printf(abn); else printf(a=bn);main( ) int a , b ; scanf(%d%d,&a,&b); while(a=b);表達式語句和空語句表達式語句和空語句:表達式語句:表達式表達式語句:表達式+“ ;” eg:a=b+2; ba?a+: b-; !b|a+&b-; 空語句:;空語句:;復合語句和分程序:復合語句和分程序:分程序是指含有說明語句的分程
2、序是指含有說明語句的復合語句復合語句。main( )int a=5,b=3;if(ab) printf(abn);elsea+=1; printf(a y ) z = x; if (表達式表達式) 語句語句main( ) int a,b; scanf(%d%d,&a,&b); if(ab) printf(%d,a);(2)雙分支)雙分支if 語句語句 if (表達式表達式) 語句語句1 else 語句語句2 語義語義: 當表達式的值為當表達式的值為“真真”(非零)時,執(zhí)行語句(非零)時,執(zhí)行語句1, 否則,執(zhí)行語句否則,執(zhí)行語句2。 如如: if (xy) z=x ; else
3、 z=y ;main( ) int a,b; scanf(%d%d,&a,&b); if(ab) printf(%d,a); else printf(%d,b); 分析下列程序運行結果分析下列程序運行結果(3)多分支)多分支if 語句語句 if (表達式表達式1) 語句語句1 else if(表達式表達式2) 語句語句2 else if(表達式表達式3) 語句語句3 : else if(表達式表達式m) 語句語句m else 語句語句m+1main( ) int a,b; scanf(%d%d,&a,&b); if(ab) printf(%d,a); else
4、if(a6) if (n12) printf(“6n12”);else printf(“n=0) printf(“X is positive.”); x+;else printf(“X is negative.”);if (x=0) printf(“X is positive.”); x+;else printf(“X is negative.”); 在在if語句中又包含一個或多個語句中又包含一個或多個if語句的形式。語句的形式。if( ) if( ) 語句語句 else 語句語句else if( ) 語句語句 else 語句語句內(nèi)嵌內(nèi)嵌if 內(nèi)嵌內(nèi)嵌if或或 if( ) if( ) 語句語句
5、 else if( ) 語句語句2 else 語句語句3 內(nèi)嵌內(nèi)嵌if或或 if( ) if( ) 語句語句 (內(nèi)嵌內(nèi)嵌if ) else 語句語句 2此括號可省略嗎?此括號可省略嗎?每個每個else應與其應與其之前之前距離距離最近最近且且沒有與其它沒有與其它else配對配對的的if 配對。配對。 if (n6) if (n12) printf(“6n12”);else printf(“n6) if (n12) printf(“6n12”);else printf(“n=6”); 書寫程序的優(yōu)良風格書寫程序的優(yōu)良風格縮排縮排 #include main() int x; scanf(“%d”,
6、&x); if (x0) printf(“X is positive.”); x=x+1; else printf (“X is negative.”); 縮進縮進縮進if語句與條件運算符語句與條件運算符( ? : )語義完全相同,其語義完全相同,其流程圖都可用下圖描述。其區(qū)別在語法。流程圖都可用下圖描述。其區(qū)別在語法。if語句后面帶語句,語句后面帶語句,自身也是語句;自身也是語句;條件運算符條件運算符( ? : )后面帶表達式,自身后面帶表達式,自身還是表達式。還是表達式。 開關語句,用于解決多路分支的情況。開關語句,用于解決多路分支的情況。switch(表達式)(表達式) case
7、 常量表達式常量表達式1:語句序列:語句序列1 ;break ; case 常量表達式常量表達式2:語句序列:語句序列2 ;break ; : case 常量表達式常量表達式n:語句序列:語句序列n ;break ; default :語句序列:語句序列n+1 ;執(zhí)行機制:執(zhí)行機制:通常是整型、字符型通常是整型、字符型首先計算首先計算“表達式表達式”的值;找到與的值;找到與“表達式表達式”的值相同的的值相同的“常常量表達式量表達式”,執(zhí)行其,執(zhí)行其casecase后邊的語句塊;之后以次往下執(zhí)行語后邊的語句塊;之后以次往下執(zhí)行語句塊。句塊。 必須是常量必須是常量可以省略,如果需可以省略,如果需要
8、最多只能有一個要最多只能有一個例:例:char grade; scanf(%c,&grade); switch(grade) case A : printf(85100n); case B : printf(7084n); case C: printf(6069n); case D :printf(60n); default : printf(error n); 思考:若思考:若gread= B時,結果為時,結果為?顯然該結果是荒謬的。顯然該結果是荒謬的。如果不想這樣,可用如果不想這樣,可用break語句處理。語句處理。程序程序a5.cbreak語句:語句:格式:格式:break ;功
9、能:終止其所在語句序列的執(zhí)行。功能:終止其所在語句序列的執(zhí)行。switch(grade) case A : printf(85100n);break; case B : printf(7084n);break;case C: printf(6069n);break; case D :printf(60n);break;default : printf(error n); 當當 grade= B時,輸出結果為:時,輸出結果為: 70 84無無break語句的語句的switch語句語義結構圖示語句語義結構圖示:表達式表達式語句5語句4語句3語句2語句1出口表達式表達式語句5語句4語句3語句2語句1
10、出口有有break語句的語句的switch語句語義結構圖示語句語義結構圖示:流程圖為:流程圖為: grade輸出 “85100”輸出 “60”輸出 “60-69”輸出 “error”輸出 “70-84”switch的特點的特點 switch 語句中的表達式最好是整型表達式;語句中的表達式最好是整型表達式; 每一個每一個case表達式的值必須不同;表達式的值必須不同; 每一個每一個case后面若有多條語句,可不必使用括號;后面若有多條語句,可不必使用括號; 多個多個case可共用一組執(zhí)行語句;可共用一組執(zhí)行語句; 各各case以及以及default出現(xiàn)的次序無限制;出現(xiàn)的次序無限制; switc
11、h和多重和多重 if 的區(qū)別的區(qū)別 : switch 語句用于語句用于“一次計算,多種結果一次計算,多種結果”;計算結果;計算結果必須為整數(shù)。必須為整數(shù)。 多重多重 if 用于用于“多次計算,多個結果多次計算,多個結果”;計算結果可以;計算結果可以是任何類型數(shù)是任何類型數(shù),而且各表達式類型各不相同。而且各表達式類型各不相同。 思考思考 (上機題目上機題目) 將輸入的成績由百分制轉(zhuǎn)換將輸入的成績由百分制轉(zhuǎn)換為五級分制。為五級分制。 通過嵌套通過嵌套if-else或或switch實現(xiàn)實現(xiàn)5.3 C5.3 C語言的三結構之三語言的三結構之三循環(huán)結構循環(huán)結構“循環(huán)循環(huán)”的的語義語義是:在給定條件滿足時
12、,是:在給定條件滿足時,反復執(zhí)行某個程序段。反復執(zhí)行某個程序段。因此,在因此,在有需要重復執(zhí)行的動作、且重復次數(shù)有需要重復執(zhí)行的動作、且重復次數(shù)可控的情況下可以使用可控的情況下可以使用循環(huán)。循環(huán)。語言可以用以下控制語句來實現(xiàn)循環(huán):語言可以用以下控制語句來實現(xiàn)循環(huán): while語句;語句; do_while語句語句; for語句。語句。 此外用此外用goto和和if語句亦可構成循環(huán)語句亦可構成循環(huán)(不提倡)。(不提倡)。 執(zhí)行過程:執(zhí)行過程: 先計算表達式的值先計算表達式的值 ;若表達式的值為真若表達式的值為真(非非0)時時執(zhí)行循環(huán)體中的語句,然后重執(zhí)行循環(huán)體中的語句,然后重復上面步驟。若表達式
13、的值為復上面步驟。若表達式的值為假假(0) ,則結束循環(huán)。,則結束循環(huán)。語義是語義是“要做要做.嗎嗎?” 一般形式:一般形式: while (表達式表達式) 語句語句“ “表達式表達式”可以是任何表達式:邏輯、字符、賦值、逗號等表達式??梢允侨魏伪磉_式:邏輯、字符、賦值、逗號等表達式。main( ) int i =1, sum=0 ; while(i=100) sum=sum+i ; i+; printf(“%d”, sum); i=1當 i=100 sum=sum+i i=i+11001nn求:求:sumsum是否可以不設置初始值是否可以不設置初始值0 0? do 語句語句 while(表達
14、式);表達式);分號不能少分號不能少:語義是語義是“做做., 還要做嗎還要做嗎?”main( ) int i=1, sum=0; do sum=sum+i; i+; while(i=100); printf(%d,sum); main( ) int i, sum=0 ; scanf(“%d”, &i ) ; while(i=100) sum=sum+i; i+; printf(“%d”, sum);main( ) int i, sum=0 ; scanf(“%d”, &i ) ; do sum=sum+i ; i+; while(i=100) ; printf(“%d”, su
15、m);輸入:輸入:1 1 結果:結果:5050 5050 輸入:輸入:1 1 結果:結果:50505050輸入:輸入:101 101 結果:結果: 輸入輸入:101 :101 結果:結果:0101注意注意: 循環(huán)條件中的表達式一般是邏輯表達式和關循環(huán)條件中的表達式一般是邏輯表達式和關系表達式,也可以是算術表達式等其他表達式(非系表達式,也可以是算術表達式等其他表達式(非0為真,為真,0為假)。一般表達式中應含有循環(huán)控制變?yōu)榧伲R话惚磉_式中應含有循環(huán)控制變量。量。 while (3)和和while (0)是合法的,雖然從程序設是合法的,雖然從程序設計的角度上說是不盡合理。計的角度上說是不盡合理
16、。while (3) 語句語句 表示無限循環(huán)表示無限循環(huán)while (0) 語句語句 表示不進入循環(huán)體表示不進入循環(huán)體 要寫出一個正確的循環(huán)結構,對控制變量要要寫出一個正確的循環(huán)結構,對控制變量要做三方面工作:做三方面工作:控制變量賦初值控制變量賦初值; 把控制變量把控制變量寫入正確的循環(huán)條件;寫入正確的循環(huán)條件;循環(huán)中對控制變量的更循環(huán)中對控制變量的更新、調(diào)整。新、調(diào)整。 一般形式:一般形式: for(表達式表達式 1 ;表達式;表達式 2 ;表達式;表達式3 ) 語句語句 不能省略不能省略表達式表達式1:初始化表達式。:初始化表達式。表達式表達式2:循環(huán)控制條件。:循環(huán)控制條件。表達式表達
17、式3:在循環(huán)體語句之后執(zhí)行的表達式。:在循環(huán)體語句之后執(zhí)行的表達式。 正確設計循環(huán)結構應注意三方面的問題:正確設計循環(huán)結構應注意三方面的問題:控制變量的初始化控制變量的初始化;循環(huán)的條件循環(huán)的條件;控制變量的更新控制變量的更新。 求解求解表達式表達式1表達式表達式2語句語句求解求解表達式表達式3for語句的后續(xù)語句語句的后續(xù)語句。FTmain( ) int i, sum=0; for(i=1;i=100;i+ ) sum=sum+i; printf(%d,sum);main( ) int i=1 , sum=0; for( ;i=100;i+ ) sum=sum+i; printf(%d,su
18、m);main( ) int i , sum=0;printf(%d , sum);“表達式表達式”也可省,這將使循環(huán)也可省,這將使循環(huán)無終止進行下去。無終止進行下去。 相當于相當于: for( i=1; ; i+ ) sum=sum+i ; i=1; while( 1) sum+= i; i+; main( ) int i, sum=0; for(i=1;i=100; ) sum=sum+i; i+; printf(%d,sum);main( ) int i=1, sum=0; for( ; i=100 ; ) sum=sum+i; i+; printf(%d,sum);同時省略表達式和表達
19、式,則完全等同于同時省略表達式和表達式,則完全等同于whilewhile語句。語句。 如:如: int i = 1; int i = 1;int i = 1; int i = 1; for( for( ; i=100 ; i=100 ; ) ) 相當于相當于 while( i=100 )while( i=100 ) sum+= i ; i+; sum+= i ; i+; sum+= i ; i+; sum+= i ; i+; 三個表達式都可省略,則無終止地執(zhí)行循環(huán)體三個表達式都可省略,則無終止地執(zhí)行循環(huán)體(死循環(huán)死循環(huán))。如:如: for( ; ; ) 循環(huán)體循環(huán)體 相當于相當于 while(
20、 1 ) 循環(huán)體循環(huán)體 注意注意防止出現(xiàn)防止出現(xiàn)“死循環(huán)死循環(huán)” 無休止的循環(huán)稱為無休止的循環(huán)稱為“死循環(huán)死循環(huán)”。例如。例如: : main( ) main( ) int x=10; int x=10; for(;x=10;x-) for(;x=10;x-) printf(“%d” ,+x); printf(“%d” ,+x); 該程序會輸出無數(shù)個該程序會輸出無數(shù)個“11”“11”而不能正常終止。而不能正常終止。main( ) int i, sum; for( i=1,sum=0;i=100; s+=i,i+) ; printf(%d,sum);結構的嵌套是指三種基本結構(順序結構的嵌套是指
21、三種基本結構(順序, ,分支分支, ,循環(huán))體內(nèi)又包含另外的結構。循環(huán))體內(nèi)又包含另外的結構。所有程序所有程序不外乎三種基本結構及其嵌套組成不外乎三種基本結構及其嵌套組成,天下,天下程序概莫能外。程序概莫能外。循環(huán)與循環(huán)的嵌套,以及與順序結構與選循環(huán)與循環(huán)的嵌套,以及與順序結構與選擇結構都可以組成嵌套,且嵌套的層數(shù)不擇結構都可以組成嵌套,且嵌套的層數(shù)不限。限。ufor嵌套嵌套for循環(huán)循環(huán)for( ; ; ) for( ; ; ) ufor嵌套嵌套while循環(huán)循環(huán)for( ; ; ) while( ) ufor嵌套嵌套do_while 循環(huán)循環(huán)for( ; ; ) do while( );
22、while嵌套自身嵌套自身while( ) while( ) while嵌套嵌套do_whilewhile( ) do while( ); while 嵌套嵌套 forwhile( ) for( ; ; ) udo_while嵌套嵌套for循環(huán)循環(huán)do for( ; ; ) while( ); u do_while嵌套嵌套while循環(huán)循環(huán)do while( ) while( ); udo_while嵌套自身嵌套自身do do while( ) while( ); break ;一般形式:一般形式:功能:結束循環(huán)的執(zhí)行,跳出當功能:結束循環(huán)的執(zhí)行,跳出當前循環(huán)層。前循環(huán)層。 解釋:解釋:bre
23、ak 語句一般用在循環(huán)語句一般用在循環(huán)體內(nèi)的條件語句中,作用體內(nèi)的條件語句中,作用是當某個條件成立時用是當某個條件成立時用 break 語句退出循環(huán),不再語句退出循環(huán),不再繼續(xù)執(zhí)行其余的語句,也繼續(xù)執(zhí)行其余的語句,也不再繼續(xù)執(zhí)行其余循環(huán)。不再繼續(xù)執(zhí)行其余循環(huán)。表達式表達式1 1語句語句1 1語句1語句語句2 2表達式表達式2 2breakTFF continue ;一般形式:一般形式:功能:提前結束本次循環(huán),功能:提前結束本次循環(huán),進入下一循環(huán)周期。進入下一循環(huán)周期。 解釋:一旦執(zhí)行了解釋:一旦執(zhí)行了continue 語句,程序就跳過循環(huán)語句,程序就跳過循環(huán)體位于該語句后的所有體位于該語句后的
24、所有語句,提前結束本次循語句,提前結束本次循環(huán)周期,開始下一個循環(huán)周期,開始下一個循環(huán)周期。環(huán)周期。表達式表達式1 1語句語句1 1語句1語句語句2 2表達式表達式2 2continueFTFmain( )int i,sum=0;for(i=1;i10;i+)if(i=5) break;sum+=i;printf(%dn,sum);main( )int i,sum=0;for(i=1;i10;i+)if(i=5) continue;sum+=i;printf(%dn,sum);break語句的使用:語句的使用:如:如: for(r=1; r100) break; /* area大于大于100時
25、跳時跳出循環(huán)出循環(huán)*/ printf(“%f”, area ); continue語句的使用:語句的使用:如:將如:將100200之間的不能被整除的數(shù)輸出之間的不能被整除的數(shù)輸出main( ) int n; for( n= 100; n= 200; n+) if( n%3= = 0) continue; printf(“%d”, n); 編寫程序?qū)崿F(xiàn)如下功能:編寫程序?qū)崿F(xiàn)如下功能:1 1 求求1+2+3+101+2+3+10,如果遇到能被,如果遇到能被3 3整整除的數(shù)則提前結束求和。除的數(shù)則提前結束求和。2 2 求求1+2+3+101+2+3+10,如果遇到能被,如果遇到能被3 3整整除的數(shù)則
26、跳過該數(shù)繼續(xù)求和。除的數(shù)則跳過該數(shù)繼續(xù)求和。 goto 語句為語句為無條件轉(zhuǎn)向語句無條件轉(zhuǎn)向語句,其作用其作用使程序的執(zhí)行無條件地轉(zhuǎn)移使程序的執(zhí)行無條件地轉(zhuǎn)移到程序的某指定處到程序的某指定處繼續(xù)執(zhí)行繼續(xù)執(zhí)行。“指定處指定處”是是以標號為前綴的語句處。以標號為前綴的語句處。一般形式:一般形式: goto 語句標號語句標號; 語句標號語句標號(標簽):標簽): 是放置于語句之前的標識符,是放置于語句之前的標識符,用于給語句命名。用于給語句命名。如:如: goto label_1; goto 123; (數(shù)字不可以數(shù)字不可以)for(i=0;i10;i+) for(j=0;j20;j+) for(k
27、=0;k8;k+) if(aijk=t) goto L1; L1: printf(“found!”);goto 語句特別用于從多重嵌套語句特別用于從多重嵌套的循環(huán)體中一步跳出!的循環(huán)體中一步跳出!#includeint main( ) int a; goto Init; Forward: a = a + 1; Print: printf(“%d”,a); goto Down;Init: a = 1; goto Print;Down: if(a100) goto Forward; 讀此段程序,讀此段程序, 感覺如何?感覺如何?說明說明: C語言允許在任何語句前加語句標號,作為語言允許在任何語句前
28、加語句標號,作為goto語語句的跳轉(zhuǎn)目標。給語句加標號的形式:句的跳轉(zhuǎn)目標。給語句加標號的形式: 語句標號:語句語句標號:語句 goto語句是一種非結構化語句,結構化程序設語句是一種非結構化語句,結構化程序設計方法不提倡使用計方法不提倡使用goto語句。因為濫用語句。因為濫用goto語句語句將使程序流程無規(guī)律,可讀性差。但也不是絕對禁將使程序流程無規(guī)律,可讀性差。但也不是絕對禁止使用,在能夠大大提高程序效率時,止使用,在能夠大大提高程序效率時,goto語句語句將使程序簡化高效。將使程序簡化高效。ufor嵌套嵌套for循環(huán)循環(huán)for( ; ; ) for( ; ; ) ufor嵌套嵌套while
29、循環(huán)循環(huán)for( ; ; ) while( ) ufor嵌套嵌套do_while 循環(huán)循環(huán)for( ; ; ) do while( ); while嵌套自身嵌套自身while( ) while( ) while嵌套嵌套do_whilewhile( ) do while( ); while 嵌套嵌套 forwhile( ) for( ; ; ) udo_while嵌套嵌套for循環(huán)循環(huán)do for( ; ; ) while( ); u do_while嵌套嵌套while循環(huán)循環(huán)do while( ) while( ); udo_while嵌套自身嵌套自身do do while( ) while( ); 例:打印例:打印8 8行行7 7列的星號矩形。用二重循環(huán)實現(xiàn)。列的星號矩形。用二重循環(huán)實現(xiàn)。 #include main( ) int i , k; for( i=0; i8; i+ ) for( k=0; k7; k+ ) printf(*); printf(n);程序程序rectangle.c關于循環(huán)的小結:關于循環(huán)的小結:u while和和for循環(huán)是先判斷后執(zhí)行;循環(huán)是先判
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版電廠煤炭采購合同與環(huán)保型付款策略3篇
- 2025年碳晶片技術培訓及咨詢合同3篇
- 開發(fā)商繼續(xù)履行合同范本(2篇)
- 工廠員工勞動合同(2篇)
- 二零二五版貨物代理合同范本3篇
- 二零二五年度棉花價格指數(shù)編制與應用合同4篇
- 2025年度個人購房借款合同物業(yè)管理服務協(xié)議3篇
- 二零二五年度中小企業(yè)應收賬款質(zhì)押貸款合同范本4篇
- 2025年航空航天產(chǎn)業(yè)投資入股分紅合同3篇
- 2025年度租賃車輛智能監(jiān)控服務合同遠程管理4篇
- 加強教師隊伍建設教師領域?qū)W習二十屆三中全會精神專題課
- 2024-2025學年人教版數(shù)學七年級上冊期末復習卷(含答案)
- 2025年慢性阻塞性肺疾病全球創(chuàng)議GOLD指南修訂解讀課件
- 2024年上海市中考數(shù)學真題試卷及答案解析
- 2024年全國卷1高考理綜試題及答案
- (完整版)金融市場基礎知識知識點歸納-圖文
- 五年級數(shù)學(小數(shù)乘除法)計算題專項練習及答案
- 小學數(shù)學知識結構化教學
- 2022年睪丸腫瘤診斷治療指南
- 被執(zhí)行人給法院執(zhí)行局寫申請范本
- 飯店管理基礎知識(第三版)中職PPT完整全套教學課件
評論
0/150
提交評論