《程序控制語句》PPT課件.ppt
《《程序控制語句》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《程序控制語句》PPT課件.ppt(48頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第三章 程序控制語句,目錄,3.1 c語句概述 3.2 格式輸入輸出 3.3 字符數(shù)據(jù)的輸入輸出 3.4 順序結(jié)構(gòu)程序設(shè)計舉例 3.5 選擇結(jié)構(gòu)程序設(shè)計 3.6 循環(huán)控制結(jié)構(gòu)程序設(shè)計,3.1 C語句概述,1. 控制語句( 9種) : 完成一定的控制功能 if ( ) else 條件語句( 雙分支選擇語句) switch 多分支選擇語句 for ( ) while ( ) 循環(huán)語句 do while ( ) continue 結(jié)束本次循環(huán)語句 break 中止語句 goto 轉(zhuǎn)向語句 return 從函數(shù)返回語句,2. 函數(shù)調(diào)用語句 : 由一個函數(shù)調(diào)用加一個分號構(gòu)成 如: printf(“ver
2、y good!”);,3. 表達(dá)式語句 : 由表達(dá)式加分號構(gòu)成 如: x=12 ; ( 賦值表達(dá)式語句 ),3. 空語句 : 由一個分號構(gòu)成 , 它什么也不做 ;,復(fù)合語句 : 用 括起來的語句序列 如 int temp ; temp = x ; x = y ; y = temp ; ,注意 : 1. 復(fù)合語句是一個整體, 相當(dāng)于一條語句 2. 一個復(fù)合語句中可以包含其他的復(fù)合語句 3. 在復(fù)合語句的花括號后不要再加分號 3. 復(fù)合語句中可定義變量 , 但此變量只在 該復(fù)合語句內(nèi)有效,3.2 格式輸入輸出函數(shù),一、 printf函數(shù) 格式: printf ( 格式控制, 輸出表列 ) ; 如:
3、 printf(“a=%dn” , a) ;,1. 格式控制: 用“ ” 括起來的字符串 , 包括如下兩個部分 (1) 普通字符( 包括轉(zhuǎn)義字符) : 需要原樣輸出的字符 (2) 格式說明: 由%和格式字符組成 其作用是將輸出數(shù)據(jù)按指定的格式輸出,C語言沒有提供專門的輸入/輸出語句,其輸入輸出操作是 由函數(shù)實(shí)現(xiàn)的。C語言提供的函數(shù)以庫的形式存在,這些庫 函數(shù)定義在頭文件stdio.h中。因此在程序中如果用到輸入輸 出函數(shù),需在程序的頭部包含該頭文件。,#include #include “stdio.h”,% 格式字符 l m.n 0 - 格式字符 : 指定輸出項(xiàng)的數(shù)據(jù)類型和輸出格式 c d
4、f s 長度修正符 : l 對長整型和double型 域?qū)捈熬让枋龇?m.n ( m控制域?qū)? n 控制小數(shù)位數(shù) ) 數(shù)0用以在指定數(shù)字前的空位是否用0填補(bǔ)(對整型,實(shí)型可用) 負(fù)號用以指定輸出項(xiàng)是否為左對齊方式,2. 輸出列表 : 輸出項(xiàng)可以是常量, 變量, 表達(dá)式,例: int x=8, y=-2;float a=3.14; printf(“%dn”, 25); printf(“%03dn”, x); printf(“%3.6fn”, a); printf(“%2.3sn”, “C Language”); printf(“x*y=%dn”, x*y); printf(“|y|=%dn”,
5、 fabs(y) );,25 008 3.140000 C L x*y=-16 |y|=2,二、 scanf函數(shù) 格式: scanf ( 格式控制 , 變量地址表列 ) ; 1. 地址參數(shù) : 變量的地址可通過地址運(yùn)算符“ b=O; putchar(a); putchar(b); putchar(Y); ,輸出: BOY,注意: putchar函數(shù)只有一個參數(shù),二、 字符輸入函數(shù)( getchar函數(shù)) 格式 : getchar( ) ( 注意它是無參函數(shù) ) 功能 : 從鍵盤輸入一個字符,例:#include void main( ) char ch; ch=getchar( ); getc
6、har( ); putchar(ch); putchar(n); putchar(getchar( ) ; ,假設(shè)輸入: ABCD,輸出: A C,注意:一般連續(xù)輸入可顯示字符, 若中間有空格,回車等字符, 在輸出時是不可見的,若輸入: A BC,若輸入: AB,輸出: A B,輸出: A,3.4 順序結(jié)構(gòu)程序設(shè)計舉例,#include void main( ) float a,b,c,s,area; scanf(“%f%f%f”, ,3.5 選擇結(jié)構(gòu)程序設(shè)計,1.關(guān)系運(yùn)算符和關(guān)系表達(dá)式 2.邏輯運(yùn)算符和邏輯表達(dá)式 3.if語句 3.switch語句 5.程序舉例,1.關(guān)系運(yùn)算符和關(guān)系表達(dá)式,
7、注意 : (1) 字符數(shù)據(jù)按其ASCII碼值進(jìn)行比較 (2) 應(yīng)避免2個實(shí)數(shù)作 = = 或 != 的比較,一、關(guān)系運(yùn)算符 = = = != 1. 優(yōu)先級 : 低于純算術(shù)類, 高于賦值類 2. 結(jié)合性 : 左結(jié)合性,二、關(guān)系表達(dá)式: 用關(guān)系運(yùn)算符連接起來的式子 關(guān)系表達(dá)式的值 : 只有2個, 真以 1 表示 , 假以 0 表示,注意: (3) 表達(dá)式 5278 是允許的 , 它相當(dāng)于 (52)7)8 (4) 可以將關(guān)系表達(dá)式看成是一種整型表達(dá)式,2.邏輯運(yùn)算符和邏輯表達(dá)式,一、 邏輯運(yùn)算符 ! 進(jìn)行判斷時, 非零值代表“真”, 零值代表“假”,例: 表示 x -1,1區(qū)間 應(yīng)寫為: x=-1 x
8、 = y = z = 0 ; +x | +y ,(+x) | ( (+y) scanf(“%d%d%d”, ,#include #include void main( ) int x, y; scanf(“%d”, ,#include #include void main( ) int x, y; scanf(“%d”, ,Y=,二、 if 語句的嵌套 : 在if 語句中又包括一個或多個if 語句,規(guī)定: 在if 嵌套結(jié)構(gòu)中, else是與其前面最近的尚未配對的if 配對,1. if (表達(dá)式1) if (表達(dá)式2) 語句,4. if (表達(dá)式1) if (表達(dá)式2) 語句1 else 語句2
9、,2. if (表達(dá)式1) 語句1 else if (表達(dá)式2) 語句2,3. if (表達(dá)式件1) 語句1 else if (表達(dá)式2) 語句2 else 語句3,對第4種形式可以有兩種理解方式: (1) if (表達(dá)式1) if (表達(dá)式2) 語句1 else 語句2 ,(2) if (表達(dá)式1) if (表達(dá)式2) 語句1 else 語句2,方法1 if (x0) y=-1; else if (x=0) y=0; else y=1;,方法2 if (x=0) if (x0) y=1; else y=0; else y=-1;,方法3 y=-1; if(x!=0) if(x0) y=1;
10、else y=0;,修改方法3 y=-1; if(x!=0) if(x0) y=1; else y=0;,三、 條件運(yùn)算,例 max=ab? a : b+1 ab? a : cd? c : d,注意: (1) 表達(dá)式1, 表達(dá)式2和表達(dá)式3 的數(shù)據(jù)類型可以互不相同 (2) 條件表達(dá)式的值的數(shù)據(jù)類型與表達(dá)式2, 表達(dá)式 3中數(shù) 據(jù)類型較高的那個保持一致 如 75? 10 : 1.4 條件表達(dá)式的值為10.0,ab? a : (cd? c : d ),1. 條件運(yùn)算符 ? : 優(yōu)先級僅高于賦值類, 是右結(jié)合性,執(zhí)行過程: 先計算表達(dá)式1 , 若其值為非零值(真), 則計算表達(dá)式2 的值, 該條件表
11、達(dá)式的值即為表達(dá)式2 的值; 若表達(dá)式1的值為零(假), 則計算表達(dá)式3 的值, 該條件表達(dá)式的值即為表達(dá)式3 的值,2. 條件表達(dá)式的一般形式 : 表達(dá)式1? 表達(dá)式2 : 表達(dá)式3,max=(ab? a : b+1),用條件表達(dá)式實(shí)現(xiàn) #include void main( ) int max; max=xy? x : y ; max=zmax? z : max; printf(“max=%d”,max); ,當(dāng)if中的語句為簡單賦值語句時,我們可以用條件表達(dá)式 來取代if 語句,例 求3個數(shù)中的最大數(shù) #include void main( ) int max; if (xy) max=
12、x; else max=y; if (zmax) max=z; printf(“max=%d”,max); ,3.switch語句,一、switch語句的格式 switch ( 表達(dá)式 ) case 常量表達(dá)式1 : 語句1 case 常量表達(dá)式2 : 語句2 : : : case 常量表達(dá)式n : 語句n default : 語句n+1 ,注意: 1. 表達(dá)式一般多為整型或字符型表達(dá)式 2. case后常量表達(dá)式的值必須互不相同 3. case和default的出現(xiàn)次序不影響結(jié)果 3. 語句1至語句n+1為復(fù)合語句時可省略 多個case可以共用一組執(zhí)行語句 Switch語句可以嵌套,swit
13、ch語句的執(zhí)行過程 : 計算switch后表達(dá)式的值 如果表達(dá)式的值與某個case常量表達(dá)式的值相等時, 就執(zhí)行此case后的語句, 執(zhí)行完后將繼續(xù)執(zhí)行下一個case后的語句, 如果表達(dá)式的值與所有case常量表達(dá)式的值都不同, 就執(zhí)行default后的語句,例 void main ( ) int x, y ; printf(“input a number:n”); scanf(“%d” , ,如果輸入x為 2 則輸出: 20 30 0,如果輸入x為 6 則輸出: 0,注意 : 在執(zhí)行一個case 分支后, 應(yīng)用break語句結(jié)束switch語句,void main ( ) int x, y
14、; printf(“input a number:n”); scanf(“%d” , ,如果輸入x為 2 則輸出: 20,3.6 循環(huán)控制,1.概述 2. while語句 3. do-while語句 3. for語句 5. 循環(huán)的嵌套 6. break語句和continue語句,1.概述,在實(shí)際問題中, 我們常常遇到需要重復(fù)處理的工作 例如: 求1100的和 , 或求一個班英語成績的平均分,一般來說循環(huán)控制方法分兩種: (1) 條件循環(huán) ( while循環(huán) 和 do while 循環(huán) ) 條件滿足時執(zhí)行循環(huán), 條件不滿足時結(jié)束循環(huán),(2) 計數(shù)循環(huán) ( for 循環(huán) ) 先確定循環(huán)次數(shù), 然后
15、執(zhí)行循環(huán), 完成循環(huán)次數(shù)后結(jié)束,注: C語言中的for循環(huán)非常靈活, 功能強(qiáng)大, 也可以實(shí)現(xiàn) 循環(huán)次數(shù)不確定的情況, 完全可以代替while循環(huán),2.while語句,2. 執(zhí)行過程 : 先計算表達(dá)式的值, 值為真(非零)時執(zhí)行循環(huán)體, 值為假時結(jié)束循環(huán),1. 格式 : while (表達(dá)式) 循環(huán)體語句,3. 注意 : (1) 表達(dá)式必須用( ) 括起來 (2) 循環(huán)體語句為復(fù)合語句時, 必須用 把它們括起來 (3) 循環(huán)體語句中必須有使循環(huán)趨向結(jié)束的語句,例: 求1100 的和,#include void main ( ) int i , sum; sum=0; i=1; while (i=
16、100) sum=sum+i; i+; printf(“sum=%dn”, sum); ,分析: 輸入, 輸出分別是什么? 需要幾個變量? 程序大體可分為幾個步驟?,例: 求1n 的和, n為任意正整數(shù),#include void main ( ) int i , sum , n ; sum=0; i=1; printf(“Input value n:n”); scanf(“%d”, ,例: 求某個班英語成績的平均分, 該班學(xué)生人數(shù)和每個 學(xué)生的成績由鍵盤輸入,#include void main ( ) int i , n ; float s , sum , ave ; sum=0; i=1
17、; printf(“Input the student number: ”); scanf(“%d”, ,例: 編程求 的近似值, 公式 /4 1-1/3+1/5-1/7+1/9-,分析: 題目仍可以看成是累加求和 不同的是, 相加的每一項(xiàng)正負(fù)相間, 公式是無窮的, 所以我們規(guī)定當(dāng) 相加項(xiàng)的絕對值小于0.000001 (即106 )時停止計算,#include #include void main( ) int s; float n , t , pi ; s=1 ; n=1; t=1; pi=0; while ( fabs(t)1e-6 ) pi=pi+t ; n=n+2; s=-s; t=s
18、/n; pi=4*pi ; printf(“ pi=%10.6fn”, pi ); ,1,1,-1,3,-1/3,1,0,1,0.67,1/5,5,1,3.do-while語句,1. 格式 : do 循環(huán)體語句 while (表達(dá)式) ;,2. 執(zhí)行過程 : 先執(zhí)行循環(huán)體, 然后計算表達(dá)式的值, 若值為真則重復(fù)執(zhí)行循環(huán)體, 若值為假則結(jié)束循環(huán),3. 注意 : (1) 表達(dá)式必須用( ) 括起來 (2) 循環(huán)體語句為多條語句時, 必須用 把它們括起來 (3) 循環(huán)體語句中必須有使循環(huán)趨向結(jié)束的語句,例: 求1100 的和,#include void main ( ) int i , sum; s
19、um=0; i=1; do sum=sum+i; i+; while (i=100) ; printf(“sum=%dn”, sum); ,3. while循環(huán)和do-while循環(huán)的比較,while do-while (1)先判斷條件再執(zhí)行循環(huán)體 先執(zhí)行循環(huán)體再判斷條件 (2)循環(huán)體可能一次也不執(zhí)行 至少執(zhí)行一次循環(huán)體,#include void mian( ) int sum=0 , i ; scanf(“%d”, ,#include void mian( ) int sum=0 , i ; scanf(“%d”, ,3.for語句,1. 格式 : for (表達(dá)式1 ; 表達(dá)式2 ; 表
20、達(dá)式3) 循環(huán)體語句,2. 執(zhí)行過程: (1) 計算表達(dá)式1 (2) 計算表達(dá)式2, 若值為真則執(zhí)行循環(huán)體, 再執(zhí)行第(3)步; 若值為假則結(jié)束循環(huán) (3) 計算表達(dá)式3, 再重復(fù)執(zhí)行第(2)步,sum=0; i=1; while ( i=100 ) sum=sum+i ; i+ ; ,sum=0; for( i=1 ; i=100 ; i+) sum=sum+i ;,例 : 將1100求和的while循環(huán)轉(zhuǎn)換為用for循環(huán)實(shí)現(xiàn),3. 說明 (1) 可以省略表達(dá)式1 sum = 0 ; for ( i=1 ; i=100 ; i+ ) sum = sum+i ;,i=1;,(2) 可以省略表達(dá)
21、式3 sum = 0 ; for ( i=1 ; i=100 ; i+ ) sum = sum+i ;,i+ ;,(3) 同時省略表達(dá)式1和表達(dá)式3 sum = 0 ; i=1 ; for ( ; i=100 ; ) sum = sum+i ; i+ ; ,(4) 表達(dá)式1 , 表達(dá)式3還可以是逗號表達(dá)式 for ( sum = 0 , i = 1 ; i=100 ; sum = sum+i , i+ ) ;,(5) 表達(dá)式1 , 表達(dá)式3 可以是與循環(huán)控制無關(guān)的其他表達(dá)式 i=1 ; for( sum=0 ; i=100 ; sum=sum+i ) i+ ;,空語句,(6) 表達(dá)式2一般不會
22、省略, 若省略表達(dá)式2循環(huán)將不能停止,sum = 0 ; for ( i=1 ; ; i+ ) sum = sum+i ;,sum = 0 ; i=1; for ( ; ; ) sum = sum+i ; i+ ; ,i=1; while(1) sum=sum+i ; i+; ,例: 求某個班英語成績的平均分,#include void main ( ) int i , n ; float s , sum , ave ; sum=0; i=1; scanf(“%d”, ,#include void main ( ) int i , n ; float s , sum , ave ; sum=0
23、; scanf(“%d”, ,例: 求Fibonacci數(shù)列的前20 個數(shù) Fibonacci數(shù)列: 1 , 1 , 2 , 3 , 5 , 8 , 13 ,#include void main( ) int i , f1 , f2 , f3; f1=1; f2=1; printf(“%8d%8d”, f1 , f2); for ( i=3 ; i=20 ; i+ ) f3=f1+f2; f1=f2; f2=f3; printf(“%8d”, f3); if ( i%4=0) putchar(n); ,分析數(shù)列的規(guī)律: 從第3個數(shù)開始, 每個數(shù)是 其前兩個數(shù)之和,f3,1,1,2,2,3,1,
24、2,3,5,+,5.循環(huán)的嵌套,1. 循環(huán)的嵌套: 一個循環(huán)體內(nèi)包含另一個完整的循環(huán)結(jié)構(gòu),2. 按循環(huán)嵌套的層數(shù)分別稱為二重循環(huán), 三重循環(huán),3. C語言中while, dowhile, for循環(huán)可以互相嵌套,#include void main( ) printf(“*n”); printf(“*n”); printf(“*n”); printf(“*n”); ,#include void main( ) int i=1; while(i=4) printf(“*n”); i+; ,#include void main( ) int i , j ; i=1; while (i=4) j=1
25、; while( j=3 ) putchar(*); j+; putchar(n); i+; ,#include void main( ) int i , j ; i=1; while (i=4) for (j=1; j=3;j+) putchar(*); putchar(n); i+; ,注意: 內(nèi)外層循環(huán)的控制變量不能重名, 但并列循環(huán)的控制變量無此限制,#include void main( ) int i , j ; for( i=1; i=4; i+) for (j=1; j=3; j+) putchar(*); putchar(n); ,特點(diǎn): 第n行有n個星號,#include
26、void main( ) int i , j ; for( i=1; i=4; i+) for (j=1; j=i; j+) putchar(*); putchar(n); ,例: 輸出如圖所示的菱形,* * * * * * *,分析: 將圖形分為上下 兩個部分分別輸出 上半部分(前4行) 每行的星號個數(shù)是1,3,5,7, 每行的空格個數(shù)是3,2,1,0,#include void main( ) int i, j, k ; for ( i=1; i=1 ; i-) for ( j=1; j=4-i ; j+) putchar( ); for ( k=1; k=2*i-1 ; k+) putchar(*); putchar(n); ,6.break語句和continue語句,1. break語句 : 中止循環(huán)或switch結(jié)構(gòu) 2. continue語句 : 結(jié)束本次循環(huán), 然后再根據(jù)是否滿足 條件來決定是否執(zhí)行下次循環(huán),for(r =1 ;r 100 ,for(r =1 ;r 100 ,
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- (精品)1.7有理數(shù)的混合運(yùn)算 (3)
- 管理的基本原理課件
- 第六講___朋輩心理輔導(dǎo)基本技能__理性情緒療法
- 骨科康復(fù)(全科)課件
- 年終總結(jié)及年工作計劃
- 第九章裝飾工程預(yù)算定額項(xiàng)目換算
- 魅力之城項(xiàng)目匯報方案
- 美心內(nèi)門品牌建設(shè)規(guī)劃教材
- 競爭法概述
- 競價產(chǎn)品-網(wǎng)絡(luò)營銷--搜索競價產(chǎn)品介紹(ppt 37頁)
- (精品)1.5二次函數(shù)的應(yīng)用 (2)
- (精品)1.4美妙的守恒定律
- 4 放射性的應(yīng)用與防護(hù) (6)
- 第四課城鄉(xiāng)直通車 (2)
- (精品)《學(xué)會看病》(精品)