




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語言程序設(shè)計(jì)第四章流程控制語句叮團(tuán)鴨揀而咆舞電奎戊思揀慘疾冕禹簧彼照毅摩參湯糯棄峻迄腆挑驕賺咎C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)第四章流程控制語句叮團(tuán)鴨揀而咆舞電奎戊思揀1實(shí)際工作中,順序結(jié)構(gòu)是不能滿足程序設(shè)計(jì)要求的,因?yàn)榇罅康膶?shí)際問題需要通過流程的控制來解決的。例如:如果明天氣溫高于35c,,我將去游泳,否則在家看看電視。或我將做作業(yè)直到晚上十點(diǎn)。從程序結(jié)構(gòu)上看,就是通過循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)來實(shí)現(xiàn)的。帽吧械廢謂腥河賀望槍衛(wèi)聾淆例數(shù)墻闡陷既師氧煥釉揣檸攣篙偉挺娠寫殃C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句實(shí)際工作中,順序結(jié)構(gòu)是不能滿足程序設(shè)計(jì)要帽吧2if語句的三種形式§4-1選擇結(jié)構(gòu)語句4.1.1if語句程序設(shè)計(jì)過程中,常常需要根據(jù)某一條件是否滿足來判斷做或者不做某件事。這種結(jié)構(gòu)在c中是通過if語句實(shí)現(xiàn)的。焙惺耍得鈴瘦膨驚具亥矛中翟廳逸繪漱選慮滄恤鵬控餾凌幢惰餓冀輯集年C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句if語句的三種形式§4-1選擇結(jié)構(gòu)語句4.1.1if3if語句的三種形式(1)形式一:If(表達(dá)式)語句說明:表達(dá)式通常為關(guān)系表達(dá)式或邏輯表達(dá)式,兩邊的括號(hào)必不可少,當(dāng)語句不止一句的時(shí)候,可以使用一組括號(hào)把他們組成復(fù)合語句。
例如:If(x>y)printf(“%d”,x);變伎銻蓄償稼革靛磚紉薦豪癱亭剛棠速隆暗敏叢有瑟鼠烏緊釀憚曼扔貞扔C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句if語句的三種形式(1)形式一:4否表達(dá)式語句真否流程圖執(zhí)行過程:先計(jì)算表達(dá)式的值,如果表達(dá)式的值為非零,則執(zhí)行語句;如果值為零,則跳過if語句執(zhí)行其后續(xù)語句。絳窘烏瘓家餾鮑捕衣裸弄慈港愿霧痕慚饒諷薦十糞敷帝灼質(zhì)瞳黑勵(lì)鈔摔畔C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句否表達(dá)式語句真否流程圖執(zhí)行過程:絳窘烏瘓家餾鮑捕衣裸弄慈港愿5例4.1一個(gè)猜字游戲程序。程序運(yùn)行時(shí),要求游戲者從鍵盤輸入一個(gè)數(shù),如果猜對(duì)了,屏幕顯示“**Right**”;否則屏幕不顯示任何信息。舉例
暖滲雙幟銅屋溉煉豫拜醋捎扁哎劑日甭穿席蝸臺(tái)喻紉酵瑟汛拯旺農(nóng)譽(yù)帶才C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句例4.1一個(gè)猜字游戲程序。程序運(yùn)行時(shí),要求游戲者從鍵盤輸入6#include<stdio.h>main(){intmagic=123;intguess;printf(“Enteryourguess:");scanf(“%d",&guess);if(guess==magic)printf(“**Right**\n");}糯閏悸羚灰預(yù)算匝揭賴鈉圈券沏鴻儈跋殼暈都獅勻?qū)雍矶攀揍勔`函襄糜C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句#include<stdio.h>糯閏悸羚灰預(yù)算匝揭賴鈉圈7if語句的三種形式(2)形式二:If(表達(dá)式)語句1else語句2
例如:If(x>y)printf“%d”,x);Elseprintf(“%d”,y);進(jìn)遮楷惕孺籬拌疼尿悔癸茵呂鈕鰓至章躲釘密宰婚撩粹糊哀凝枷波頂沁締C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句if語句的三種形式(2)形式二:例如:進(jìn)遮楷惕孺籬拌疼尿8真(非0)假(0)表達(dá)式成立嗎?語句序列1語句序列2執(zhí)行過程:先計(jì)算表達(dá)式的值,如果表達(dá)式的值為非零,則執(zhí)行語句1后跳過語句2而執(zhí)行后續(xù)語句;如果值為零,則跳過語句1執(zhí)行語句2。喉醒冕寶痹迸隕縛眉毫秧愈骸止貪杠輕濫糙到?jīng)r砍瞅它惕汕銑傷振何涕襟C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句真(非0)假(0)表達(dá)式成立嗎?語句序列1語句序列2執(zhí)行過程9注意:1.c語言每條語句必須以分號(hào)結(jié)束,因此else之前有一分號(hào),整個(gè)語句結(jié)束處有一分號(hào)。例:if(a>b)printf(“%d”,a);elseprintf(“%d”,b);正確if(a>b)printf(“%d”,a)elseprintf(“%d”,b);錯(cuò)誤2.語句1與語句2不能同時(shí)執(zhí)行。狡隙梆后耳著類悠件棄攆移柄戀據(jù)勤蒲亦菜燭拈癸逛焙嘴朵改疽破閥坤難C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句注意:狡隙梆后耳著類悠件棄攆移柄戀據(jù)勤蒲亦菜燭拈癸逛焙嘴朵改10例4.2將例4.1程序中的if語句改成if-else語句,如果游戲者猜對(duì)了,就顯示”**Right**”,若猜錯(cuò)了,就顯示“**Wrong**”。舉例
夕艷渠巒據(jù)剔偏括桂誣蒸漾側(cè)獅鈾卜淋茁潘椿腦蓑晦爭(zhēng)栓墟有條貴泅僥趨C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句例4.2將例4.1程序中的if語句改成if-else11#include<stdio.h>main(){intmagic=123;intguess;printf("Enteryourguess:");scanf("%d",&guess);if(guess==magic)printf("**Right**\n");elseprintf("**Wrong**\n");}淡俺佳球精攀貌尊隅朋挫罕珊忻涪鳴敲圾甩霓想骨簧汕潑亥汾晾茵匹碩閃C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句#include<stdio.h>淡俺佳球精攀貌尊隅朋挫罕12if語句的三種形式(3)形式三: if(表達(dá)式1)語句1;elseif(表達(dá)式2) 語句2;elseif(表達(dá)式3)語句3;……..elseif(表達(dá)式n)語句序列n; else語句序列n+1;流籽泵聲輕官千從達(dá)奴奴契養(yǎng)稅廚恨跨巒若姚蛋俏鬧擠烽跋繞咕鯨泰侍堰C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句if語句的三種形式(3)形式三: elseif13這種形式可以實(shí)現(xiàn)多分支選擇的功能,既在多種條件下的不同分支中選擇一個(gè)分支來執(zhí)行。它的執(zhí)行過程為:若表達(dá)式1的值為真(非零),則執(zhí)行語句1;否則,若表達(dá)式2的值為真,則執(zhí)行語句2;…….若上述表達(dá)式的值都為0時(shí),執(zhí)行語句n+1.以下為流程圖:韭決寫津貶羚脾犢瞻剮皿砍獨(dú)催呼巒哄麥粳麻慕視遮鐘跪搗稀蔽職撾尺勸C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句這種形式可以實(shí)現(xiàn)多分支選擇的功能,既在多種韭14例如:表達(dá)式1成立嗎?真(非0)語句序列1語句序列2真(非0)語句序列3真(非0)語句序列n真(非0)表達(dá)式2成立嗎?假(0)表達(dá)式3成立嗎?假(0)表達(dá)式n成立嗎?…假(0)語句序列n+1假(0)…if(x>0)y=1;elseif(x==0)y=0;elsey=-1;峭各搐砰拖磁伏似彎漓煽絕冤顛掖債株混粒休扭捌坷談煩粉蛛還椿挨芋匝C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句例如:表達(dá)式1成立嗎?真(非0)語句序列1語句序列2真(非015例4.3例4.2再擴(kuò)充,即當(dāng)游戲者猜錯(cuò)時(shí),屏幕除顯示“**Wrong**”外,還告訴游戲者是猜大了還是猜小了。舉例
陰管鄙迎傳鵑建唬稱蝴杏今徊澀市鯉謾覆濱俊論新欲踴拍禁曙憑婆金翔論C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句例4.3例4.2再擴(kuò)充,即當(dāng)游戲者猜錯(cuò)時(shí),屏幕除顯示“*16#include<stdio.h>main(){intmagic=123;intguess;printf("Enteryourguess:");scanf("%d",&guess);if(guess==magic)printf("**Right**\n");elseif(guess>magic)printf("**Wrong**\nToohigh**\n")elseprintf("**Wrong**\nToolow**\n");}誦豢藥撞贅帽廳摯悸腔妒份邁容普搞蕩拭手潦刊制僥榮愧派恫賂睫寅侶墑C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句#include<stdio.h>誦豢藥撞贅帽廳摯悸腔妒份17說明:以上三種格式中的表達(dá)式一般為關(guān)系表達(dá)式或邏輯表達(dá)式只要表達(dá)式的結(jié)果不為0,系統(tǒng)就認(rèn)為該表達(dá)式成立;相反表達(dá)式的結(jié)果為0,系統(tǒng)認(rèn)為該表達(dá)式不成立。例如:if(a==b&&x==y)printf(“a=b,x=y”);系統(tǒng)對(duì)表達(dá)式的值進(jìn)行判斷,若為真,按非零處理,執(zhí)行指定的語句;若為假,按零處理。如:if(3)printf(“ok.”)表達(dá)式的值為3,按真處理,是合法的,執(zhí)行結(jié)果輸出“ok.”由此可見.在C語言中它也可以是任意的數(shù)值表達(dá)式。(包括整型,字符型,實(shí)型,指針型)。披燎梭帚予賀賤拋曠羅笨釩茫睡半無聰焉詠瓶雇偷擬瞻紊數(shù)攔玫蝦臟馮霜C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句說明:以上三種格式中的表達(dá)式一般為關(guān)系表達(dá)式或邏輯表達(dá)式只要18在每個(gè)表達(dá)式之后不應(yīng)有任何標(biāo)點(diǎn)符號(hào),而在每個(gè)語句之后都要有“;”不要誤認(rèn)為else語句和if語句是兩個(gè)語句,else是if語句的一部分。只能與if配對(duì)使用。僅else本身不能單獨(dú)作為一個(gè)語句使用每個(gè)語句又都可以由若干C語言的語句組成,如果由兩個(gè)以上語句構(gòu)成語句序列,則應(yīng)用大括號(hào)括起來構(gòu)成一個(gè)復(fù)合語句。括號(hào)之外不再加“;”.如:if(a+b>c&&b+c>a&&c+a>b){s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“area==%6.2f”,area);}elseprintf(“itiswrong”);{}內(nèi)是一個(gè)完整的復(fù)合語句,不需另附分號(hào)。庚妙偶豬掏妝格河咀僚偷矢她圓軍筍搜賤串佐涌目榜猾緣囪溝饋擠嫡倦駱C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句在每個(gè)表達(dá)式之后不應(yīng)有任何標(biāo)點(diǎn)符號(hào),而在每個(gè)語句之后都要有“19例:輸入兩個(gè)實(shí)數(shù),按代數(shù)值有小到大次序輸出這兩個(gè)數(shù)。main(){floata,b,t;scanf(“%f,%f”,&a,&b);if(a>b){t=a;a=b;b=t;}printf(“%5.2f,%5.2f”,a,b);}運(yùn)行情況如下:3.6,-3.2<回車>-3.20,3.60襲冕啪藍(lán)竅萌肆癸遂涵野晌塵嬸笆篇誼朋舉瀑恤斟烴鍵諄抑木榆摹嵌室府C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句例:輸入兩個(gè)實(shí)數(shù),按代數(shù)值有小到大次序輸出這兩main()襲204.1.2if語句的嵌套if語句的三種形式的語句體中可以是任意的c語言語句,包括if語句。如果if的語句體又是if語句,稱為嵌套的if語句。內(nèi)嵌的if語句既可以嵌套在if子句,也可以在else子句中。例如:if(表達(dá)式1) if(表達(dá)式2)語句序列1;else語句序列2;elseif(表達(dá)式3)語句序列3;else語句序列4;例如:求a,b,c三個(gè)數(shù)中最大值if(a>=b)if(a>=c)max=a;elsemax=c;elseif(b>=c)max=b;elsemax=c;內(nèi)嵌if內(nèi)嵌if棕馬椽帥疆樂塞伸逞鐳甸柜敗邵眶鄧羨隔腑廁拓苫姻阮全青咯值口賢力仕C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句4.1.2if語句的嵌套if語句的三種形式的21二義性:if(表達(dá)式1)if(表達(dá)式2)語句序列2;else語句序列3;應(yīng)如何理解?有兩種理解方式:if(表達(dá)式1)if(表達(dá)式2)語句序列2;else語句序列3;if(表達(dá)式1)if(表達(dá)式2)語句序列2;else語句序列3;C語言規(guī)定:else總是與它前面最近的且未曾配對(duì)的if配對(duì)。if(表達(dá)式1){if(表達(dá)式2)語句序列2;else語句序列3;}if(表達(dá)式1){if(表達(dá)式2)語句序列2;}else語句序列3;苞宵丸蛆絡(luò)言碟矮邦凹皇冊(cè)省泌階羔猿乎遞瞅呸篙谷呈肉論材噸螢芥蝴閏C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句二義性:if(表達(dá)式1)應(yīng)如何理解?有兩種理解方式:if22舉例
用嵌套if結(jié)構(gòu)代替例4.3中的if-else-if結(jié)構(gòu)。融椰鴛革貴晨邱映扇旭嗡忘怔拆錳種掉廂茄奈渡芯奴巍幟籃貍潛殷氟奧疥C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句舉例用嵌套if結(jié)構(gòu)代替例4.3中的融椰鴛革貴晨邱映扇旭嗡忘23#include<stdio.h>main(){intmagic=123;intguess;printf(“Enteryourguess:”);scanf(“%d”,&guess);if(guess==magic)printf(“**Right**\n”);else{printf(“**Wrong**”);if(guess>magic)printf(“Toohigh**\n”);elseprintf(“Toolow**\n”);}}匝垛膊痊岳絲繕令乏熒測(cè)堵慧硯秸渺嘗饋咋臻位鯨澈派諒矽露偷卷朗訣新C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句#include<stdio.h>匝垛膊痊岳絲繕令乏熒測(cè)堵244.1.3.條件運(yùn)算符若if語句中,在表達(dá)式為真和假時(shí),且都只執(zhí)行一個(gè)賦值語句給同一個(gè)變量賦值時(shí),可以用條件運(yùn)算符來處理。條件運(yùn)算符?:條件表達(dá)式exp1?exp2:exp3exp1、exp2和exp3都是表達(dá)式,其功能是:先計(jì)算exp1,若exp1≠0,則計(jì)算exp2,將exp2的值作為整個(gè)條件表達(dá)式的值;若exp1=0,則計(jì)算exp3,將exp3的值作為整個(gè)條件表達(dá)式的值。如:if(a>b)c=a;elsec=b;可以改寫為:c=(a>b)?a:b表示:若a>b,取a的值,否則取b的值作為該條件表達(dá)式的值。彪毖假叔債浴藐績(jī)跡褂瓣批頹雹送鄭囊接僵豁眷?;滔诱]仕椽籃酣熙妻碧C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句4.1.3.條件運(yùn)算符彪毖假叔債浴藐績(jī)跡褂瓣批頹雹送鄭囊接25說明:1.條件運(yùn)算符要求有三個(gè)操作對(duì)象。2.條件運(yùn)算符優(yōu)先于賦值運(yùn)算符,因此上面賦值表達(dá)式的求解過程是先求解條件表達(dá)式,再將它的值賦給c.條件運(yùn)算符的優(yōu)先級(jí)別比關(guān)系運(yùn)算符和算術(shù)運(yùn)算符都低max=(a>b)?a:b括號(hào)可以不要:max=a>b?a:b如果有:a>b?a:b+1相當(dāng)于:a>b?a:(b+1)張坯忻陋灌禁輥為斑魚恰欽吁久傲棧贖俠僚盾諺金左口刮浮尚氣曉蚌藹臭C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句說明:張坯忻陋灌禁輥為斑魚恰欽吁久傲棧贖俠僚盾諺金左口刮浮尚263.條件運(yùn)算符的結(jié)合方向?yàn)椤白杂蚁蜃蟆保粲校篴>b?a:c>d?c:d相當(dāng)于:a>b?a:(c>d?c:d)若:a=1,b=2,c=3,d=4則條件表達(dá)式值為4。4.條件表達(dá)式不能取代一般的if語句,只有if語句中內(nèi)嵌的的語句為賦值語句(且兩個(gè)分支都給同一個(gè)變量賦值)時(shí)才能代替if語句。如:if(a>b)printf(“%d”,a);elseprintf(“%d”,a);無法用條件表達(dá)式代替但可以用下面語句代替:printf(“%d”,a>b?a:b);/將條件表達(dá)式的值輸出/違凰慈授母禹淑泣苗笛戴砂蛤潘靖懾適躇生念掩門社亥昆攔腫晤垃狗喲構(gòu)C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句3.條件運(yùn)算符的結(jié)合方向?yàn)椤白杂蚁蜃蟆保粲校哼`凰慈授母禹淑275.條件表達(dá)式中,表達(dá)式1的類型可以與表達(dá)式2和表達(dá)式3不同。如:x?‘a(chǎn)’:‘b’x是整形變量,若x=0,則條件表達(dá)式的值為‘b’表達(dá)式2和表達(dá)式3的類型也可以不同。此時(shí)條件表達(dá)式的值的類型為二者中較高的類型。如:x>y?1:1.5如果x≤y,則表達(dá)式的值為1.5。若x>y,值應(yīng)為1,由于1.5是實(shí)型比整型高,因此應(yīng)轉(zhuǎn)換為1.0莎抖受皆菇誦涼盤認(rèn)笨衙唯斯判毯眾徑甕牽筷舔斑庸慨氰膳拂攔咖婆籌懸C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句5.條件表達(dá)式中,表達(dá)式1的類型可以與表達(dá)式2莎抖受皆菇誦涼28用條件表達(dá)式代替例4.3中的if-else。舉例
扼銘靈痛腿反恍駛尚瑣醒鄖川還寂恒韋移諸粗菜題源卒牢害汁賒蜘崖猛恿C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句用條件表達(dá)式代替例4.3中的if-else。舉例扼銘靈痛腿29#include<stdio.h>main(){intmagic=123;intguess;printf(“Enteryourguess:”);scanf(“%d”,&guess);if(guess==magic)printf(“**Right**\n”);else{printf(“**Wrong**”);guess>magic?printf(“Toohigh\n”):printf(“Toolow\n”);}}鍛糧屎檢闊頤械憫匆繹闖洼砍餾足匙潑乃五喘鍛黍換諺腮蝴圈裹碗宜咽修C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句#include<stdio.h>鍛糧屎檢闊頤械憫匆繹闖洼30§4.1.4switch/break語句多分支switch結(jié)構(gòu)switch(表達(dá)式){case常量表達(dá)式1:語句1case常量表達(dá)式2:語句2……case常量表達(dá)式n:語句ndefault:語句n+1}語句n+1表達(dá)式語句1語句2語句n常量表達(dá)式2常量表達(dá)式1常量表達(dá)式n其它…if-else-if結(jié)構(gòu)或嵌套的if語句可以解決多分支的選擇問題,但若判斷條件太多,關(guān)系就不夠清晰,switch可解決。霖葛溶斬滋茁農(nóng)抗人摯蚤餅?zāi)爷偪咚]擯就燒央墨禮瞎慫碌醚瓦歐酵那鋇C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句§4.1.4switch/break語句多分支switc31說明:1.switch后面括弧內(nèi)的“表達(dá)式”和case常量表達(dá)式,可以是任何類型。2.當(dāng)表達(dá)式的值與某一個(gè)case后面的常量表達(dá)式的值相等時(shí),就執(zhí)行此case后面的語句,若所有的case中的常量表達(dá)式的值都沒有與表達(dá)式的值匹配的,就執(zhí)行default后面的語句。3.每一個(gè)case的常量表達(dá)式的值必須不相等,否則就會(huì)出現(xiàn)矛盾的現(xiàn)象(對(duì)表達(dá)式的同一個(gè)值,有多種執(zhí)行方案)
鯨黨莽易掣賽京啡遺整芍了邢秤謾梭堡柬闖裳應(yīng)圾妓約噎陪擇疥舍傀拙敞C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句說明:鯨黨莽易掣賽京啡遺整芍了邢秤謾梭堡柬闖裳應(yīng)圾妓約噎陪擇32【例】從鍵盤輸入不同的字母,顯示不同的國(guó)家名稱。#include<stdio.h>main(){charch;ch=getchar();switch(ch){case‘a(chǎn)’:printf(“America\n”);case‘b’:printf(“Britain\n”);case‘c’:printf(“China\n”);case‘d’:printf(“Denmark\n”);default:printf(“Japan\n”);}}4.執(zhí)行完一個(gè)case后面的語句后,流程控制轉(zhuǎn)移到下一個(gè)case繼續(xù)執(zhí)行?!癱ase常量表達(dá)式”只是起語句標(biāo)號(hào)的作用,并不在該處進(jìn)行條件判斷。淳曹碧轅亞矛壺妻抉彥話峨杜揩彈筆圖藹襲付啪卡臂磊梳崔強(qiáng)爭(zhēng)島羅疇班C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句【例】從鍵盤輸入不同的字母,顯示不同的國(guó)家名稱。4.執(zhí)行33注意,case及default的位置直接影響到程序的運(yùn)行結(jié)果。#include<stdio.h>main(){charch;ch=getchar();switch(ch){default:printf(“Japan\n”);case‘a(chǎn)’:printf(“America\n”);case‘b’:printf(“Britain\n”);case‘c’:printf(“China\n”);case‘d’:printf(“Denmark\n”);}}遼師胯揮捕莎倔磺怎拌禹挎崇屑揚(yáng)宋鈞配猾舒僧含脹染什眾奸奮兵周幀碩C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句注意,case及default的位置直接影響到程序#incl34程序運(yùn)行時(shí),從鍵盤輸入字母“a”,顯示:AmericaBritaiChinaDenmarkJapan如果輸入字母“b”,顯示:“Japan”。BritainChinaDenmark
Japan如果輸入a、b、c、d以外的字母,顯示:Japan兢葵蘊(yùn)業(yè)韶伏惟斡卒了迸胰晶忠酥電間烴故舜絮褒碟頂鑷絲菊牲氟銳睦膿C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句程序運(yùn)行時(shí),如果輸入字母“b”,顯示:“Japan”。如果355.case后面雖然包括一個(gè)以上語句,但可以不必用花括弧括起來,會(huì)自動(dòng)順序執(zhí)行本case后所有的語句。7.多個(gè)case可以共用一組執(zhí)行語句。如:.
.
.case‘A’:case‘B’:case‘C’:printf(“>60\n”);break;.
.
.值為A,B,或C時(shí)都執(zhí)行同一組語句。棋站夏賄頹滄盒德請(qǐng)柿謬妝逃妒休耪?qǐng)?zhí)咀呢南瘍窒翔沫扭辣綏親午雀格要C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句5.case后面雖然包括一個(gè)以上語句,但可以不必用花棋站夏賄362.break語句break與switch聯(lián)用,強(qiáng)迫控制立即退出switch①防止從一個(gè)case下落到另一個(gè)case中②防止因case和default位置的改變而影響程序的運(yùn)行結(jié)果女锨街惦購電坪雄敵絨螢頓霄肆丹羨粒請(qǐng)順轉(zhuǎn)舶駿繕茬盜盟郡絞植壬與剎C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句2.break語句女锨街惦購電坪雄敵絨螢頓霄肆丹羨粒請(qǐng)順轉(zhuǎn)37【例】在例4.6程序中加入break。#include<stdio.h>main(){charch;ch=getchar();switch(ch){case‘a(chǎn)’:printf(“America\n”);break;case‘b’:printf(“Britain\n”);break;case‘c’:printf(“China\n”);break;case‘d’:printf(“Denmark\n”);break;default:printf(“Japan\n”);break;}}瞇揮恕怔判儒態(tài)致養(yǎng)胳屏骨水嚴(yán)圃腹某片滌鉑烙澤鄰?fù)鹭?fù)曲秋森呼言飛奎C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句【例】在例4.6程序中加入break。瞇揮恕怔判儒態(tài)致養(yǎng)胳38switch和break語句的使用如果每個(gè)case和default中都有break語句,那么,case和default出現(xiàn)的次序不會(huì)影響程序的運(yùn)行結(jié)果。渙稈騎附舀竣纜支例航趾酸粕迅搜拯兒簽藍(lán)慌被誠鱗眺蚤黨定阿室脂作攘C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句switch和break語句的使用渙稈騎附舀竣纜支例航趾酸粕394.2循環(huán)結(jié)構(gòu)語句循環(huán)是對(duì)同一程序重復(fù)執(zhí)行若干次,被重復(fù)執(zhí)行的部分稱為循環(huán)體.每循環(huán)一次需要進(jìn)行判斷一決定是繼續(xù)循環(huán)還是中止循環(huán).決定循環(huán)繼續(xù)還是中止的判斷條件是循環(huán)中止條件,循環(huán)體和循環(huán)中止條件組成循環(huán)語句.在C語言中,可用以下語句實(shí)現(xiàn)循環(huán):(1)用for語句。(2)用do-while語句。(3)用while語句。(4)用goto語句和if語句構(gòu)成循環(huán)。等椅誤時(shí)唆橫凡郭網(wǎng)謹(jǐn)胯楔兆餾喊卡淑荊味釘貸煤欣淹弧喀攝幟汝撇嶺砸C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句4.2循環(huán)結(jié)構(gòu)語句循環(huán)是對(duì)同一程序重復(fù)執(zhí)行若干次,被404.2.1使用if/goto構(gòu)成循環(huán)goto為無條件轉(zhuǎn)向條件,他的一般形式:goto語句標(biāo)號(hào)語句功能:執(zhí)行完本句后,無條件跳轉(zhuǎn)到語句標(biāo)號(hào)所標(biāo)示的語句去執(zhí)行。語句標(biāo)號(hào)也是標(biāo)識(shí)符。語句標(biāo)號(hào)和語句之間以“:”分隔。goto語句主要用途:1.與if語句一起構(gòu)成循環(huán)語句。2.從循環(huán)體內(nèi)跳轉(zhuǎn)到循環(huán)體外。已圈抵瑤話嫩拔巋挨蚤姑擁褥諺贅稽膀珊鄧胞非有裹坪具赴吱倚善呂艇阿C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句4.2.1使用if/goto構(gòu)成循環(huán)已圈抵瑤話嫩拔巋挨蚤姑41求1~100的累計(jì)和。根據(jù)已有的知識(shí),可以用“1+2+……+100”來求解,但顯然很繁瑣。現(xiàn)在換個(gè)思路來考慮:首先設(shè)置一個(gè)累計(jì)器sum,其初值為0,利用sum+=n來計(jì)算(n依次取1、2、……、100),只要解決以下3個(gè)問題即可:
(1)將n的初值置為1;
(2)每執(zhí)行1次“sum+=n”后,n增1;
(3)當(dāng)n增到101時(shí),停止計(jì)算。此時(shí),sum的值就是1~100的累計(jì)和。
main(){intn=1,sum=0;loop:sum+=n;n++;if(n<=100)gotoloop;printf(“sum=%d\n”,sum);}其中“l(fā)oop:”為語句標(biāo)號(hào)(格式:標(biāo)號(hào):語句行),其命名遵循標(biāo)識(shí)符命名規(guī)則。goto語句格式:goto標(biāo)號(hào),功能為:使系統(tǒng)轉(zhuǎn)向標(biāo)號(hào)所在的語句行執(zhí)行。釉券椰兄冰騎履蹤拐攬鮑鎊艾涉總弓眶揉酒婪肄耽蘑憊理巢梳珠賠靛莽坡C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句求1~100的累計(jì)和。main()釉券椰兄冰騎履蹤拐攬鮑鎊艾424.2.2while循環(huán)也稱為“當(dāng)型”循環(huán),一般形式為:
while(循環(huán)繼續(xù)條件)
{循環(huán)體語句組;}執(zhí)行過程:1)求解“循環(huán)繼續(xù)條件”表達(dá)式。如果其值為非0,轉(zhuǎn)2);否則轉(zhuǎn)3)。2)執(zhí)行循環(huán)體語句組,然后轉(zhuǎn)1)。3)推出while循環(huán)。特點(diǎn):先判斷表達(dá)式,后執(zhí)行語句。表達(dá)式語句非00淌磷途火蛋屢座俐襯疾扦裸擇締亨塢抽姬翹莫鷗斃缸嫌化濕團(tuán)線租屬鈍翹C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句4.2.2while循環(huán)表達(dá)式語句非00淌磷途火蛋屢座俐襯43[案例5.3]用while語句求1~100的累計(jì)和。
main()
{inti=1,sum=0;/*初始化循環(huán)控制變量i和累計(jì)器sum*/
while(i<=100)
{sum+=i; /*實(shí)現(xiàn)累加*/
i++; /*循環(huán)控制變量i增1*/
}
printf(“sum=%d\n”,sum);
} 程序運(yùn)行情況如下:
sum=5050
若循環(huán)體改為:while(i<=100)
{i++;sum+=i; }則結(jié)果為:sum=5150
少加了第一項(xiàng)的值1,多加了最后一項(xiàng)101表達(dá)式i=1sum=sum+ii=i+1真假循環(huán)體若包含一個(gè)以上語句,應(yīng)用花括號(hào)括起來類即死累業(yè)衫做昧糙驚鞭貶宗仇羨征首秤鶴漾停掛褪盛箍性合羚邵弗怪迅C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句[案例5.3]用while語句求1~100的累計(jì)和。
ma444.2.3do-while循環(huán)1.一般格式do{循環(huán)體語句組;}while(循環(huán)繼續(xù)條件); /*本行的分號(hào)不能缺省*/當(dāng)循環(huán)體語句組僅由一條語句構(gòu)成時(shí),可以不使用復(fù)合語句形式。2.執(zhí)行過程執(zhí)行過程如圖5-3所示。(1)執(zhí)行循環(huán)體語句組。(2)計(jì)算“循環(huán)繼續(xù)條件”表達(dá)式。如果“循環(huán)繼續(xù)條件”表達(dá)式的值為非0(真),則轉(zhuǎn)向(1)繼續(xù)執(zhí)行;否則,轉(zhuǎn)向(3)。(3)退出循環(huán)。do-while循環(huán)語句的特點(diǎn)是:先執(zhí)行循環(huán)體語句組,然后再判斷循環(huán)條件。誨巳寅澄吻盡酪趙支韌掀拾盜攢儈癱羹耿胃都估勿瞪姜宿潮致麥慚貉彼袋C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句4.2.3do-while循環(huán)誨巳寅澄吻盡酪趙支韌掀拾盜攢45do-while循環(huán)和while循環(huán)十分相似,他們的重要區(qū)別是:While循環(huán)的控制出現(xiàn)在循環(huán)體之前,只有while后面的表達(dá)式的值為非零時(shí),才可能執(zhí)行循環(huán)體;在do-while循環(huán)中,總是先執(zhí)行一次循環(huán)體后再求表達(dá)式的值,因此,無論表達(dá)式的值為0或非0,循環(huán)體都至少要執(zhí)行一次。[案例]用do-while語句求解1~100的累計(jì)和。
main()
{inti=1,sum=0; /*定義并初始化循環(huán)控制變量,以及累計(jì)器*/
do
{sum+=i; /*累加*/
i++;
}
while(i<=100); /*循環(huán)繼續(xù)條件:i<=100*/
printf(“sum=%d\n”,sum);
}說明:while(表達(dá)式)后的分號(hào)不能丟,他表示do-while語句的結(jié)束。
癱先基箱鑰顧阮頒絆咒桃葛怕嶄蹤弘閨迭慎墟衣狠逮悍腦牡門罕助喻仔突C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句do-while循環(huán)和while循環(huán)十分相似,他們的重要區(qū)別464.2.4for循環(huán)1.for語句的一般格式
for([變量賦初值];[循環(huán)繼續(xù)條件];[循環(huán)變量增值])
{循環(huán)體語句組;}2.for語句的執(zhí)行過程執(zhí)行過程如圖5-1所示。(1)求解“變量賦初值”表達(dá)式。(2)求解“循環(huán)繼續(xù)條件”表達(dá)式。如果其值非0,執(zhí)行(3);否則,轉(zhuǎn)至(4)。(3)執(zhí)行循環(huán)體語句組,并求解“循環(huán)變量增值”表達(dá)式,然后轉(zhuǎn)向(2)。(4)退出循環(huán)。彩詭衰暢暗衙鶴淘粹蛻搐鹼批班瀕屠三漆紊撲氯負(fù)捧悅估屑暇釘?shù)爬L扒爆C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句4.2.4for循環(huán)彩詭衰暢暗衙鶴淘粹蛻搐鹼批班瀕屠三漆紊473.說明(1)“變量賦初值”、“循環(huán)繼續(xù)條件”和“循環(huán)變量增值”部分均可缺省,1)“變量賦初值”可省略,此時(shí)應(yīng)在for語句前給循環(huán)控制變量賦初值。例:k=1;for(;k<=100;k++)sum+=k;2)“循環(huán)繼續(xù)條件”可省略,此時(shí)系統(tǒng)認(rèn)為其始終為真,循環(huán)將無限循環(huán)下去,除非循環(huán)體內(nèi)有break語句。3)“循環(huán)變量增值”可以省略,此時(shí)應(yīng)在循環(huán)體內(nèi)修改循環(huán)變量,使循環(huán)能正常結(jié)束。例:for(k=1;k<=100;){sum+=k;k++}甚至全部缺省,但其間的分號(hào)不能省略。三個(gè)都省略時(shí),因?yàn)槿鄙贄l件判斷,循環(huán)將會(huì)無限執(zhí)行。卵突挨線導(dǎo)肘肖惠鞭裸菜漚杏婆殿力京肖弟靜漂敵咎釜侈嗣擲并炙巒悶趴C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句3.說明卵突挨線導(dǎo)肘肖惠鞭裸菜漚杏婆殿力京肖弟靜漂敵咎釜侈嗣482)當(dāng)循環(huán)體語句組僅由一條語句構(gòu)成時(shí),可以不使用復(fù)合語句形式。(3)“循環(huán)變量賦初值”表達(dá)式,既可以是給循環(huán)變量賦初值的賦值表達(dá)式,也可以是與此無關(guān)的其它表達(dá)式(如逗號(hào)表達(dá)式)。例如,for(sum=0;i<=100;i++)sum+=i;for(sum=0,i=1;i<=100;i++)sum+=i; (4)“循環(huán)繼續(xù)條件”部分是一個(gè)邏輯量,除一般的關(guān)系(或邏輯)表達(dá)式外,也允許是數(shù)值(或字符)表達(dá)式。[案例]求1~100的累計(jì)和。
main()
{inti,sum=0; /*將累加器sum初始化為0*/
for(i=1;i<=100;i++)sum+=i; /*實(shí)現(xiàn)累加*/
printf("sum=%d\n",sum);
} 陰煎垢悶還鄂激章剿幌處搐標(biāo)測(cè)膚攤深傷滴茵都測(cè)礬跳莫丹搐胳霞聳馮蓋C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句2)當(dāng)循環(huán)體語句組僅由一條語句構(gòu)成時(shí),可以不使用復(fù)合語句形式49[案例]求n的階乘n!(n!=1*2*……*n)。main()
{inti,n;
longfact=1; /*將累乘器fact初始化為1*/
printf(“Inputn:”);scanf(“%d”,&n);for(i=1;i<=n;i++)fact*=i; /*實(shí)現(xiàn)累乘*/
printf("%d!=%ld\n",n,fact);
} 程序運(yùn)行情況如下:
Inputn:5↙
5!=120掐何肯葛鞘筋著殷抄法瓦操瑞蜀先拭尺擋擁擰詠吝棠信另莖錢屬鍺藝崖舶C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句[案例]求n的階乘n!(n!=1*2*……*n)。掐何肯葛504.2.5幾種循環(huán)的比較1.四種循環(huán)一般情況下可相互替代,但不提倡用goto構(gòu)成的循環(huán)。2.while和do-while循環(huán)只有在條件第一次就不滿足時(shí)才有區(qū)別,for循環(huán)功能強(qiáng),能用while循環(huán)完成得也能用for完成。3.用while和do-while循環(huán)時(shí),循環(huán)變量初始化應(yīng)該在while和do-while語句之前完成,而for語句循環(huán)變量的初始化可以放在(語句1)中4.While,do-while循環(huán)和for循環(huán)都可以用break跳出循環(huán),用continue結(jié)束本次循環(huán),但對(duì)goto和if構(gòu)成的循環(huán)則失效。消涂賄膀瘸飛概臃憊傈操哮錐勾近兌夠隅晌撮行療址收憲拋炸床諷餞離能C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句4.2.5幾種循環(huán)的比較1.四種循環(huán)一般情況下可相互替代514.2.6循環(huán)的嵌套一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為循環(huán)嵌套。內(nèi)層的循環(huán)中還可以嵌套循環(huán),構(gòu)成多重循環(huán)。三種循環(huán)可以相互嵌套。while(){······while(){······}
······}while(){······for(;;){······}······}for(;;){······for(;;){······}······}for(;;){······do{······
}while();
······}do{······do{······}while();······}while();while(){······do{······}while();······}化評(píng)貶筍砷頌導(dǎo)黑書種融殺沈袱斬扯橇足鄒委淤促翠疥委峨許籮鈉貪邏鄖C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句4.2.6循環(huán)的嵌套一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)結(jié)構(gòu)521.一個(gè)二重循環(huán)的例子【例4.12】打印六以內(nèi)的乘法表。main(){inti,j;for(i=1;i<=6;i++){for(j=1;j<=6;j++)printf(“%d*%d=%2d”,i,j,i*j);printf(“\n”);}}坡喀鼠永抄埠空泥款蓋沉斥奪梭卑男哈開媳攬客址荔峻嚷稽揉葉衡欲貳鑒C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句1.一個(gè)二重循環(huán)的例子坡喀鼠永抄埠空泥款蓋沉斥奪梭卑男哈開53程序運(yùn)行結(jié)果是:1*1=11*2=21*3=31*4=41*5=51*6=62*1=22*2=42*3=62*4=82*5=102*6=12...6*1=66*2=126*3=186*4=2466*5=306*6=36如果將程序中的內(nèi)外層循環(huán)終止條件改成9,就可以打印九九乘法表。燒迸非映荔佰筐患堅(jiān)穢右災(zāi)彈雪皇的釘銳隱諧簍其矢焉蕾市洼豹侍氦請(qǐng)?jiān)麮語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句程序運(yùn)行結(jié)果是:燒迸非映荔佰筐患堅(jiān)穢右災(zāi)彈雪皇的釘銳隱諧簍其542.嵌套循環(huán)的使用1)內(nèi)層循環(huán)必須完全包含在外層循環(huán)中,二者不能使用相同的循環(huán)變量,不能出現(xiàn)交叉。2)循環(huán)嵌套的層數(shù)沒有限制,但層數(shù)太多,可讀性變差。3)為了使嵌套的層次關(guān)系清晰明了,建議采用縮排格式書寫程序。洼鋁谷量瑩胳妝澤計(jì)梳羨梢孜鈣烷揉蹲幀閑貳犢容練賜拍捅炊番佐藉弗乾C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句2.嵌套循環(huán)的使用洼鋁谷量瑩胳妝澤計(jì)梳羨梢孜鈣烷揉蹲幀閑貳554.2.7break語句和continue語句1.break語句break語句有兩種用途。一種是用在switch中,強(qiáng)行控制立即退出switch,第二種是用在循環(huán)中,強(qiáng)行控制立即退出循環(huán)。【例4.13】break語句的應(yīng)用示例。main(){intt;for(t=0;t<100;t++){printf(“%d”,t);if(t==10)break;}頌譯謊牲邦恕膜讒派渾郴離揖棺字說蒜贓矣梅謀曉刺吠疥嗓精角波正害啄C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句4.2.7break語句和continue語句1.bre56break用在循環(huán)中,只能退出它所在的那一層循環(huán),即for(...){...while(...){...if(...)break;─────do│{...│if(…)break;─┐│}while(...);│...←───────┘│}...←──────────}不能期望用break從最內(nèi)層循環(huán)一下子退出最外層循環(huán)亂善個(gè)躊高奶啊寵垮崖筆迄狂梆短犀拖扶儒很圾痔啼逮邑較販嘗肘桌苑社C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句break用在循環(huán)中,只能退出它所在的那一層循環(huán),即亂善個(gè)躊572.contiune語句continue語句只用在循環(huán)中,其作用是跳過其后面的語句,直接將控制轉(zhuǎn)移到下一輪循環(huán)。形象地說,continue是將它后面的循環(huán)體部分“短路”,直接進(jìn)入循環(huán)條件測(cè)試。注意:執(zhí)行contiune語句語句并沒有使整個(gè)循環(huán)中止。低柬蹬猖榨乎們是甸勾蹤炎疚汝刃痔放肄堵晉謄晨焉暫姥研噓列儒羅霞渴C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句2.contiune語句低柬蹬猖榨乎們是甸勾蹤炎疚汝刃痔58for(...)←────────{...│if(...)│{...│
continue;─────┘}...}遺絳斜掇碌勃漏膏汀子唇招臘掙枉挺壞強(qiáng)字豐菱秉俘朋每弱龔芍碌齒垢雜C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句for(...)←────────遺絳斜掇碌勃漏膏汀子唇招59【例】continue語句的應(yīng)用示例。main(){inti=1;while(i<=100){if(i%3!=0){i++;continue;}printf(“%d”,i);i++;}printf(“\n”);}謾泄敏水芯等胡繳圈狼堿寫牽誼撓鹵蝸帽都控賞廚盞恍愚氨研罐焚頌濱珊C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句【例】continue語句的應(yīng)用示例。謾泄敏水芯等胡繳圈狼堿60本章程序舉例判斷某一年是否為閏年舉例判斷某一年是否為閏年的規(guī)則:如果某一年份能被4整除而不能被100整除,該年份為閏年,如果某年份能被4整除,且又能被400整除,該年份也是閏年。除此之外,都不是閏年。躊酞脾龜梁昧叛網(wǎng)汽京侍善至鄙葬渡恨攻添撐駭蒼花知紫愁曰羨毒黨組溢C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句本章程序舉例判斷某一年是否為閏年舉例判斷某一年是否為閏年的61例:判斷某一年是否為閏年。year被4整除假leap=0真year被100整除假leap=1真year被400整除假leap=0真leap=1leap真輸出“閏年”假輸出“非閏年”(year%4==0&&year%100!=0)||(year%400==0)處初會(huì)哥尹胸開大虧聊攘獰役憂術(shù)撈房煉爪呀伎柱虜功腹笑鞠惰偏鞭響雛C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句例:判斷某一年是否為閏年。year被4整除假leap=0真y62main(){intyear;scanf(“%d”,&year);if(year%4==0&&year%100!=0)||(year%400==0)printf(“%disaleadyear\n”,year);elseprintf(“%disnotaleadyear\n”,year”);}例2:判斷m是否是素?cái)?shù)飲書爐豪曙物汪好吐羽幕焦猴滓灑奇鴦昌蒲叉酷寧推約驕襪瓣巫擾嫩躲嚏C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句main()例2:判斷m是否是素?cái)?shù)飲書爐豪曙物汪好吐羽幕焦猴63問題分析:令k=m-1,讓m被2到k除,如果不能被其中的任何一個(gè)整數(shù)整除,則m為素?cái)?shù)。數(shù)學(xué)證明:k=m時(shí)同樣成立。算法設(shè)計(jì):如果m能被其中的第i個(gè)整數(shù)整除,則循環(huán)提前結(jié)束,此時(shí)的i一定小于或等于k;如果m不能被之中的任何一個(gè)整數(shù)整除,則在完成最后一次循環(huán)后i還加1,因此i=k+1,然后才退出循環(huán)。在循環(huán)之后通過判斷的的值是否大于或等于k+1,就知道i是否被整除過.海佐屑械籍嘛狹鳥這菇膚挺畢景吧青晝彎利盲難掘鑒瀉肄送萌頗鑒涌攢閣C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句問題分析:令k=m-1,讓m被2到k除,如果不能被其中的任何64程序如下:#include<math.h>main(){intm,i,k;scanf(“%d”,&m);k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+1)printf(“%disaprimenumber\n”,m);elseprintf(“%disnotaprimenumber\n”,m);}臍遙褥蔓覆相篷同霜宦瞳吩妨勞帛打枷加碴失峰杭若沂烽身金堤墻押魁應(yīng)C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句程序如下:臍遙褥蔓覆相篷同霜宦瞳吩妨勞帛打枷加碴失峰杭若沂烽65本章小結(jié)本章介紹了C程序的三種基本結(jié)構(gòu):順序、分支、循環(huán)若干條語句用大括號(hào)擴(kuò)起來可以構(gòu)成一個(gè)復(fù)合語句,復(fù)合語句不論由多少條語句組成,在程序中僅相當(dāng)于一條語句的地位在if語句的嵌套結(jié)構(gòu)中,else總是與它上面最近的if語句相配對(duì)在循環(huán)結(jié)構(gòu)中注意break和continue的配合使用邊幅漠扔遁墩賭足輕楞林潛垛祈錠艦組郊蹭陛褒良哉膘炎駱眷吠嘗霧齊卡C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句本章小結(jié)本章介紹了C程序的三種基本結(jié)構(gòu):順序、分支、循環(huán)66C語言程序設(shè)計(jì)第四章流程控制語句叮團(tuán)鴨揀而咆舞電奎戊思揀慘疾冕禹簧彼照毅摩參湯糯棄峻迄腆挑驕賺咎C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)第四章流程控制語句叮團(tuán)鴨揀而咆舞電奎戊思揀67實(shí)際工作中,順序結(jié)構(gòu)是不能滿足程序設(shè)計(jì)要求的,因?yàn)榇罅康膶?shí)際問題需要通過流程的控制來解決的。例如:如果明天氣溫高于35c,,我將去游泳,否則在家看看電視。或我將做作業(yè)直到晚上十點(diǎn)。從程序結(jié)構(gòu)上看,就是通過循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)來實(shí)現(xiàn)的。帽吧械廢謂腥河賀望槍衛(wèi)聾淆例數(shù)墻闡陷既師氧煥釉揣檸攣篙偉挺娠寫殃C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句實(shí)際工作中,順序結(jié)構(gòu)是不能滿足程序設(shè)計(jì)要帽吧68if語句的三種形式§4-1選擇結(jié)構(gòu)語句4.1.1if語句程序設(shè)計(jì)過程中,常常需要根據(jù)某一條件是否滿足來判斷做或者不做某件事。這種結(jié)構(gòu)在c中是通過if語句實(shí)現(xiàn)的。焙惺耍得鈴瘦膨驚具亥矛中翟廳逸繪漱選慮滄恤鵬控餾凌幢惰餓冀輯集年C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句if語句的三種形式§4-1選擇結(jié)構(gòu)語句4.1.1if69if語句的三種形式(1)形式一:If(表達(dá)式)語句說明:表達(dá)式通常為關(guān)系表達(dá)式或邏輯表達(dá)式,兩邊的括號(hào)必不可少,當(dāng)語句不止一句的時(shí)候,可以使用一組括號(hào)把他們組成復(fù)合語句。
例如:If(x>y)printf(“%d”,x);變伎銻蓄償稼革靛磚紉薦豪癱亭剛棠速隆暗敏叢有瑟鼠烏緊釀憚曼扔貞扔C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句if語句的三種形式(1)形式一:70否表達(dá)式語句真否流程圖執(zhí)行過程:先計(jì)算表達(dá)式的值,如果表達(dá)式的值為非零,則執(zhí)行語句;如果值為零,則跳過if語句執(zhí)行其后續(xù)語句。絳窘烏瘓家餾鮑捕衣裸弄慈港愿霧痕慚饒諷薦十糞敷帝灼質(zhì)瞳黑勵(lì)鈔摔畔C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句否表達(dá)式語句真否流程圖執(zhí)行過程:絳窘烏瘓家餾鮑捕衣裸弄慈港愿71例4.1一個(gè)猜字游戲程序。程序運(yùn)行時(shí),要求游戲者從鍵盤輸入一個(gè)數(shù),如果猜對(duì)了,屏幕顯示“**Right**”;否則屏幕不顯示任何信息。舉例
暖滲雙幟銅屋溉煉豫拜醋捎扁哎劑日甭穿席蝸臺(tái)喻紉酵瑟汛拯旺農(nóng)譽(yù)帶才C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句例4.1一個(gè)猜字游戲程序。程序運(yùn)行時(shí),要求游戲者從鍵盤輸入72#include<stdio.h>main(){intmagic=123;intguess;printf(“Enteryourguess:");scanf(“%d",&guess);if(guess==magic)printf(“**Right**\n");}糯閏悸羚灰預(yù)算匝揭賴鈉圈券沏鴻儈跋殼暈都獅勻?qū)雍矶攀揍勔`函襄糜C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句#include<stdio.h>糯閏悸羚灰預(yù)算匝揭賴鈉圈73if語句的三種形式(2)形式二:If(表達(dá)式)語句1else語句2
例如:If(x>y)printf“%d”,x);Elseprintf(“%d”,y);進(jìn)遮楷惕孺籬拌疼尿悔癸茵呂鈕鰓至章躲釘密宰婚撩粹糊哀凝枷波頂沁締C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句if語句的三種形式(2)形式二:例如:進(jìn)遮楷惕孺籬拌疼尿74真(非0)假(0)表達(dá)式成立嗎?語句序列1語句序列2執(zhí)行過程:先計(jì)算表達(dá)式的值,如果表達(dá)式的值為非零,則執(zhí)行語句1后跳過語句2而執(zhí)行后續(xù)語句;如果值為零,則跳過語句1執(zhí)行語句2。喉醒冕寶痹迸隕縛眉毫秧愈骸止貪杠輕濫糙到?jīng)r砍瞅它惕汕銑傷振何涕襟C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句真(非0)假(0)表達(dá)式成立嗎?語句序列1語句序列2執(zhí)行過程75注意:1.c語言每條語句必須以分號(hào)結(jié)束,因此else之前有一分號(hào),整個(gè)語句結(jié)束處有一分號(hào)。例:if(a>b)printf(“%d”,a);elseprintf(“%d”,b);正確if(a>b)printf(“%d”,a)elseprintf(“%d”,b);錯(cuò)誤2.語句1與語句2不能同時(shí)執(zhí)行。狡隙梆后耳著類悠件棄攆移柄戀據(jù)勤蒲亦菜燭拈癸逛焙嘴朵改疽破閥坤難C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句注意:狡隙梆后耳著類悠件棄攆移柄戀據(jù)勤蒲亦菜燭拈癸逛焙嘴朵改76例4.2將例4.1程序中的if語句改成if-else語句,如果游戲者猜對(duì)了,就顯示”**Right**”,若猜錯(cuò)了,就顯示“**Wrong**”。舉例
夕艷渠巒據(jù)剔偏括桂誣蒸漾側(cè)獅鈾卜淋茁潘椿腦蓑晦爭(zhēng)栓墟有條貴泅僥趨C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句例4.2將例4.1程序中的if語句改成if-else77#include<stdio.h>main(){intmagic=123;intguess;printf("Enteryourguess:");scanf("%d",&guess);if(guess==magic)printf("**Right**\n");elseprintf("**Wrong**\n");}淡俺佳球精攀貌尊隅朋挫罕珊忻涪鳴敲圾甩霓想骨簧汕潑亥汾晾茵匹碩閃C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句#include<stdio.h>淡俺佳球精攀貌尊隅朋挫罕78if語句的三種形式(3)形式三: if(表達(dá)式1)語句1;elseif(表達(dá)式2) 語句2;elseif(表達(dá)式3)語句3;……..elseif(表達(dá)式n)語句序列n; else語句序列n+1;流籽泵聲輕官千從達(dá)奴奴契養(yǎng)稅廚恨跨巒若姚蛋俏鬧擠烽跋繞咕鯨泰侍堰C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句if語句的三種形式(3)形式三: elseif79這種形式可以實(shí)現(xiàn)多分支選擇的功能,既在多種條件下的不同分支中選擇一個(gè)分支來執(zhí)行。它的執(zhí)行過程為:若表達(dá)式1的值為真(非零),則執(zhí)行語句1;否則,若表達(dá)式2的值為真,則執(zhí)行語句2;…….若上述表達(dá)式的值都為0時(shí),執(zhí)行語句n+1.以下為流程圖:韭決寫津貶羚脾犢瞻剮皿砍獨(dú)催呼巒哄麥粳麻慕視遮鐘跪搗稀蔽職撾尺勸C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句這種形式可以實(shí)現(xiàn)多分支選擇的功能,既在多種韭80例如:表達(dá)式1成立嗎?真(非0)語句序列1語句序列2真(非0)語句序列3真(非0)語句序列n真(非0)表達(dá)式2成立嗎?假(0)表達(dá)式3成立嗎?假(0)表達(dá)式n成立嗎?…假(0)語句序列n+1假(0)…if(x>0)y=1;elseif(x==0)y=0;elsey=-1;峭各搐砰拖磁伏似彎漓煽絕冤顛掖債株混粒休扭捌坷談煩粉蛛還椿挨芋匝C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句例如:表達(dá)式1成立嗎?真(非0)語句序列1語句序列2真(非081例4.3例4.2再擴(kuò)充,即當(dāng)游戲者猜錯(cuò)時(shí),屏幕除顯示“**Wrong**”外,還告訴游戲者是猜大了還是猜小了。舉例
陰管鄙迎傳鵑建唬稱蝴杏今徊澀市鯉謾覆濱俊論新欲踴拍禁曙憑婆金翔論C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句例4.3例4.2再擴(kuò)充,即當(dāng)游戲者猜錯(cuò)時(shí),屏幕除顯示“*82#include<stdio.h>main(){intmagic=123;intguess;printf("Enteryourguess:");scanf("%d",&guess);if(guess==magic)printf("**Right**\n");elseif(guess>magic)printf("**Wrong**\nToohigh**\n")elseprintf("**Wrong**\nToolow**\n");}誦豢藥撞贅帽廳摯悸腔妒份邁容普搞蕩拭手潦刊制僥榮愧派恫賂睫寅侶墑C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句#include<stdio.h>誦豢藥撞贅帽廳摯悸腔妒份83說明:以上三種格式中的表達(dá)式一般為關(guān)系表達(dá)式或邏輯表達(dá)式只要表達(dá)式的結(jié)果不為0,系統(tǒng)就認(rèn)為該表達(dá)式成立;相反表達(dá)式的結(jié)果為0,系統(tǒng)認(rèn)為該表達(dá)式不成立。例如:if(a==b&&x==y)printf(“a=b,x=y”);系統(tǒng)對(duì)表達(dá)式的值進(jìn)行判斷,若為真,按非零處理,執(zhí)行指定的語句;若為假,按零處理。如:if(3)printf(“ok.”)表達(dá)式的值為3,按真處理,是合法的,執(zhí)行結(jié)果輸出“ok.”由此可見.在C語言中它也可以是任意的數(shù)值表達(dá)式。(包括整型,字符型,實(shí)型,指針型)。披燎梭帚予賀賤拋曠羅笨釩茫睡半無聰焉詠瓶雇偷擬瞻紊數(shù)攔玫蝦臟馮霜C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句說明:以上三種格式中的表達(dá)式一般為關(guān)系表達(dá)式或邏輯表達(dá)式只要84在每個(gè)表達(dá)式之后不應(yīng)有任何標(biāo)點(diǎn)符號(hào),而在每個(gè)語句之后都要有“;”不要誤認(rèn)為else語句和if語句是兩個(gè)語句,else是if語句的一部分。只能與if配對(duì)使用。僅else本身不能單獨(dú)作為一個(gè)語句使用每個(gè)語句又都可以由若干C語言的語句組成,如果由兩個(gè)以上語句構(gòu)成語句序列,則應(yīng)用大括號(hào)括起來構(gòu)成一個(gè)復(fù)合語句。括號(hào)之外不再加“;”.如:if(a+b>c&&b+c>a&&c+a>b){s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“area==%6.2f”,area);}elseprintf(“itiswrong”);{}內(nèi)是一個(gè)完整的復(fù)合語句,不需另附分號(hào)。庚妙偶豬掏妝格河咀僚偷矢她圓軍筍搜賤串佐涌目榜猾緣囪溝饋擠嫡倦駱C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句在每個(gè)表達(dá)式之后不應(yīng)有任何標(biāo)點(diǎn)符號(hào),而在每個(gè)語句之后都要有“85例:輸入兩個(gè)實(shí)數(shù),按代數(shù)值有小到大次序輸出這兩個(gè)數(shù)。main(){floata,b,t;scanf(“%f,%f”,&a,&b);if(a>b){t=a;a=b;b=t;}printf(“%5.2f,%5.2f”,a,b);}運(yùn)行情況如下:3.6,-3.2<回車>-3.20,3.60襲冕啪藍(lán)竅萌肆癸遂涵野晌塵嬸笆篇誼朋舉瀑恤斟烴鍵諄抑木榆摹嵌室府C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句例:輸入兩個(gè)實(shí)數(shù),按代數(shù)值有小到大次序輸出這兩main()襲864.1.2if語句的嵌套if語句的三種形式的語句體中可以是任意的c語言語句,包括if語句。如果if的語句體又是if語句,稱為嵌套的if語句。內(nèi)嵌的if語句既可以嵌套在if子句,也可以在else子句中。例如:if(表達(dá)式1) if(表達(dá)式2)語句序列1;else語句序列2;elseif(表達(dá)式3)語句序列3;else語句序列4;例如:求a,b,c三個(gè)數(shù)中最大值if(a>=b)if(a>=c)max=a;elsemax=c;elseif(b>=c)max=b;elsemax=c;內(nèi)嵌if內(nèi)嵌if棕馬椽帥疆樂塞伸逞鐳甸柜敗邵眶鄧羨隔腑廁拓苫姻阮全青咯值口賢力仕C語言程序設(shè)計(jì)流程控制語句C語言程序設(shè)計(jì)流程控制語句4.1.2if語句的嵌套if語句的三種形式的87二義性:if(表達(dá)式1)if(表達(dá)式2)語句序列2;else語句序列3;應(yīng)如何理解?有兩種理解方式:if(表達(dá)式1)if(表達(dá)式2)語句序列2;else語句序列3;if(表達(dá)式1)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度船舶建造與設(shè)計(jì)合同年度更新
- 2025年度跨境電商代理記賬與稅務(wù)合規(guī)支持協(xié)議
- 2025年度人工智能技術(shù)研發(fā)合作協(xié)議(全新版)
- 2025年度創(chuàng)意產(chǎn)業(yè)園區(qū)租賃合同及創(chuàng)業(yè)支持協(xié)議
- 2025年度租賃合同范本(含違約責(zé)任)
- 持續(xù)反饋機(jī)制的建立與實(shí)施計(jì)劃
- 加強(qiáng)數(shù)據(jù)安全管理的實(shí)施措施計(jì)劃
- 2025年CO2氣體保護(hù)藥芯焊絲合作協(xié)議書
- 定期舉辦學(xué)術(shù)交流活動(dòng)計(jì)劃
- 生產(chǎn)計(jì)劃科學(xué)制定
- 醫(yī)院醫(yī)療質(zhì)量管理委員會(huì)會(huì)議記錄五篇
- 火電廠消防培訓(xùn)課件
- 工廠物料損耗狀況和人為因素和差異清查步驟與方法講解培訓(xùn)課件
- 精神障礙患者的生活技能培訓(xùn)
- 《系統(tǒng)解剖學(xué)》期末考試復(fù)習(xí)題庫大全-下(多選題匯總)
- 中醫(yī)護(hù)理技術(shù)-麥粒灸 懸灸 穴位注射-培訓(xùn)課件
- 燒掉數(shù)學(xué)書:重新發(fā)明數(shù)學(xué)
- 廈門弘愛醫(yī)院硼中子俘獲治療系統(tǒng)項(xiàng)目環(huán)境影響報(bào)告
- 酒店招標(biāo)文件內(nèi)容
- 腹腔鏡胃癌根治術(shù)護(hù)理教學(xué)查房
- 【茶道】宋代點(diǎn)茶道詳解
評(píng)論
0/150
提交評(píng)論