版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第3章 基本控制結(jié)構(gòu),ch3 基本控制結(jié)構(gòu),3.1 C語(yǔ)句的分類 3.2 順序結(jié)構(gòu)程序設(shè)計(jì) 3.3 選擇結(jié)構(gòu)程序設(shè)計(jì) 3.4 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 3.5 使用庫(kù)和函數(shù) 3.6 典型例題,返回,1. 控制語(yǔ)句 二個(gè)分支語(yǔ)句(if-else、switch-case) 三個(gè)循環(huán)語(yǔ)句(for、while、do-while) 四個(gè)轉(zhuǎn)移語(yǔ)句(continue、break、goto、return) 2. 函數(shù)調(diào)用語(yǔ)句 如:printf(“Hello, world!”); 3. 表達(dá)式語(yǔ)句 x+y; i+; a=2; a=3*5,40;,3.1 C語(yǔ)句的分類,4. 空語(yǔ)句 ; 5. 復(fù)合語(yǔ)句 語(yǔ)句序列 ,返回,
2、3.1 C語(yǔ)句的分類,一、賦值語(yǔ)句 語(yǔ)法:變量=表達(dá)式; 語(yǔ)義:計(jì)算“=”右邊表達(dá)式的值,將之賦給“=”左邊的變量。 如: b=3; if(a=b)0) t=a; 注意:賦值語(yǔ)句與賦值表達(dá)式的區(qū)別 二、順序程序舉例,3.2 順序結(jié)構(gòu)程序設(shè)計(jì),例3-1:輸入一大寫字母,改為小寫后輸出。 #include main() char c1,c2; scanf(%c, ,3.2 順序結(jié)構(gòu)程序設(shè)計(jì),測(cè)試數(shù)據(jù)及運(yùn)行結(jié)果輸入:A輸出:A,65 a,97,3.2 順序結(jié)構(gòu)程序設(shè)計(jì),例:輸入三角形的三邊長(zhǎng),求三角形面積。 分析:設(shè)三角形的三邊分別為a,b,c 則:面積area2=s(s-a)(s-b)(s-c)
3、其中s=(a+b+c)/2,3.2 順序結(jié)構(gòu)程序設(shè)計(jì),源程序:#include main()float a,b,c,s,area; scanf(“%f,%f,%f”, ,發(fā)散:三角形面積的計(jì)算,返回,3.3 選擇結(jié)構(gòu)程序設(shè)計(jì),3.3.1 關(guān)系運(yùn)算符與關(guān)系表達(dá)式,一、關(guān)系運(yùn)算符: 、! 關(guān)系表達(dá)式: i=(c=d)、x+ya-b 求值結(jié)果:int型,0或1。1為真,0為假 如:設(shè)a=3,b=2,c=1 則:d= a b 的值為1 f=abc的值為0;,3.3.1 關(guān)系運(yùn)算符與關(guān)系表達(dá)式,6種關(guān)系運(yùn)算符的優(yōu)先級(jí)別不同:,程序設(shè)計(jì)中最好不要對(duì)兩個(gè)浮點(diǎn)數(shù)直接進(jìn)行相等性比較;方法之一如: fabs(a-
4、b)1E-6 關(guān)系運(yùn)算符的結(jié)合性是左結(jié)合,一、邏輯運(yùn)算符及其優(yōu)先次序 一元邏輯運(yùn)算符:!,右結(jié)合 二元邏輯運(yùn)算符: 則執(zhí)行(m=ab) 語(yǔ)義:判斷表達(dá)式的值,為真時(shí)執(zhí)行語(yǔ)句,否則不執(zhí)行;,如:#include main( ) char ch; ch=getchar(); if(ch=a ,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),語(yǔ)法2:if (表達(dá)式) 語(yǔ)句1; else 語(yǔ)句2; 語(yǔ)義:判斷表達(dá)式的值,為真時(shí)執(zhí)行語(yǔ)句1,否則執(zhí)行語(yǔ)句2;,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),如:#include main() int a,b; scanf (“%d%d”, ,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),二、if語(yǔ)句嵌套的2種形式
5、 1. if語(yǔ)句嵌套在else子句中 if (表達(dá)式1) 語(yǔ)句1; else if (表達(dá)式2) 語(yǔ)句2; else if (表達(dá)式3) 語(yǔ)句3; else 語(yǔ)句n+1;,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),2. if語(yǔ)句嵌套在if子句中 if (表達(dá)式1) if (表達(dá)式2) if (表達(dá)式3) 語(yǔ)句1; else 語(yǔ)句2; else 語(yǔ)句3; else 語(yǔ)句n+1;,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),例3-6:從鍵盤上輸入字符,判別其分類:控制符、數(shù)字、大寫字母、小寫字母、其他字符。,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),#include “stdio.h” main( ) char c; c=getchar()
6、; if (c=0 ,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),說(shuō)明 (1) if 關(guān)鍵字后的表達(dá)式可以是一切類型; 如:if (a=5) 語(yǔ)句; if (b) 語(yǔ)句; (2) if 語(yǔ)句中,條件表達(dá)式必須用括號(hào)括起來(lái);,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),(3) 滿足條件需執(zhí)行一組語(yǔ)句時(shí),該組語(yǔ)句 必須用 括起來(lái);如: if (a+bc,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),(4) if 語(yǔ)句嵌套時(shí),else 與if的匹配問(wèn)題;例3-7:有一函數(shù):,請(qǐng)編程,輸入x的值,輸出相應(yīng)的y值。,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),main( ) float x,y; scanf(“%f”, ,if (x=0)
7、if (x0) y=1; else y=0; else y=-1;,(5) 可利用條件表達(dá)來(lái)簡(jiǎn)化程序設(shè)計(jì)。 如對(duì)于: if (exp!=0) 可用 if (exp)來(lái)代替;,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),if(!exp)語(yǔ)句;等價(jià)于: if(exp=0) 語(yǔ)句;,三、switch語(yǔ)句,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),語(yǔ)法1:switch(表達(dá)式) case C1:S1; case C2:S2; case Cn:Sn; default: Sn+1; 其中:表達(dá)式必須放在括號(hào)中; C1至Cn 是情況常量; default可缺省。,語(yǔ)義:,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),例:switch(grade) cas
8、e A: printf(“85100n”); case B: printf(“7084n”); case C: printf(“6069n”); case D: printf(“60n”); default: printf (“errorn”); ,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),返回,語(yǔ)法2:switch(表達(dá)式) case C1:S1;break; case C2:S2;break; case Cn:Sn;break; default: Sn+1;break; ,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),語(yǔ)義:,例:switch(grade) case A: printf(“85
9、100n”); break; case B: printf(“7084n”); break; case C: printf(“6069n”); break; case D: printf(“60n”); break; default: printf (“errorn”); break; ,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),說(shuō)明: (1)default可省略; (2)C1Cn必須互不相同; (3)語(yǔ)法2中,C1Cn無(wú)次序影響; (4)允許多個(gè)case共用一個(gè)執(zhí)行語(yǔ)句;如:,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),switch(ch) case 0: case 1: case 2: case 3: case 4:
10、case 5: case 6: case 7: case 8: case 9: digit+; break; case : case t: case n: white+; break; default: character+; ,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),(5) break只能跳出一層,內(nèi)外層情況常量可相同;如: #include main() int x=1, y=0; switch(x) case 1: switch(y) case 0: printf (*1*n); break; case 1: printf (*2*n); break; case 2: printf (*3*n);
11、getch(); ,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),四、三目條件運(yùn)算符 1. 條件運(yùn)算符 ?: 2. 格式 e1?e2:e3 3. 語(yǔ)義:判e1的值,為1時(shí)計(jì)算e2,否則計(jì) 算e3; 如:max=(ab)?a:b 等價(jià)于 if (ab) max=a; else max=b;,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),4. 說(shuō)明: 條件運(yùn)算符的優(yōu)先級(jí)僅高于“,”與“=”; 只有當(dāng)if語(yǔ)句的真假均只執(zhí)行一個(gè)賦值語(yǔ)句且是給同一變量賦值時(shí),才能用條件表達(dá)式取代; 如:if (ab) max=a; else max=b; 條件表達(dá)式可使程序簡(jiǎn)潔; #,3.3.3 選擇結(jié)構(gòu)的實(shí)現(xiàn),返回,問(wèn)題1:假如全班41人,欲從鍵盤上輸
12、入每人的數(shù)學(xué)成績(jī),然后計(jì)算出平均成績(jī); 問(wèn)題2: 編程計(jì)算n!。 重復(fù)執(zhí)行一組語(yǔ)句是程序設(shè)計(jì)要求的基本功能之一。在C語(yǔ)言中可以用以下語(yǔ)句來(lái)實(shí)現(xiàn)循環(huán): (1)if 和 goto (2)while (3)do-while (4)for,3.4 循環(huán)結(jié)構(gòu)程序設(shè)計(jì),語(yǔ)法:while (exp) 循環(huán)體語(yǔ)句; 語(yǔ)義:當(dāng)exp為真時(shí),執(zhí)行循環(huán)體;為假時(shí), 執(zhí)行循環(huán)語(yǔ)句的后續(xù)語(yǔ)句; 如:用while語(yǔ)句構(gòu)成循環(huán),求: sum=1+2+100,3.4.1 while語(yǔ)句,3.4.1 while語(yǔ)句,3.4.1 while語(yǔ)句,源程序: main() int i=1, sum=0; while (i=100)
13、sum+=i; i+; printf(“%d”,sum); ,3.4.1 while語(yǔ)句,說(shuō)明: 循環(huán)體可以用復(fù)合語(yǔ)句; 循環(huán)控制變量在while前應(yīng)賦初值,以確保循環(huán)的正常開始;,3.4.1 while語(yǔ)句, 循環(huán)體內(nèi)應(yīng)改變循環(huán)控制變量的值,以確保循環(huán)正常結(jié)束; 如:i=1; while (i=100) sum=sum+1; (死循環(huán)),3.4.1 while語(yǔ)句, while 的特點(diǎn): 先判斷后執(zhí)行 循環(huán)體最少執(zhí)行次數(shù)為0; 如: i=3; while (i3) printf(“i=%dn”, i);,語(yǔ)法:do 循環(huán)體語(yǔ)句; while (exp); 語(yǔ)義:當(dāng)exp為真時(shí),執(zhí)行循環(huán)體;為
14、假時(shí), 執(zhí)行循環(huán)語(yǔ)句的后續(xù)語(yǔ)句; 如: 用do-while語(yǔ)句構(gòu)成循環(huán),求 sum=1+2+100,3.4.2 do-while語(yǔ)句,3.4.2 do-while語(yǔ)句,3.4.2 do-while語(yǔ)句,源程序: main() int i=1,sum=0; do sum+=i; i+; while (i=100); printf(“%d”,sum); ,3.4.2 do-while語(yǔ)句,說(shuō)明: (1)循環(huán)體可以用復(fù)合語(yǔ)句; (2)循環(huán)控制變量在do前必須賦初值; (3)循環(huán)體內(nèi)應(yīng)改變循環(huán)控制變量的值;,(4)do-while 循環(huán)的特點(diǎn) 先執(zhí)行后判斷 循環(huán)體至少被執(zhí)行一次; 如:i=3; do
15、sum+= i; i+; while (i10) ; #,3.4.2 do-while語(yǔ)句,語(yǔ)法:for(exp1; exp2; exp3) 循環(huán)體語(yǔ)句; 語(yǔ)義: (1) 計(jì)算exp1; (2) 求exp2,為真時(shí),執(zhí)行(3),否則結(jié)束循環(huán); (3) 執(zhí)行循環(huán)體中的語(yǔ)句; (4) 執(zhí)行exp3; (5) 返回(2)。,3.4.3 for語(yǔ)句,3.4.3 for語(yǔ)句,程序: main() int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(“%d”,sum); ,3.4.3 for語(yǔ)句,說(shuō)明: (1)顯然for循環(huán)更簡(jiǎn)潔,更靈活; (2)循環(huán)體可以是復(fù)合語(yǔ)
16、句; (3)可同時(shí)對(duì)多個(gè)變量賦初值及修改。如: for(i=0, j=1; jn 循環(huán)變量改變) 循環(huán)體;,(5)for語(yǔ)句中三個(gè)表達(dá)式可省: 省exp1;如: i=1; for ( ; i5; i+) printf(“%dn”,i); 等價(jià)于 for (i=1; i5; i+) printf(“%dn”,i);,3.4.3 for語(yǔ)句,省exp3;如: for ( i=1; i5) break; ,3.4.3 for語(yǔ)句,三個(gè)表達(dá)式全省時(shí),如: for (; ; ) 語(yǔ)句; 等價(jià)于 while(1)語(yǔ)句; (5)for語(yǔ)句中的循環(huán)體可以是空語(yǔ)句;如: int n=0; while (n+ =
17、2); printf(“%d”,n); 結(jié)果為:4,3.4.3 for語(yǔ)句,三種循環(huán)可互相代替。 while、do-while和 for 循環(huán)控制變量之初值; 循環(huán)控制之條件; 循環(huán)控制變量之修正。 除goto循環(huán)外,都能用break跳出循環(huán),用continue結(jié)束本次循環(huán)。,3.4.4 三種循環(huán)語(yǔ)句的選用,三種循環(huán)可以互相嵌套 例:打印九九乘法表:,3.4.5 循環(huán)結(jié)構(gòu)的嵌套,1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 2*1=2 2*2=4 2*3=6 2*4=8 2*9=18 9*1=9 9*2=18 9*3=27 9*9=
18、81,main( ) int i, j ; for(i=1; i10;i+) for (j=1; j10; j+) printf(%d*%d=%2d ,i,j,i*j); printf(n); getch(); ,3.4.5 循環(huán)結(jié)構(gòu)的嵌套,3.4.6 break語(yǔ)句和continue語(yǔ)句,一、break語(yǔ)句 break只能用在循環(huán)語(yǔ)句、switch語(yǔ)句中 功能:強(qiáng)行退出循環(huán)或switch語(yǔ)句。 例:for (r=1; r100) break; printf(“%f”,area); ,二、continue語(yǔ)句 只能用在循環(huán)語(yǔ)句中 功能:結(jié)束本次循環(huán) 例:main( ) int n; for (
19、 n=100; n=200; n+) if (n%3= =0) continue; printf (“%d”,n); ,3.4.6 break語(yǔ)句和continue語(yǔ)句,返回,3.5.1 輸入輸出的概念 3.5.2 輸入輸出函數(shù),3.5 使用庫(kù)和函數(shù),一、字符輸入函數(shù)getchar 語(yǔ)法:getchar ( ); 語(yǔ)義:(從stdio上) 輸入一個(gè)字符; getchar是一個(gè)無(wú)參函數(shù); getchar 包含在 stdio.h中 如: #include main() putchar(getchar(); ,3.5.3 字符輸入輸出函數(shù),3.5.3 字符輸入輸出函數(shù),二、字符輸出函數(shù) putcha
20、r 語(yǔ)法:putchar (c); 語(yǔ)義:(在stdout上)輸出一個(gè)字符; 如:#include main() putchar(141); putchar(a); putchar(97);,如: #include main( ) char c; while(c=getchar( )!=#) if(c=a,3.5.3 字符輸入輸出函數(shù),一、格式輸入函數(shù) scanf 語(yǔ)法:scanf(格式控制, 地址表列); 格式控制:含三類符號(hào) 空白字符:(空格、Tab或、),輸入時(shí)不必一一對(duì)應(yīng); 普通字符:(非格式說(shuō)明符、非空白符、非%),輸入時(shí)必須一一對(duì)應(yīng); 格式轉(zhuǎn)換說(shuō)明符:由%開始后跟: 一約定的字母轉(zhuǎn)
21、換指示符; 一任選的用于指定輸入字段寬度的整數(shù)w。,3.5.4 格式輸入輸出函數(shù),3.5.4 格式輸入輸出函數(shù),地址表列:由若干個(gè)地址組成,可以是變量的地址,也可以是字符串中的首地址等。,例1: #include main() int a; float b; char str50; scanf(“%d%f%s”, ,設(shè)輸入流數(shù)據(jù)流為: 25 54.32E-1 Nanjing 處理結(jié)果為:25a 5.432000b Nanjing str,3.5.4 格式輸入輸出函數(shù),輸入項(xiàng)表的輸入對(duì)象須是地址量;如: scanf(“%d,%d,%d”,3.5.4 格式輸入輸出函數(shù),3.5.4 格式輸入輸出函數(shù),一、格式輸出函數(shù)printf 語(yǔ)法:printf (格式控制, 輸出表列); 語(yǔ)義:按格式控制將輸出表列中的數(shù)據(jù)依次 輸出至屏幕上。 格式控制 普通字符和轉(zhuǎn)義字符(原樣輸出) 格式說(shuō)明:由%和格式控制符組成 如:%d,%f,%c等;,3.5.4 格式輸入輸出函數(shù),如:printf(“a=%d, b=%d”,a,b); 若a、b的值分別為2和3, 則輸出結(jié)果為: a=2, b=3,3.5.4 格式輸入輸出函數(shù),如果要輸出單一的字符%,則需用%,例1: #include main(
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 質(zhì)量負(fù)責(zé)人制度
- 財(cái)務(wù)安全制度
- 落實(shí)管的制度
- 經(jīng)濟(jì)全球化的影響與中國(guó)開放之路課件2026屆高考政治二輪復(fù)習(xí)統(tǒng)編版選擇性必修一當(dāng)代國(guó)際政治與經(jīng)濟(jì)
- 2025高二英語(yǔ)期末模擬卷(考試版A4)(譯林版)含答案
- 2026山東事業(yè)單位統(tǒng)考濰坊諸城市招聘40人參考考試題庫(kù)附答案解析
- 2026河北邢臺(tái)高新區(qū)新智產(chǎn)業(yè)發(fā)展集團(tuán)有限公司招聘14人參考考試題庫(kù)附答案解析
- 2026廣東廣州生物醫(yī)藥與健康研究院數(shù)字生物醫(yī)學(xué)研究中心招聘科研助理1人參考考試試題附答案解析
- 2026年淄博沂源縣事業(yè)單位公開招聘綜合類崗位工作人員(13人)參考考試題庫(kù)附答案解析
- 2026浙江杭州市中醫(yī)院招聘高層次人才19人·參考考試試題附答案解析
- 中學(xué)生冬季防溺水主題安全教育宣傳活動(dòng)
- 2026年藥廠安全生產(chǎn)知識(shí)培訓(xùn)試題(達(dá)標(biāo)題)
- 2026年陜西省森林資源管理局局屬企業(yè)公開招聘工作人員備考題庫(kù)及參考答案詳解1套
- 冷庫(kù)防護(hù)制度規(guī)范
- 承包團(tuán)建燒烤合同范本
- 口腔種植牙科普
- 2025秋人教版七年級(jí)全一冊(cè)信息科技期末測(cè)試卷(三套)
- 搶工補(bǔ)償協(xié)議書
- 2026年廣東省佛山市高三語(yǔ)文聯(lián)合診斷性考試作文題及3篇范文:可以“重讀”甚至“重構(gòu)”這些過(guò)往
- 山東省青島市城陽(yáng)區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期語(yǔ)文期末試卷(含答案)
- 安全生產(chǎn)考試點(diǎn)管理制度(3篇)
評(píng)論
0/150
提交評(píng)論