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