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