版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語(yǔ)言程序設(shè)計(jì)第4章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)Contents本章目錄C語(yǔ)言程序設(shè)計(jì)·第4章循環(huán)結(jié)構(gòu)01循環(huán)結(jié)構(gòu)基本概念02while循環(huán)語(yǔ)句03do-while循環(huán)語(yǔ)句04for循環(huán)語(yǔ)句05多重循環(huán)與嵌套應(yīng)用06綜合案例與實(shí)戰(zhàn)演練CHAPTER01循環(huán)結(jié)構(gòu)基本概念理解循環(huán)的本質(zhì)——讓計(jì)算機(jī)自動(dòng)完成重復(fù)性工作Chapter4·ControlStructures程序設(shè)計(jì)的三大基本結(jié)構(gòu)C語(yǔ)言程序由順序、選擇、循環(huán)三大基本控制結(jié)構(gòu)組成。循環(huán)結(jié)構(gòu)是唯一能實(shí)現(xiàn)代碼重復(fù)執(zhí)行的結(jié)構(gòu),它使程序能夠高效處理批量數(shù)據(jù)和迭代計(jì)算任務(wù),是編寫實(shí)用程序不可或缺的核心能力。Sequential順序結(jié)構(gòu)代碼按書寫順序從上到下依次執(zhí)行,每條語(yǔ)句只執(zhí)行一次。這是程序最基礎(chǔ)的執(zhí)行方式,適用于簡(jiǎn)單的線性處理流程,如變量賦值、數(shù)據(jù)輸入輸出等操作。線性執(zhí)行語(yǔ)句A→語(yǔ)句B→語(yǔ)句C,依次推進(jìn)Selection選擇結(jié)構(gòu)根據(jù)條件表達(dá)式的真假?zèng)Q定執(zhí)行哪個(gè)分支,包括if-else語(yǔ)句和switch-case語(yǔ)句。適用于需要判斷的場(chǎng)景,讓程序具備決策能力,根據(jù)不同情況采取不同行動(dòng)。條件分支條件判斷→真分支/假分支,二選一Iteration循環(huán)結(jié)構(gòu)在滿足條件時(shí)反復(fù)執(zhí)行某段代碼,直到條件不滿足才退出。包括for、while、do-while三種形式,是處理批量數(shù)據(jù)和迭代計(jì)算的核心手段,大幅提升代碼效率。迭代計(jì)算條件滿足→循環(huán)體執(zhí)行→再次判斷Chapter04·循環(huán)結(jié)構(gòu)為什么需要循環(huán)?當(dāng)程序需要重復(fù)執(zhí)行相同或相似的操作時(shí),逐條編寫會(huì)導(dǎo)致代碼冗長(zhǎng)且難以維護(hù)。循環(huán)結(jié)構(gòu)通過條件控制實(shí)現(xiàn)代碼復(fù)用,將成千上萬(wàn)次重復(fù)操作濃縮為幾行代碼,極大提升編程效率和程序可維護(hù)性。計(jì)算求和計(jì)算1+2+3+...+100的和:不用循環(huán)需寫100個(gè)加法表達(dá)式,用循環(huán)僅需4行代碼即可完成。4行代碼格式化報(bào)表打印1000行格式化報(bào)表:逐行編寫不現(xiàn)實(shí),循環(huán)可配合變量自動(dòng)遞增行號(hào)和內(nèi)容。1000行遍歷查找遍歷數(shù)組查找目標(biāo)元素:數(shù)據(jù)量可達(dá)數(shù)萬(wàn)條,循環(huán)讓逐一檢查變得簡(jiǎn)潔高效。數(shù)萬(wàn)條輸入驗(yàn)證用戶輸入驗(yàn)證:需反復(fù)提示直到輸入合法為止,do-while循環(huán)天然適配這類交互場(chǎng)景。do-whileChapter4·LoopStructure循環(huán)結(jié)構(gòu)的四大核心要素任何循環(huán)結(jié)構(gòu)都由循環(huán)變量、循環(huán)條件、循環(huán)體和變量更新四個(gè)要素組成。缺少任何一個(gè)都可能導(dǎo)致邏輯錯(cuò)誤或死循環(huán),理解這四要素是掌握所有循環(huán)語(yǔ)句的通用鑰匙。循環(huán)變量記錄當(dāng)前循環(huán)狀態(tài),如i從初始值開始變化,是控制循環(huán)進(jìn)程的基準(zhǔn)。i=0循環(huán)條件決定循環(huán)是否繼續(xù)執(zhí)行——結(jié)果為真(非0)時(shí)進(jìn)入循環(huán)體,為假(0)時(shí)跳出循環(huán)。i≤100循環(huán)體反復(fù)執(zhí)行的代碼塊,可包含任意合法的C語(yǔ)句,包括其他循環(huán)和條件判斷。{...}變量更新每次循環(huán)后必須更新循環(huán)變量,否則條件永遠(yuǎn)為真將導(dǎo)致無(wú)限循環(huán)(死循環(huán))。i++Chapter04·LoopStructureC語(yǔ)言的三種循環(huán)語(yǔ)句C語(yǔ)言提供while、do-while、for三種循環(huán)語(yǔ)句,核心區(qū)別在于條件判斷的時(shí)機(jī)和語(yǔ)法結(jié)構(gòu)的緊湊程度。三者可以互相替代,但在不同場(chǎng)景下各有最佳適用性,選擇合適的循環(huán)能讓代碼更清晰、更高效。WHILE先判斷條件后執(zhí)行循環(huán)體,適合循環(huán)次數(shù)不確定、需要根據(jù)運(yùn)行時(shí)狀態(tài)決定是否繼續(xù)的場(chǎng)景DO-WHILE先執(zhí)行一次循環(huán)體再判斷條件,保證循環(huán)體至少執(zhí)行一次,適合用戶輸入驗(yàn)證等交互場(chǎng)景FOR初始化、條件判斷、變量更新集中在一行,結(jié)構(gòu)最清晰緊湊,是已知循環(huán)次數(shù)時(shí)的首選方案NESTING三種循環(huán)可以互相嵌套使用,也可以與if-else等選擇結(jié)構(gòu)組合,構(gòu)建復(fù)雜的程序邏輯大學(xué)生編程學(xué)習(xí)課堂實(shí)景CHAPTER02while循環(huán)語(yǔ)句最基礎(chǔ)的循環(huán)形式——先判斷條件,后執(zhí)行循環(huán)體C語(yǔ)言程序設(shè)計(jì)·第4章循環(huán)結(jié)構(gòu)while循環(huán)的語(yǔ)法與執(zhí)行流程while循環(huán)采用"先判斷后執(zhí)行"的機(jī)制,條件表達(dá)式為真時(shí)執(zhí)行循環(huán)體,為假時(shí)跳出循環(huán)。這種設(shè)計(jì)意味著循環(huán)體可能一次都不執(zhí)行,適用于循環(huán)次數(shù)不確定且可能無(wú)需執(zhí)行的場(chǎng)景。語(yǔ)法格式基本格式while(條件表達(dá)式){循環(huán)體語(yǔ)句;},條件可以是關(guān)系、邏輯或數(shù)值表達(dá)式while(expr)語(yǔ)法格式真假判定非0值為真,執(zhí)行循環(huán)體;結(jié)果為0視為假,跳出循環(huán)執(zhí)行后續(xù)代碼非0=真語(yǔ)法格式大括號(hào)規(guī)則單條語(yǔ)句可省略{},多條語(yǔ)句必須用大括號(hào)包裹,否則僅首條在循環(huán)內(nèi){...}執(zhí)行流程三步流程①計(jì)算條件→②為真則執(zhí)行循環(huán)體并返回①→③為假則跳出循環(huán)Judge→Execute→Loop執(zhí)行流程核心特點(diǎn)先判斷后執(zhí)行,初始條件不滿足時(shí)可能一次都不執(zhí)行,與do-while有本質(zhì)區(qū)別先判斷后執(zhí)行Chapter4·WhileLoop案例:用while循環(huán)計(jì)算1到100的和通過累加求和案例展示while循環(huán)的完整編程流程:定義循環(huán)變量和累加器→設(shè)置循環(huán)條件→在循環(huán)體中累加并更新變量→輸出結(jié)果。這是循環(huán)編程的基礎(chǔ)模板,后續(xù)復(fù)雜問題都基于此模式擴(kuò)展。01定義循環(huán)變量i=1和累加器sum=0,while條件為i<=100,循環(huán)體執(zhí)行sum+=i和i++兩個(gè)操作i=1,sum=0初始化02第1輪:i=1滿足條件,sum=0+1=1,i變?yōu)?。第2輪:sum=1+2=3,i變?yōu)?。如此反復(fù)直到i=101×100循環(huán)次數(shù)03當(dāng)i=101時(shí)條件i<=100為假,循環(huán)結(jié)束,此時(shí)sum=5050。共執(zhí)行了100次循環(huán)體5050最終結(jié)果04關(guān)鍵易錯(cuò)點(diǎn):忘記寫i++會(huì)導(dǎo)致死循環(huán);sum初始值不為0會(huì)導(dǎo)致結(jié)果偏大;條件寫錯(cuò)會(huì)多算或少算i++·sum=0·條件邊界Chapter4·LoopStructurewhile循環(huán)常見錯(cuò)誤與注意事項(xiàng)while循環(huán)編程中最常見的三類錯(cuò)誤是死循環(huán)、循環(huán)體范圍錯(cuò)誤和條件表達(dá)式邏輯錯(cuò)誤。這些錯(cuò)誤編譯器無(wú)法檢測(cè),需要程序員養(yǎng)成良好的編碼習(xí)慣。致命錯(cuò)誤·死循環(huán)循環(huán)變量更新遺漏循環(huán)體中遺漏循環(huán)變量更新(如忘記i++),條件永遠(yuǎn)為真導(dǎo)致程序無(wú)限運(yùn)行,只能強(qiáng)制終止。i++致命錯(cuò)誤·死循環(huán)條件表達(dá)式邏輯錯(cuò)誤條件表達(dá)式邏輯錯(cuò)誤(如i<=100寫成i>=100但i初始為1),也可能造成意外死循環(huán)或一次不執(zhí)行。i<=100編碼規(guī)范建議始終使用大括號(hào)即使循環(huán)體只有一條語(yǔ)句也建議使用大括號(hào){},防止后續(xù)添加語(yǔ)句時(shí)忘記擴(kuò)展循環(huán)范圍。{}編碼規(guī)范建議變量初始化規(guī)范循環(huán)變量應(yīng)在循環(huán)前明確初始化,避免使用未賦值的變量作為條件判斷依據(jù)。inti=0CHAPTER04·LOOP進(jìn)階案例:不確定次數(shù)的while循環(huán)while循環(huán)的核心優(yōu)勢(shì)在于處理循環(huán)次數(shù)不確定的場(chǎng)景。通過"哨兵值"機(jī)制(如輸入0結(jié)束),可以讓程序在運(yùn)行時(shí)動(dòng)態(tài)決定何時(shí)終止循環(huán),這是for循環(huán)難以優(yōu)雅實(shí)現(xiàn)的典型應(yīng)用場(chǎng)景。01連續(xù)求和場(chǎng)景連續(xù)讀取用戶輸入的整數(shù)并求和,輸入0時(shí)結(jié)束。循環(huán)次數(shù)取決于用戶行為,編寫時(shí)無(wú)法預(yù)知具體迭代次數(shù)。02實(shí)現(xiàn)方式先用scanf讀取第一個(gè)數(shù),while條件為num!=0,循環(huán)體內(nèi)累加并讀取下一個(gè)數(shù)。結(jié)構(gòu)清晰,邏輯緊湊。03哨兵值模式用特殊值(如0、-1、EOF)作為循環(huán)終止信號(hào),廣泛用于輸入處理和文件讀取,是控制循環(huán)終止的經(jīng)典設(shè)計(jì)模式。04與for循環(huán)對(duì)比此場(chǎng)景若用for循環(huán)需將初始化和更新分散在多處,代碼可讀性明顯不如while循環(huán)集中表達(dá)的優(yōu)勢(shì)。CHAPTER03do-while循環(huán)語(yǔ)句先執(zhí)行后判斷——保證循環(huán)體至少執(zhí)行一次的循環(huán)結(jié)構(gòu)SYNTAX&EXECUTIONFLOWdo-while循環(huán)的語(yǔ)法與執(zhí)行流程do-while循環(huán)采用"先執(zhí)行后判斷"的機(jī)制,循環(huán)體至少執(zhí)行一次,然后再評(píng)估條件決定是否繼續(xù)。語(yǔ)法上需注意while后的分號(hào)不可省略,這是與while循環(huán)在書寫上的重要區(qū)別。語(yǔ)法格式do{循環(huán)體語(yǔ)句;}while(條件表達(dá)式);01do{}while();基本格式為do{}while();,注意末尾分號(hào)是語(yǔ)法必需,遺漏將導(dǎo)致編譯錯(cuò)誤02循環(huán)體結(jié)構(gòu)與其他循環(huán)一致,單條語(yǔ)句可省略大括號(hào)但建議保留,多條語(yǔ)句必須用大括號(hào)包裹執(zhí)行流程①無(wú)條件執(zhí)行循環(huán)體→②計(jì)算條件表達(dá)式→③真→返回①/假→跳出01第一步:無(wú)條件執(zhí)行循環(huán)體。第二步:計(jì)算條件表達(dá)式。第三步:若為真返回第一步,若為假則跳出循環(huán)02核心特點(diǎn)是先執(zhí)行后判斷,無(wú)論條件最初是否滿足,循環(huán)體保證至少執(zhí)行一次,這是與while的本質(zhì)區(qū)別CHAPTER04·LOOPSTRUCTUREwhile與do-while的關(guān)鍵對(duì)比while和do-while的核心差異在于條件判斷的時(shí)機(jī):while先判斷后執(zhí)行(可能0次),do-while先執(zhí)行后判斷(至少1次)。while與do-while對(duì)比分析對(duì)比維度while循環(huán)do-while循環(huán)判斷時(shí)機(jī)先判斷條件,后執(zhí)行循環(huán)體先執(zhí)行循環(huán)體,后判斷條件最少執(zhí)行次數(shù)0次(初始條件為假時(shí)不執(zhí)行)1次(保證至少執(zhí)行一次)末尾分號(hào)不需要(while(){}無(wú)分號(hào))必須有(while();末尾加分號(hào))典型場(chǎng)景不確定次數(shù)、可能無(wú)需執(zhí)行輸入驗(yàn)證、菜單顯示等至少一次while適合可能不執(zhí)行的場(chǎng)景,do-while適合保證至少執(zhí)行一次的交互場(chǎng)景CASESTUDY案例:用do-while實(shí)現(xiàn)輸入驗(yàn)證用戶輸入驗(yàn)證是do-while循環(huán)的最佳應(yīng)用場(chǎng)景。程序必須先接收一次輸入再判斷是否合法,天然符合'先執(zhí)行后判斷'的邏輯,代碼比while實(shí)現(xiàn)更簡(jiǎn)潔、無(wú)重復(fù)代碼。場(chǎng)景要求用戶輸入1-100之間的成績(jī),輸入不合法時(shí)反復(fù)提示重新輸入,直到輸入正確為止實(shí)現(xiàn)do塊內(nèi)用printf提示+scanf讀取,while條件為score<1||score>100,不合法則繼續(xù)循環(huán)do-while優(yōu)勢(shì)無(wú)需在循環(huán)前額外寫一次scanf,代碼無(wú)重復(fù);while實(shí)現(xiàn)需在循環(huán)前和循環(huán)體內(nèi)各寫一次讀取擴(kuò)展應(yīng)用同樣的模式可用于菜單系統(tǒng)、密碼驗(yàn)證、數(shù)據(jù)格式校驗(yàn)等交互場(chǎng)景CODEEXAMPLEdo{printf("請(qǐng)輸入成績(jī)(1-100):");scanf("%d",&score);}while(score<1||score>100);printf("有效成績(jī):%d\n",score);do-while先執(zhí)行一次輸入,再判斷合法性,天然適配驗(yàn)證場(chǎng)景CHAPTER04for循環(huán)語(yǔ)句最緊湊、最常用的循環(huán)——初始化、判斷、更新一行搞定CHAPTER04·LOOPSTRUCTUREfor循環(huán)的語(yǔ)法結(jié)構(gòu)與三個(gè)表達(dá)式for循環(huán)將初始化、條件判斷和變量更新三個(gè)控制要素集中在for語(yǔ)句的一行內(nèi),結(jié)構(gòu)緊湊且邏輯清晰。三個(gè)表達(dá)式各司其職、分工明確,使循環(huán)的起始、終止和步長(zhǎng)一目了然,是最適合已知循環(huán)次數(shù)的循環(huán)語(yǔ)句。表達(dá)式1·初始化如inti=0,僅在循環(huán)開始時(shí)執(zhí)行一次,用于設(shè)置循環(huán)變量初值。可省略但分號(hào)不可省。init—執(zhí)行1次條件表達(dá)式·判斷如i<100,每次循環(huán)前評(píng)估,為真繼續(xù)、為假跳出。省略則視為恒真,需break退出。cond—每輪評(píng)估表達(dá)式2·更新如i++或i+=2,每次循環(huán)體執(zhí)行后自動(dòng)執(zhí)行,用于改變循環(huán)變量使循環(huán)趨向終止。update—每輪更新執(zhí)行流程五步循環(huán)流程①執(zhí)行表達(dá)式1→②判斷條件→③若為真執(zhí)行循環(huán)體→④執(zhí)行表達(dá)式2→⑤返回步驟②繼續(xù)判斷與while等價(jià)關(guān)系for(e1;cond;e2){body}等價(jià)于e1;while(cond){body;e2;},但for結(jié)構(gòu)更緊湊直觀。CHAPTER04·LOOP案例:用for循環(huán)計(jì)算1到100的和同一個(gè)累加求和問題,for循環(huán)版本比while版本更簡(jiǎn)潔:循環(huán)控制邏輯集中在一行for語(yǔ)句中,循環(huán)體內(nèi)只保留核心業(yè)務(wù)邏輯,代碼可讀性和可維護(hù)性顯著提升。CORECODEfor(i=1;i<=100;i++)sum+=i;一行for語(yǔ)句完成初始化、條件判斷、步長(zhǎng)更新與循環(huán)控制,循環(huán)體僅保留核心累加操作。01一行完成全部控制—for(i=1;i<=100;i++)sum+=i;將初始化、條件判斷、變量更新和累加集中于一行,代碼極其精簡(jiǎn)。1行02對(duì)比while版本—while需在循環(huán)前初始化i=1、循環(huán)體內(nèi)寫i++,控制邏輯分散三處;for集中一處管理。3→103可讀性優(yōu)勢(shì)—看到for(i=1;i<=100;i++)即可知循環(huán)從1到100共100次,無(wú)需翻閱其他代碼段。100次04靈活變體—求偶數(shù)和改為for(i=2;i<=100;i+=2),僅調(diào)整步長(zhǎng)即可完成需求變更,體現(xiàn)for循環(huán)靈活性。i+=2Chapter04·循環(huán)結(jié)構(gòu)for循環(huán)的靈活用法與表達(dá)式省略for循環(huán)的三個(gè)表達(dá)式均可省略(分號(hào)不可省),提供了極大的編程靈活性。但省略會(huì)降低代碼可讀性,應(yīng)在確實(shí)需要時(shí)才使用,初學(xué)者建議保持完整的三表達(dá)式寫法以養(yǎng)成良好習(xí)慣。表達(dá)式省略技巧三個(gè)表達(dá)式均可獨(dú)立省略,分號(hào)必須保留01省略表達(dá)式1—變量在循環(huán)外初始化,如inti=1;for(;i<=100;i++),分號(hào)必須保留02省略表達(dá)式2—更新在循環(huán)體內(nèi)完成,如for(i=1;i<=100;){sum+=i;i++;}03省略條件表達(dá)式—構(gòu)成無(wú)限循環(huán)for(;;),必須在循環(huán)體內(nèi)用break退出,等價(jià)于while(1)高級(jí)用法多變量控制與遞減遍歷01逗號(hào)表達(dá)式控制多變量—for(i=1,j=100;i<j;i++,j--),同時(shí)操作兩個(gè)循環(huán)變量向中間收斂02循環(huán)變量遞減—for(i=100;i>=1;i--),從大到小遍歷,適用于倒序輸出或遞減計(jì)數(shù)場(chǎng)景ClassicCasesfor循環(huán)經(jīng)典案例:階乘與字符遍歷for循環(huán)不僅適用于數(shù)值累加,還可用于階乘計(jì)算(累乘模式)和字符遍歷(利用ASCII碼遞增)。掌握不同數(shù)據(jù)類型的循環(huán)操作,能大幅擴(kuò)展for循環(huán)的應(yīng)用范圍。階乘計(jì)算n!=1×2×3×…×n,用for(i=1;i<=n;i++)result*=i實(shí)現(xiàn),注意result初始值必須為1而非0??累乘模式與累加不同,初始值設(shè)為1才能保證乘法結(jié)果正確階乘增長(zhǎng)極快,13!已超出int范圍,實(shí)際編程中需使用longlong或浮點(diǎn)類型避免整數(shù)溢出??階乘結(jié)果呈指數(shù)級(jí)增長(zhǎng),選擇合適的數(shù)據(jù)類型至關(guān)重要字符遍歷利用字符的ASCII碼特性,for(ch='A';ch<='Z';ch++)可依次打印所有大寫字母,ch++自動(dòng)跳到下一個(gè)字符??字符在內(nèi)存中以ASCII碼存儲(chǔ),支持自增運(yùn)算實(shí)現(xiàn)連續(xù)遍歷擴(kuò)展應(yīng)用:統(tǒng)計(jì)字符串中各類字符數(shù)量、大小寫轉(zhuǎn)換、凱撒密碼加密等,均可通過對(duì)字符做for循環(huán)實(shí)現(xiàn)??字符遍歷是文本處理的基礎(chǔ),廣泛應(yīng)用于加密解密與格式轉(zhuǎn)換Chapter04·LoopStructures三種循環(huán)語(yǔ)句全面對(duì)比while、do-while、for三種循環(huán)功能等價(jià)但各有側(cè)重:for適合已知次數(shù)、while適合未知次數(shù)、do-while適合至少執(zhí)行一次。選擇循環(huán)類型的核心原則是讓代碼邏輯最自然、可讀性最高。三種循環(huán)語(yǔ)句對(duì)比總覽對(duì)比維度whiledo-whilefor判斷時(shí)機(jī)先判斷后執(zhí)行先執(zhí)行后判斷先判斷后執(zhí)行最少執(zhí)行0次1次0次初始化位置循環(huán)外部循環(huán)外部表達(dá)式1(循環(huán)內(nèi))更新位置循環(huán)體內(nèi)部循環(huán)體內(nèi)部表達(dá)式2(自動(dòng))最佳場(chǎng)景不確定次數(shù)至少執(zhí)行一次已知次數(shù)三種循環(huán)功能等價(jià),選擇依據(jù)是業(yè)務(wù)邏輯的自然表達(dá)和代碼可讀性CHAPTER05多重循環(huán)與嵌套應(yīng)用循環(huán)套循環(huán)——解決多層重復(fù)執(zhí)行問題的利器Chapter04·Loop多重循環(huán)的概念與執(zhí)行機(jī)制多重循環(huán)通過在外層循環(huán)體內(nèi)嵌套內(nèi)層循環(huán)實(shí)現(xiàn)多層重復(fù)執(zhí)行。外層每執(zhí)行一輪,內(nèi)層完整執(zhí)行一遍,總執(zhí)行次數(shù)為各層循環(huán)次數(shù)的乘積。理解這一機(jī)制是分析程序性能和避免性能陷阱的基礎(chǔ)。層級(jí)控制外層循環(huán)控制"行"或"大循環(huán)",內(nèi)層循環(huán)控制"列"或"小循環(huán)",兩者通過獨(dú)立的循環(huán)變量分別管理。行×列乘法原理外層m次×內(nèi)層n次=循環(huán)體總執(zhí)行m×n次,如10×10的雙重循環(huán)共執(zhí)行100次。10×10=100三層嵌套外層每輪→中層完整一遍→內(nèi)層完整一遍,總次數(shù)為三層之積,需謹(jǐn)慎使用。m×n×p性能警示三重循環(huán)各100次即執(zhí)行100萬(wàn)次,嵌套層數(shù)過多會(huì)導(dǎo)致程序運(yùn)行極慢,應(yīng)盡量?jī)?yōu)化算法減少嵌套。100萬(wàn)Chapter4·LoopStructure案例:用雙重循環(huán)打印直角三角形打印圖形是雙重循環(huán)的經(jīng)典應(yīng)用:外層循環(huán)控制行數(shù),內(nèi)層循環(huán)控制每行的字符數(shù)量。掌握"外層管行、內(nèi)層管列"的原則后,可以通過調(diào)整內(nèi)層循環(huán)的起止條件和打印字符來(lái)輸出各種幾何圖形。基礎(chǔ)雙重循環(huán)外層for(i=1;i<=5;i++)控制5行,內(nèi)層for(j=1;j<=i;j++)控制每行打印i個(gè)星號(hào),體現(xiàn)行列聯(lián)動(dòng)關(guān)系。i→row,j→col逐行執(zhí)行解析第1行i=1,內(nèi)層循環(huán)1次打印1個(gè)*;第3行i=3,循環(huán)3次打印3個(gè)*。每行結(jié)束后printf輸出換行符。*→**→***變體——倒三角外層for(i=5;i>=1;i--),內(nèi)層for(j=1;j<=i;j++)。行數(shù)遞減則每行星號(hào)遞減,輸出倒置直角三角形。i--遞減變體——右對(duì)齊星號(hào)前先打印(5-i)個(gè)空格,再打印i個(gè)星號(hào),需要兩個(gè)并列的內(nèi)層循環(huán)分別控制空格與字符。空格+星號(hào)案例·雙重循環(huán)案例:用雙重循環(huán)打印九九乘法表九九乘法表是雙重循環(huán)的經(jīng)典實(shí)戰(zhàn)案例,外層控制被乘數(shù)(行),內(nèi)層控制乘數(shù)(列),內(nèi)層條件j<=i確保輸出下三角形式。multiplication_table.c1for(i=1;i<=9;i++){2for(j=1;j<=i;j++)3printf("%d×%d=%-4d",4j,i,i*j);5printf("\n");6}OUTPUT1×1=11×2=22×2=41×3=32×3=63×3=9?1×9=92×9=18?9×9=8101雙層循環(huán)結(jié)構(gòu)i=1→9j=1→i外層i=1→9控制行數(shù),內(nèi)層j=1→i控制每行算式數(shù)量,輸出下三角形式02格式化輸出%-4d%-4d左對(duì)齊占4位,保證各列算式結(jié)果對(duì)齊整齊美觀03換行與邊界\nj<=i每行結(jié)束打印\n,條件j<=i確保第i行只輸出i個(gè)算式04完整輸出1×1=19×9=81從1×1=1到9×9=81,共輸出45個(gè)算式45個(gè)算式LoopControlFlow循環(huán)控制語(yǔ)句:break與continuebreak和continue是循環(huán)體內(nèi)的兩個(gè)流程控制語(yǔ)句:break立即終止整個(gè)循環(huán),continue跳過當(dāng)前輪次進(jìn)入下一輪。它們讓循環(huán)的執(zhí)行流程更加靈活,但過度使用會(huì)降低代碼可讀性,應(yīng)適度使用。break語(yǔ)句01立即終止所在層循環(huán),跳出循環(huán)體執(zhí)行后續(xù)代碼。常用于搜索找到目標(biāo)后提前退出,避免無(wú)意義的繼續(xù)遍歷,提升程序執(zhí)行效率。02在嵌套循環(huán)中,break只能跳出它所在的那一層循環(huán),不能一次跳出多層,需配合標(biāo)志變量或多層break實(shí)現(xiàn)完全退出。終止循環(huán)continue語(yǔ)句01跳過當(dāng)前輪次循環(huán)體中剩余的語(yǔ)句,直接進(jìn)入下一輪循環(huán)的條件判斷(for循環(huán)會(huì)先執(zhí)行表達(dá)式2再判斷),保持循環(huán)繼續(xù)執(zhí)行。02典型應(yīng)用:過濾特定數(shù)據(jù),如遍歷數(shù)組時(shí)遇到負(fù)數(shù)用continue跳過,只處理非負(fù)數(shù),保持主邏輯清晰簡(jiǎn)潔。跳過本輪CaseStudy·LoopControl案例對(duì)比:break與continue的實(shí)際效果通過兩個(gè)對(duì)比案例直觀展示break和continue的區(qū)別:break在找到目標(biāo)后立即終止整個(gè)循環(huán)(提前退出),continue僅跳過當(dāng)前輪次繼續(xù)后續(xù)循環(huán)(部分跳過)。兩者適用場(chǎng)景截然不同。break案例:查找第一個(gè)7的倍數(shù)for(i=1;i<=10;i++){if(i%7==0)break;printf("%d",i);}判斷i%7==0時(shí)執(zhí)行break,輸出7后循環(huán)立即終止,8、9、10不再檢查若不使用break,循環(huán)會(huì)遍歷完所有10個(gè)數(shù),浪費(fèi)計(jì)算資源,在大規(guī)模數(shù)據(jù)搜索中性能差異更顯著Output7(僅1個(gè)數(shù))continue案例:跳過3的倍數(shù)for(i=1;i<=10;i++){if(i%3==0)continue;printf("%d",i);}判斷i%3==0時(shí)執(zhí)行continue,跳過printf,輸出12457810共7個(gè)數(shù)循環(huán)仍完整執(zhí)行10輪,只是3、6、9這三輪跳過了打印操作,與break的"徹底終止"形成鮮明對(duì)比Output12457810(共7個(gè)數(shù))Chapter06綜合案例與實(shí)戰(zhàn)演練融會(huì)貫通——用循環(huán)結(jié)構(gòu)解決真實(shí)編程問題Chapter4·LoopStructures綜合案例:判斷素?cái)?shù)判斷素?cái)?shù)是循環(huán)與選擇結(jié)構(gòu)綜合應(yīng)用的經(jīng)典案例。核心算法是用for循環(huán)逐一測(cè)試可能的因子,配合break提前退出。通過優(yōu)化循環(huán)范圍(從2到根號(hào)n),可將時(shí)間復(fù)雜度從O(n)降至O(√n)。基本算法for(i=2;i<n;i++)逐一測(cè)試n%i==0,若整除則break標(biāo)記非素?cái)?shù),循環(huán)結(jié)束后根據(jù)標(biāo)記輸出結(jié)果。這是最基礎(chǔ)的素?cái)?shù)判斷實(shí)現(xiàn)方式,邏輯清晰易于理解。for+break循環(huán)優(yōu)化循環(huán)范圍縮小到i≤√n,因?yàn)槿鬾有大于√n的因子必有小于√n的配對(duì)因子,減少約90%計(jì)算量。這是算法優(yōu)化的關(guān)鍵技巧。O(√n)綜合知識(shí)點(diǎn)for循環(huán)控制遍歷范圍、if判斷整除條件、break提前退出、標(biāo)志變量記錄判斷結(jié)果。四大核心概念在此案例中完整融合。4Concepts循環(huán)嵌套擴(kuò)展外層循環(huán)遍歷2到100,內(nèi)層用素?cái)?shù)判斷邏輯,可輸出100以內(nèi)所有素?cái)?shù),體現(xiàn)循環(huán)嵌套的實(shí)際價(jià)值。這是從單數(shù)判斷到批量處理的典型擴(kuò)展。2–100CASESTUDY綜合案例:Fibonacci數(shù)列Fibonacci數(shù)列(1,1,2,3,5,8...)是遞推計(jì)算的典型案例,每一項(xiàng)等于前兩項(xiàng)之和。用循環(huán)實(shí)現(xiàn)遞推是編程中的基礎(chǔ)模式,通過兩個(gè)變量滾動(dòng)更新實(shí)現(xiàn)鏈?zhǔn)揭蕾囉?jì)算,廣泛應(yīng)用于算法和數(shù)學(xué)建模。算法實(shí)現(xiàn)初始化a=1,b=1表示前兩項(xiàng),for循環(huán)從第3項(xiàng)開始,每次計(jì)算c=a+b后更新a=b,b=c實(shí)現(xiàn)滾動(dòng)遞推。這種雙變量交替更新的技巧避免了數(shù)組存儲(chǔ),空間復(fù)雜度僅為O(1)。輸出前20項(xiàng):11235813213455891442333776109871597258441816765拓展思考兔子繁殖問題:一對(duì)兔子每月生一對(duì)新兔,新兔兩個(gè)月后開始生育,第n月的兔子對(duì)數(shù)恰好是Fibonacci第n項(xiàng)。這一經(jīng)典問題最早由意大利數(shù)學(xué)家Fibonacci在《算盤書》中提出,生動(dòng)展示了數(shù)列的自然起源。性能對(duì)比:遞歸實(shí)現(xiàn)Fibonacci有大量重復(fù)計(jì)算(指數(shù)級(jí)),循環(huán)實(shí)現(xiàn)只需O(n)線性時(shí)間,效率差距巨大。對(duì)于第50項(xiàng),遞歸需要約10^10次運(yùn)算,而循環(huán)僅需50次迭代。CHAPTER4·EXHAUSTIVESEARCH綜合案例:水仙花數(shù)(窮舉搜索)水仙花數(shù)(各位數(shù)字立方和等于自身的三位數(shù))是窮舉搜索的經(jīng)典案例。通過for循環(huán)遍歷所有可能值,配合數(shù)學(xué)運(yùn)算拆解各位數(shù)字并驗(yàn)證條件,展示了計(jì)算機(jī)在大量重復(fù)計(jì)算中的優(yōu)勢(shì)。01窮舉策略for(n=100;n<=999;n++)遍歷所有三位數(shù),對(duì)每個(gè)n拆解:百位a=n/100、十位b=n/10%10、個(gè)位c=n%10100→99902驗(yàn)證條件若a3+b3+c3==n則輸出結(jié)果,900個(gè)候選數(shù)全部逐一檢驗(yàn),計(jì)算機(jī)瞬間完成全部運(yùn)算a3+b3+c3=n03搜索結(jié)果100–999范圍內(nèi)僅有4個(gè)水仙花數(shù),驗(yàn)證了窮舉法能找到所有解且不遺漏任何一個(gè)153·370·371·40704思維延伸窮舉法效率非最高,但在解空間有限時(shí)最簡(jiǎn)單可靠,是編程解決問題的基本策略之一基本
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年內(nèi)分泌科老年糖尿病精細(xì)化護(hù)理查房
- 2026 年血液科粒細(xì)胞缺乏患者保護(hù)性護(hù)理課件
- 2026年產(chǎn)科妊娠期糖尿病聯(lián)合護(hù)理查房
- 2018 液壓挖掘機(jī) 技術(shù)條件
- 土建專業(yè)試題及精準(zhǔn)答案
- 一建水利考試經(jīng)典試題及答案
- 2026年度重慶市農(nóng)業(yè)技術(shù)人員職稱考試專業(yè)知識(shí)歷年真題整-理提分卷
- 2026年保育員同工同酬考試試題及答案解析
- 2026最-新六年級(jí)下數(shù)學(xué)小升初拔尖測(cè)試卷西師版完整版含答案
- 2026年高職單招現(xiàn)代農(nóng)業(yè)技術(shù)解析試卷
- 2026年出入境輔警理論考試試卷(含答案)
- 2026江蘇徐州市市級(jí)機(jī)關(guān)印刷廠有限公司招聘工作人員2人筆試題庫(kù)附答案詳解(基礎(chǔ)題)
- 2025年教師選調(diào)教育綜合知識(shí)真題及答案
- 2025-2030年智能農(nóng)業(yè)灌溉系統(tǒng)行業(yè)跨境出海戰(zhàn)略分析研究報(bào)告
- 第一輪-【黃磷企業(yè)檢查表】-檢查表
- 電動(dòng)汽車動(dòng)力性能計(jì)算表
- 喬木支撐專項(xiàng)施工方案(3篇)
- 數(shù)字化解決方案設(shè)計(jì)師職業(yè)資格認(rèn)定考試復(fù)習(xí)題庫(kù)(附答案)
- 商務(wù)數(shù)據(jù)分析師知識(shí)考試復(fù)習(xí)題庫(kù)(附答案)
- 2026中國(guó)電子簽名法律效力與行業(yè)發(fā)展報(bào)告
- 腦梗塞中醫(yī)護(hù)理要點(diǎn)與技巧
評(píng)論
0/150
提交評(píng)論