版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語言第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)掌握while、do-while、for三大循環(huán)語句,構(gòu)建高效程序邏輯Contents本章知識(shí)導(dǎo)航C語言第5章·循環(huán)結(jié)構(gòu)程序設(shè)計(jì)01循環(huán)的本質(zhì)與三要素02while循環(huán)語句03do-while循環(huán)語句04for循環(huán)語句05循環(huán)嵌套與控制語句06綜合應(yīng)用案例CHAPTER01循環(huán)的本質(zhì)與三要素從重復(fù)執(zhí)行的需求出發(fā),理解循環(huán)結(jié)構(gòu)的核心思想與基本組成Chapter05·LoopStructure問題引入:為什么需要循環(huán)?循環(huán)的本質(zhì)是讓相同代碼不必重復(fù)書寫,通過循環(huán)結(jié)構(gòu)實(shí)現(xiàn)自動(dòng)重復(fù)執(zhí)行,從而大幅提高程序編寫效率并減少源代碼存儲(chǔ)空間。01無循環(huán)寫法:打印10行星號(hào)需寫10條printf語句,代碼冗長(zhǎng)且難以維護(hù),修改行數(shù)需逐條增刪。10條語句02有循環(huán)寫法:for(inti=1;i<=10;i++)printf("************\n"),僅用一行循環(huán)即可等價(jià)完成。3行代碼03循環(huán)的核心價(jià)值:將重復(fù)性操作交由計(jì)算機(jī)自動(dòng)執(zhí)行,程序員只需關(guān)注邏輯本身而非機(jī)械重復(fù)。自動(dòng)執(zhí)行04現(xiàn)實(shí)場(chǎng)景類比:批量處理學(xué)生成績(jī)、遍歷數(shù)組元素、文件逐行讀取等都需要循環(huán)來驅(qū)動(dòng)。批量驅(qū)動(dòng)CHAPTER05·LOOPSTRUCTURE循環(huán)結(jié)構(gòu)三要素所有循環(huán)結(jié)構(gòu)都圍繞三個(gè)核心要素構(gòu)建:循環(huán)變量初值決定從哪里開始,循環(huán)控制條件表達(dá)式?jīng)Q定何時(shí)繼續(xù),循環(huán)體決定每次重復(fù)做什么。無論while、do-while還是for語句,本質(zhì)都是三要素的不同語法表達(dá)形式。循環(huán)變量初值循環(huán)從何時(shí)開始執(zhí)行,如i=1設(shè)定計(jì)數(shù)器起始位置,是整個(gè)循環(huán)的起點(diǎn)。i=1循環(huán)控制條件滿足什么條件時(shí)繼續(xù)循環(huán),如i<=10判斷計(jì)數(shù)器是否越界,為假時(shí)退出。i<=10循環(huán)體每次循環(huán)反復(fù)執(zhí)行的語句塊,如printf和i++,是循環(huán)真正要完成的工作。printf·i++三要素缺一不可缺少初值則無法啟動(dòng),缺少條件則死循環(huán),缺少循環(huán)體則循環(huán)毫無意義。3/3CHAPTER02while循環(huán)語句先判斷后執(zhí)行的當(dāng)型循環(huán),掌握其語法結(jié)構(gòu)與執(zhí)行流程CHAPTER05·LOOPCONTROLwhile語句的語法與執(zhí)行流程while循環(huán)是典型的"當(dāng)型循環(huán)",先判斷表達(dá)式真?zhèn)卧贈(zèng)Q定是否執(zhí)行循環(huán)體,條件為真則執(zhí)行、為假則退出。01語法形式:while(表達(dá)式){循環(huán)體},表達(dá)式為循環(huán)控制條件,非0時(shí)為真繼續(xù)執(zhí)行,0時(shí)為假退出循環(huán)02執(zhí)行流程:先判斷表達(dá)式→為真執(zhí)行循環(huán)體→再次判斷→為真再執(zhí)行→直到表達(dá)式為假才退出循環(huán)03當(dāng)型特征:若初始條件即為假(如i=5時(shí)判斷i<5),循環(huán)體一次也不會(huì)執(zhí)行,程序直接跳過while塊04關(guān)鍵注意:while(表達(dá)式)后不能加分號(hào),否則等同于空循環(huán)體,可能導(dǎo)致死循環(huán)或邏輯錯(cuò)誤EXECUTIONFLOW程序執(zhí)行到while判斷表達(dá)式TRUE≠0執(zhí)行循環(huán)體↑回到判斷FALSE=0退出循環(huán)CASESTUDY·WHILELOOP案例:while循環(huán)求1到100的累加和通過初始化變量、條件判斷和累加操作,演示while循環(huán)的經(jīng)典應(yīng)用場(chǎng)景Python代碼示例#初始化變量total=0i=1#while循環(huán)累加while
i<=100:total+=ii+=1print("1到100的累加和為:",total)執(zhí)行結(jié)果1到100的累加和為:5050核心要點(diǎn)total=0i=1初始化:設(shè)置累加器total=0和計(jì)數(shù)器i=1i<=100條件判斷:循環(huán)繼續(xù)的條件是i<=100循環(huán)體:每次迭代執(zhí)行累加和計(jì)數(shù)器自增i終止條件:當(dāng)i變?yōu)?01時(shí)循環(huán)結(jié)束執(zhí)行流程圖開始total=0,i=1i<=100?NYtotal+=i;i++返回條件判斷輸出total=5050結(jié)束數(shù)學(xué)驗(yàn)證S=n(n+1)/2=100×101/2=50501初始化變量2條件判斷3執(zhí)行累加4輸出結(jié)果COMMONPITFALLSwhile循環(huán)的注意事項(xiàng)與常見錯(cuò)誤while循環(huán)最常見的三類錯(cuò)誤包括:多語句循環(huán)體缺少花括號(hào)導(dǎo)致只控制一條語句、缺少使循環(huán)趨于結(jié)束的語句造成死循環(huán)、以及while(表達(dá)式)后誤加分號(hào)形成空循環(huán)體。花括號(hào)陷阱循環(huán)體含多條語句時(shí)必須用{}括起,否則while僅控制第一條語句,后續(xù)語句變成循環(huán)外的獨(dú)立代碼,造成邏輯錯(cuò)誤且難以排查。{}REQUIRED死循環(huán)根源循環(huán)體內(nèi)必須包含使條件趨于為假的語句(如i++),若遺漏則條件永遠(yuǎn)為真,程序陷入無限循環(huán),導(dǎo)致系統(tǒng)資源耗盡或程序崩潰。i++MISSING分號(hào)誤用while(i<=100);末尾分號(hào)等同于空循環(huán)體,后續(xù)花括號(hào)代碼塊與while無關(guān),導(dǎo)致邏輯混亂,程序行為與預(yù)期完全不符。EMPTYBODY調(diào)試建議遇到程序無響應(yīng)時(shí)優(yōu)先檢查循環(huán)條件是否正確更新,可用printf在循環(huán)體內(nèi)輸出變量值進(jìn)行跟蹤,快速定位問題所在。PRINTFTRACKCHAPTER03do-while循環(huán)語句先執(zhí)行后判斷的直到型循環(huán),至少執(zhí)行一次循環(huán)體的特殊結(jié)構(gòu)SYNTAX&FLOWdo-while語句的語法與執(zhí)行流程do-while循環(huán)屬于"直到型循環(huán)",先無條件執(zhí)行一次循環(huán)體再判斷條件,為真則繼續(xù)、為假則退出。與while最大的區(qū)別在于:do-while保證循環(huán)體至少執(zhí)行一次,即使首次判斷條件就為假也不會(huì)跳過,這一特性在輸入驗(yàn)證等場(chǎng)景中非常實(shí)用。01語法形式do{循環(huán)體}while(表達(dá)式);—注意while后的分號(hào)是語句結(jié)束標(biāo)志,不可省略02執(zhí)行流程先執(zhí)行循環(huán)體→判斷表達(dá)式→為真則回到循環(huán)體→為假則退出,至少執(zhí)行一次循環(huán)體03與while的核心差異while先判斷后執(zhí)行(可能0次),do-while先執(zhí)行后判斷(至少1次)04典型應(yīng)用場(chǎng)景用戶輸入驗(yàn)證、菜單選擇等"至少需要執(zhí)行一次,再根據(jù)反饋決定是否重復(fù)"的交互場(chǎng)景CHAPTER05·LOOPSTRUCTURE案例:do-while統(tǒng)計(jì)學(xué)生成績(jī)利用do-while循環(huán)錄入10名學(xué)生成績(jī)并計(jì)算總分和平均分,核心邏輯是在循環(huán)體內(nèi)完成scanf讀取和sum累加,通過i++控制錄入次數(shù)。01初始化設(shè)置i=1作為錄入計(jì)數(shù)器,sum=0作為總分累加器,ave用于存儲(chǔ)最終的平均分結(jié)果i=1,sum=002循環(huán)體邏輯scanf讀取單個(gè)學(xué)生成績(jī)score,執(zhí)行sum=sum+score累加,i++推進(jìn)計(jì)數(shù)器至下一位學(xué)生sum+=score03條件控制while(i<=10)確保恰好錄入10名學(xué)生成績(jī),第10次錄入后i=11,條件為假退出循環(huán)i<=1004結(jié)果計(jì)算ave=sum/10.0(用10.0而非10,確保浮點(diǎn)除法避免整數(shù)截?cái)啵敵隹偡趾推骄謘um/10.0Chapter5·LoopStructureswhile與do-while對(duì)比分析while和do-while在邏輯上可以互相改寫,但執(zhí)行順序與最少執(zhí)行次數(shù)存在本質(zhì)差異。選擇哪種取決于業(yè)務(wù)需求。while(當(dāng)型循環(huán))執(zhí)行邏輯先判斷表達(dá)式真?zhèn)危瑸檎娌艌?zhí)行循環(huán)體,初始條件為假時(shí)循環(huán)體一次也不執(zhí)行語法while(表達(dá)式){循環(huán)體},while后無分號(hào),循環(huán)體多條語句需花括號(hào)適用場(chǎng)景已知初始狀態(tài)可能不滿足條件的累加、遍歷、搜索等確定性任務(wù)滿足條件才做·可能0次do-while(直到型循環(huán))執(zhí)行邏輯先無條件執(zhí)行一次循環(huán)體,再判斷表達(dá)式,為真繼續(xù)、為假退出,至少執(zhí)行一次語法do{循環(huán)體}while(表達(dá)式);注意末尾分號(hào)不可省略,這是語句結(jié)束標(biāo)志適用場(chǎng)景用戶輸入驗(yàn)證、菜單交互、密碼確認(rèn)等"至少執(zhí)行一次再根據(jù)結(jié)果決定"的交互任務(wù)至少做一次再?zèng)Q定·至少1次Chapter04for循環(huán)語句三要素濃縮于一行的萬能循環(huán),C語言中使用頻率最高的循環(huán)結(jié)構(gòu)Syntax&Executionfor語句的語法結(jié)構(gòu)與執(zhí)行流程for循環(huán)將三要素濃縮為三個(gè)表達(dá)式寫在同一行:表達(dá)式1設(shè)定初值(僅執(zhí)行一次),表達(dá)式2作為控制條件(每次循環(huán)前判斷),表達(dá)式3更新循環(huán)變量(每次循環(huán)體執(zhí)行后執(zhí)行)。這種緊湊結(jié)構(gòu)使循環(huán)邏輯一目了然,是C語言中最常用、最靈活的循環(huán)形式。01語法總覽for(表達(dá)式1;表達(dá)式2;表達(dá)式3){循環(huán)體},三個(gè)表達(dá)式用分號(hào)分隔,缺一不可。這是C語言中結(jié)構(gòu)最緊湊的循環(huán)語句,將初始化、條件判斷和變量更新整合在一行代碼中。語法模板for(;;)02初值如i=1,僅在循環(huán)開始前執(zhí)行一次,后續(xù)不再重復(fù)執(zhí)行。通常用于聲明循環(huán)變量并賦初始值,為整個(gè)循環(huán)過程奠定計(jì)數(shù)基礎(chǔ),是循環(huán)的起點(diǎn)設(shè)置。示例代碼i=103條件如i<=10,每次進(jìn)入循環(huán)體前先判斷,為真執(zhí)行、為假退出。這是循環(huán)的守門員,決定循環(huán)是否繼續(xù)執(zhí)行,條件表達(dá)式結(jié)果為0時(shí)循環(huán)終止。判斷條件i<=1004更新如i++,每次循環(huán)體執(zhí)行完畢后執(zhí)行,推動(dòng)循環(huán)變量向終止條件靠近。更新操作確保循環(huán)能夠漸進(jìn)收斂,避免陷入無限循環(huán),是循環(huán)進(jìn)度的推進(jìn)器。自增運(yùn)算i++Chapter5·LoopStructurefor循環(huán)的省略寫法與靈活用法for循環(huán)的三個(gè)表達(dá)式均可省略,但分號(hào)必須保留。省略初值則需提前初始化,省略條件則變?yōu)闊o限循環(huán)(需break退出),省略更新則需在循環(huán)體內(nèi)手動(dòng)遞增。這種靈活性使for能適配幾乎所有循環(huán)場(chǎng)景,從簡(jiǎn)單計(jì)數(shù)到復(fù)雜多變量控制都能勝任。省略表達(dá)式1:初值循環(huán)變量已在for外部初始化時(shí)使用,如for(;i<=10;i++),分號(hào)不可省略INITOMITTED省略表達(dá)式2:條件條件永遠(yuǎn)為真,等價(jià)于while(1)無限循環(huán),必須在循環(huán)體內(nèi)用break語句主動(dòng)退出INFINITELOOP省略表達(dá)式3:更新循環(huán)變量更新移至循環(huán)體內(nèi)部完成,如for(i=1;i<=10;){s+=i;i++;}UPDATEMOVED逗號(hào)表達(dá)式技巧可在一個(gè)for語句中同時(shí)控制多個(gè)循環(huán)變量,如for(i=1,j=10;i<j;i++,j--)MULTI-VARChapter05·LoopStructures案例:for循環(huán)計(jì)算n的階乘利用for循環(huán)實(shí)現(xiàn)n!=1×2×3×...×n的階乘計(jì)算,核心是用變量fac作為累乘器(初值為1),在for(i=1;i<=n;i++)循環(huán)體內(nèi)執(zhí)行fac=fac*i逐步累乘。01累乘器初始化fac初始化為1(非0),這是階乘計(jì)算的關(guān)鍵:若fac=0則任何乘法結(jié)果都是0fac=102循環(huán)控制for(i=1;i<=n;i++)控制循環(huán)次數(shù),i從1遞增到n,恰好執(zhí)行n次累乘操作i→n03逐步累乘循環(huán)體fac=fac*i逐步累乘:i=1時(shí)fac=1,i=2時(shí)fac=2,i=3時(shí)fac=6,i=4時(shí)fac=24...fac*=i04溢出注意階乘增長(zhǎng)極快,13!超出int范圍(約21億),大數(shù)階乘需使用double或longlong類型13!Chapter5·LoopComparison三種循環(huán)語句橫向?qū)Ρ葁hile、do-while和for三種循環(huán)在邏輯上可以互相轉(zhuǎn)換,但在語法結(jié)構(gòu)、執(zhí)行特征和適用場(chǎng)景上各有優(yōu)勢(shì)。for循環(huán)因三要素集中、代碼緊湊而成為使用頻率最高的選擇。三種循環(huán)語句核心特征對(duì)比對(duì)比維度whiledo-whilefor循環(huán)類型當(dāng)型循環(huán)直到型循環(huán)當(dāng)型循環(huán)執(zhí)行順序先判斷后執(zhí)行先執(zhí)行后判斷先判斷后執(zhí)行最少執(zhí)行次數(shù)0次1次0次三要素位置分散在循環(huán)內(nèi)外分散在循環(huán)內(nèi)外集中在for()內(nèi)最佳適用場(chǎng)景循環(huán)次數(shù)不確定至少執(zhí)行一次的交互循環(huán)次數(shù)已知三種循環(huán)邏輯等價(jià)但各有適用場(chǎng)景,for因代碼緊湊成為最常用選擇CHAPTER05循環(huán)嵌套與控制語句多層循環(huán)的嵌套邏輯,以及break和continue對(duì)循環(huán)流程的精細(xì)控制NESTEDLOOP循環(huán)嵌套的概念與執(zhí)行原理循環(huán)嵌套是指在一個(gè)循環(huán)的循環(huán)體內(nèi)包含另一個(gè)完整的循環(huán)結(jié)構(gòu)。執(zhí)行規(guī)律為:外循環(huán)每執(zhí)行一次,內(nèi)循環(huán)必須完整地執(zhí)行一遍。總執(zhí)行次數(shù)等于外循環(huán)次數(shù)乘以內(nèi)循環(huán)次數(shù)。嵌套結(jié)構(gòu)外循環(huán)的循環(huán)體內(nèi)包含內(nèi)循環(huán),內(nèi)循環(huán)作為外循環(huán)的一條語句被反復(fù)完整執(zhí)行。外層控制整體流程,內(nèi)層處理細(xì)節(jié)邏輯。內(nèi)外層執(zhí)行規(guī)律外循環(huán)變量每變化一次,內(nèi)循環(huán)變量要從初值到終值完整遍歷一遍。內(nèi)循環(huán)始終優(yōu)先于外循環(huán)的下一輪迭代。完整遍歷總執(zhí)行次數(shù)內(nèi)循環(huán)體實(shí)際執(zhí)行次數(shù)=外循環(huán)次數(shù)×內(nèi)循環(huán)次數(shù)。例如外層循環(huán)4次、內(nèi)層循環(huán)5次,則內(nèi)循環(huán)體共執(zhí)行20次。4×5=20自由組合while、do-while、for三種循環(huán)可以任意互相嵌套,嵌套層數(shù)理論上沒有限制。可根據(jù)算法需求靈活選擇循環(huán)類型。∞層NESTEDLOOP案例:嵌套循環(huán)打印九九乘法表利用for循環(huán)嵌套實(shí)現(xiàn)九九乘法表:外循環(huán)控制行號(hào),內(nèi)循環(huán)條件j≤i確保形成下三角形狀,是嵌套循環(huán)中條件設(shè)計(jì)的精妙之處。外循環(huán)控制行for(i=1;i<=9;i++)i從1到9共9行,每次外循環(huán)結(jié)束前換行,控制整體輸出結(jié)構(gòu)9行內(nèi)循環(huán)控制列for(j=1;j<=i;j++)第i行打印i個(gè)等式,j≤i是形成下三角的關(guān)鍵條件設(shè)計(jì)j≤i格式化輸出printf("%d*%d=%-3d",i,j,i*j)%-3d左對(duì)齊保證列間距整齊美觀,每個(gè)等式固定寬度輸出%-3d執(zhí)行效率Σ(i=1to9)i=45總計(jì)45次內(nèi)循環(huán)體,而非9×9=81次,條件設(shè)計(jì)精妙提升效率45次LOOPCONTROL·BREAKbreak語句:提前終止循環(huán)break語句用于立即終止當(dāng)前所在的最內(nèi)層循環(huán),無條件跳出循環(huán)體執(zhí)行后續(xù)代碼,在搜索與驗(yàn)證場(chǎng)景中可顯著減少不必要的計(jì)算開銷。01語法形式在循環(huán)體內(nèi)寫入break;即可立即終止當(dāng)前循環(huán),跳到循環(huán)體之后的下一條語句執(zhí)行。break;02素?cái)?shù)判斷遍歷2至m?1,若m%i==0則break跳出;循環(huán)后i<m說明存在因子,非素?cái)?shù)。i<m→非素?cái)?shù)03只跳一層break只能終止包含它的最內(nèi)層循環(huán),無法一次跳出多層嵌套,需配合標(biāo)志變量。INNERMOSTONLY04與switch區(qū)分在switch中終止case分支,在循環(huán)中終止循環(huán)體,功能相似但作用域不同。SCOPELoopControlcontinue語句:跳過本次循環(huán)continue語句用于跳過當(dāng)前這一輪循環(huán)中剩余的語句,直接進(jìn)入下一次循環(huán)的條件判斷。與break的"終止整個(gè)循環(huán)"不同,continue只是"跳過這一輪",循環(huán)本身仍在繼續(xù)。核心機(jī)制在循環(huán)體內(nèi)寫入continue;立即跳過本次循環(huán)剩余語句,回到循環(huán)條件判斷處for循環(huán):continue跳過后仍會(huì)執(zhí)行表達(dá)式3(如i++),再判斷表達(dá)式2是否繼續(xù)while/do-while:直接跳回條件判斷,若更新語句在continue之后則可能被跳過01根本差異break終止整個(gè)循環(huán),跳出后不再執(zhí)行后續(xù)輪次;continue僅跳過當(dāng)前輪次,后續(xù)輪次正常執(zhí)行02案例對(duì)比1→10循環(huán)1到10,遇到3時(shí)break輸出1,2;遇到3時(shí)continue輸出1,2,4,5,6,7,8,9,1003選擇依據(jù)需要"找到就停"用break(如搜索),需要"跳過不滿足的"用continue(如過濾)CHAPTER06綜合應(yīng)用案例融合循環(huán)嵌套、break與continue的實(shí)戰(zhàn)編程練習(xí)CASESTUDY案例:判斷素?cái)?shù)(for+break綜合)判斷整數(shù)m是否為素?cái)?shù):用for循環(huán)從2到m-1逐個(gè)試除,若m%i==0則break提前退出表明不是素?cái)?shù);若循環(huán)正常結(jié)束(i==m)則為素?cái)?shù)。算法思路從i=2開始逐個(gè)試除到i=m-1,若存在m%i==0則m不是素?cái)?shù),break跳出循環(huán)m%i==0循環(huán)后判斷若i<m說明break提前退出(非素?cái)?shù)),若i==m說明循環(huán)正常結(jié)束(是素?cái)?shù))i==m性能優(yōu)化試除范圍可縮小到i≤sqrt(m),因?yàn)榇笥趕qrt(m)的因數(shù)必有對(duì)應(yīng)小于sqrt(m)的因數(shù)O(√m)擴(kuò)展應(yīng)用外層嵌套for(m=2;m≤100;m++)可輸出100以內(nèi)所有素?cái)?shù),形成雙層循環(huán)+break方案2–100CASESTUDY·循環(huán)結(jié)構(gòu)案例:找出所有三位水仙花數(shù)水仙花數(shù)是指各位數(shù)字立方和等于自身的三位數(shù)(如153=13+53+33)。用for循環(huán)遍歷100到999,對(duì)每個(gè)數(shù)拆分百位、十位、個(gè)位,計(jì)算立方和并判斷。三位水仙花數(shù)共4個(gè):153、370、371、407。循環(huán)遍歷for(n=100;n<=999;n++)遍歷所有三位數(shù),確保不遺漏任何一個(gè)候選數(shù)字,覆蓋完整的搜索空間100–999數(shù)位拆分百位a=n/100(整除),十位b=n/10%10(先整除再取余),個(gè)位c=n%10,分別提取三個(gè)數(shù)位a·b·c立方和驗(yàn)證計(jì)算a3+b3+c3,若結(jié)果等于n則n是水仙花數(shù),用printf輸出符合條件的數(shù)字a3+b3+c3=n驗(yàn)證結(jié)果三位水仙花數(shù)共4個(gè)——153(1+125+27)、370、371、407(64+0+343),全部找出4個(gè)CASESTUDY案例:嵌套循環(huán)打印等腰三角形打印n行等腰三角形需要一層外循環(huán)控制行號(hào)、兩層內(nèi)循環(huán)分別控制空格和星號(hào):第i行打印n-i個(gè)空格后打印2i-1個(gè)星號(hào)。01外循環(huán)控制行數(shù):for(i=1;i<=n;i++)從1到n共打印n行,每行結(jié)束printf('\n')換行n行02空格循環(huán):for(j=1;j<=n-i;j++)第i行打印n-i個(gè)空格,保證星號(hào)居中對(duì)齊形成左側(cè)斜邊n?i03星號(hào)循環(huán):for(k=1;k<=2*i-1;k++)第i行打印2i-1個(gè)星號(hào),1,3,5,7…遞增形成三角形主體2i?104圖案變化:修改星號(hào)循環(huán)條件可打印菱形、沙漏等變體圖案,核心都是找出行號(hào)與字符數(shù)的數(shù)學(xué)關(guān)系變體SOURCECODEfor(i=1;i<=n;i++){//打印n-i個(gè)空格for(j=1;j<=n-i;j++)printf("");//打印2i-1個(gè)星號(hào)for(k=1;k<=2*i-1;k++)printf("*");printf("\n");}等腰三角形·n=5時(shí)輸出1,3,5,7,9顆星號(hào)CaseStudy·遞推邏輯案例:斐波那契數(shù)列(遞推邏輯)斐波那契數(shù)列從第3項(xiàng)起每項(xiàng)等于前兩項(xiàng)之和(1,1,2,3,5,8,13...)。用for循環(huán)實(shí)現(xiàn)時(shí),維護(hù)f1和f2兩個(gè)變量分別保存前兩項(xiàng),每次循環(huán)計(jì)算f3=f1+f2后滾動(dòng)更新f1=f2、f2=f3。此案例訓(xùn)練了遞推思維和變量滾動(dòng)更新的編程技巧。數(shù)列規(guī)律F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2),從第3項(xiàng)起每項(xiàng)為前兩項(xiàng)之和。該遞推關(guān)系是斐波那契數(shù)列的核心特征,體現(xiàn)了簡(jiǎn)單的遞歸結(jié)構(gòu)。F(n)=F(n-1)+F(n-2)變量滾動(dòng)更新循環(huán)體內(nèi)執(zhí)行f3=f1+f2后,立即f1=f2;f2=f3;為下一次迭代做好準(zhǔn)備。這種三變量輪換技巧避免了數(shù)組存儲(chǔ),空間復(fù)雜度優(yōu)化至O(1)。f1→f2→f3格式化輸出用計(jì)數(shù)器count記錄已輸出個(gè)數(shù),每5個(gè)printf('\n')換行,%-10d保證對(duì)齊。規(guī)范的輸出格式提升可讀性,便于觀察數(shù)列增長(zhǎng)趨勢(shì)。%-10d擴(kuò)展思考斐波那契數(shù)列增長(zhǎng)率趨近黃金比例1.618,在算法分析和自然界中都有廣泛應(yīng)用。相鄰兩項(xiàng)比值F(n)/F(n-1)隨n增大收斂于φ。φ≈1.618CASESTUDY案例:猜數(shù)字游戲(do-while交互)猜數(shù)字游戲是do-while循環(huán)的典型交互應(yīng)用:程序生成1-100隨機(jī)數(shù),用戶反復(fù)猜測(cè)并根據(jù)'大了/小了'提示縮小范圍,直到猜對(duì)為止。do-while保證至少猜一次,while(guess!=answer)控制重復(fù),綜合運(yùn)用了隨機(jī)數(shù)生成、條件分支和循環(huán)控制。隨機(jī)數(shù)生成srand(time(0))設(shè)置隨機(jī)種子,answer=rand()%100+1生成1到100的隨機(jī)整數(shù)。隨機(jī)種子基于當(dāng)前時(shí)間,確保每次運(yùn)行產(chǎn)生不同答案。1–100do-while循環(huán)scanf讀取猜測(cè)→if判斷大小給出提示→count++,while(guess!=answer)控制循環(huán)繼續(xù)。do-while結(jié)構(gòu)保證至少執(zhí)行一次猜測(cè),適合需要先輸入后判斷的場(chǎng)景。≥1次條件分支提示guess>answer輸出"太大了",guess<answer輸出"太小了",引導(dǎo)用戶逐步逼近正確答案。條件分支提供即時(shí)反饋,形成人機(jī)交互閉環(huán)。IF/ELSE結(jié)果展示循環(huán)結(jié)束后輸出"恭喜猜對(duì)!共猜了count次",可進(jìn)一步評(píng)價(jià)猜測(cè)效率。二分查找策略可將猜測(cè)次數(shù)控制在7次以內(nèi),體現(xiàn)算法優(yōu)化的重要性。COUNTCASESTUDY·ALGORITHM案例:輾轉(zhuǎn)相除法求最大公約數(shù)歐幾里得輾轉(zhuǎn)相除法通過反復(fù)取余求最大公約數(shù):a÷b取余r,再令a=b、b=r,直到余數(shù)為0時(shí)a即為結(jié)果。用while(b!=0)循環(huán)實(shí)現(xiàn),每次迭代執(zhí)行r=a%b;a=b;b=r三步操作。此算法簡(jiǎn)潔高效,是while循環(huán)在經(jīng)典數(shù)學(xué)算法中的代表應(yīng)用。算法原理gcd(a,b)=gcd(b,a%b),反復(fù)用較小數(shù)和余數(shù)替換原兩數(shù),直到余數(shù)為0gcd(a,b)=gc
溫馨提示
- 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. 人人文庫(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧省鞍山市千山區(qū)2026年數(shù)學(xué)六上期末聯(lián)考模擬試題含解析
- 山西臨汾霍州第一期第二次月考2027屆八上數(shù)學(xué)期末預(yù)測(cè)試題含解析
- 機(jī)床項(xiàng)目竣工驗(yàn)收?qǐng)?bào)告
- 橋梁施工安全隱患排查報(bào)告
- 冷庫(kù)低溫倉(cāng)儲(chǔ)運(yùn)營(yíng)手冊(cè)
- 消防自動(dòng)報(bào)警系統(tǒng)竣工調(diào)試報(bào)告
- 上海高端項(xiàng)目精裝修專題研究
- 2026年團(tuán)隊(duì)溝通工具 可視化文具溝通板
- 夜市攤位用品批發(fā)長(zhǎng)期合作協(xié)議書二篇
- 2023年高考全國(guó)甲卷化學(xué)試題含答案
- 2026年教育系統(tǒng)公開選拔學(xué)校年輕后備干部考試參考試題(含答案)
- 2026廣東廣永國(guó)資招聘1人筆試題庫(kù)【必考】附答案詳解
- 2026年全新中醫(yī)主治醫(yī)師考試題庫(kù)及答案
- 半導(dǎo)體芯片先進(jìn)封裝項(xiàng)目質(zhì)量管控方案
- 2026年湘教版八年級(jí)下冊(cè)數(shù)學(xué)期末名校測(cè)評(píng)卷(含答案可下載)
- 20265G毫米波通信技術(shù)商業(yè)化進(jìn)程與終端設(shè)備發(fā)展研究報(bào)告
- SGLT2抑制劑臨床應(yīng)用專家共識(shí)
- 2026年山東檔案職稱題庫(kù)試題(各地真題)附答案詳解
- 福建省干部保健工作制度
- 2025江西撫州市城市建設(shè)集團(tuán)有限公司擬聘用人員(人才引培)筆試歷年難易錯(cuò)考點(diǎn)試卷帶答案解析
- 兒童肺炎支原體肺炎診療指南(2025年版)
評(píng)論
0/150
提交評(píng)論