2024-2025-1 20241328 《計算機基礎與程式設計》第四周學習總結
作業資訊
課程 | 2024-2025-1-計算機基礎與程式設計 |
---|---|
作業要求 | 2024-2025-1計算機基礎與程式設計第四周作業 |
這個作業的目標 | 閘電路,組合電路,邏輯電路,馮諾依曼結構,CPU,記憶體,IO管理,嵌入式系統,並行結構,物理安全 |
作業正文 | 2024-2025-1 20241328 《計算機基礎與程式設計》第四周學習總結 |
教材學習內容總結
選擇控制結構概述
選擇控制結構是C語言中用於根據條件執行不同程式碼塊的機制。它允許程式根據條件的真假來決定執行哪一部分程式碼。
if語句
if語句是C語言中最基本的選擇控制結構。它根據一個布林表示式的結果來決定是否執行某段程式碼。
if (條件表示式) {
// 如果條件表示式為真,執行這裡的程式碼
}
if-else語句
if-else語句在if語句的基礎上增加了else分支,用於在條件為假時執行另一段程式碼。
if (條件表示式) {
// 如果條件表示式為真,執行這裡的程式碼
} else {
// 如果條件表示式為假,執行這裡的程式碼
}
巢狀if語句
巢狀if語句是指在一個if或else分支中再巢狀另一個if語句,用於處理更復雜的條件判斷。
if (條件表示式1) {
// 如果條件表示式1為真,執行這裡的程式碼
if (條件表示式2) {
// 如果條件表示式2為真,執行這裡的程式碼
}
} else {
// 如果條件表示式1為假,執行這裡的程式碼
}
else-if階梯
else-if階梯用於處理多個條件判斷,允許程式在多個條件中選擇一個執行。
if (條件表示式1) {
// 如果條件表示式1為真,執行這裡的程式碼
} else if (條件表示式2) {
// 如果條件表示式2為真,執行這裡的程式碼
} else {
// 如果所有條件都為假,執行這裡的程式碼
}
switch語句
switch語句用於多分支選擇,根據一個整型表示式的值來決定執行哪個分支。
switch (表示式) {
case 常量1:
// 如果表示式等於常量1,執行這裡的程式碼
break;
case 常量2:
// 如果表示式等於常量2,執行這裡的程式碼
break;
default:
// 如果表示式不等於任何常量,執行這裡的程式碼
}
條件運算子
條件運算子(也稱為三元運算子)是一種簡化的選擇控制結構,用於根據條件選擇兩個表示式中的一個執行。
表示式1 ? 表示式2 : 表示式3;
// 如果表示式1為真,執行表示式2;否則執行表示式3
總結
C語言中的選擇控制結構包括if語句、if-else語句、巢狀if語句、else-if階梯、switch語句和條件運算子。這些結構使得程式能夠根據不同的條件執行不同的程式碼塊,從而實現複雜的邏輯控制。
教材學習中的問題和解決過程(先問 AI)
- 問題1:不知道怎麼進行向上取整
- 問題1解決方案:向AI詢問,學會了使用ceil函式
基於AI的學習
我:我在學c語言選擇控制結構的相關知識點,請你以蘇格拉底的方式對我進行提問,一次一個問題 AI:那你能告訴我選擇控制結構在C語言中的主要作用是什麼嗎? 我:實現條件判斷與執行路徑選擇 AI:那你能詳細說說在C語言中,如何透過選擇控制結構實現不同條件下執行不同的程式碼塊嗎? 我:三種主要的選擇控制結構:if語句、if - else語句和switch語句。 AI:那你能告訴我if語句在進行條件判斷時,條件是如何被處理的呢? 我:if語句透過評估條件表示式來決定是否執行相應的程式碼塊。條件表示式可以是任意布林表示式,而程式碼塊可以是一條或多條語句。透過這種方式,程式可以根據不同的條件執行不同的操作,從而實現靈活的控制流。 AI:那你是否能解釋一下在if - else語句中,else部分起到了什麼特殊的作用呢? 我:提供備選操作,完整性補充 AI:那你能詳細說說在什麼情況下,使用switch語句會比if - else語句更合適嗎? 我:多分支選擇,執行效率 AI:那你能具體闡述一下為什麼在多分支選擇的情況下,switch語句會有更高的執行效率嗎? 我:因為switch語句在編譯時可能會被最佳化為一種類似於查詢表的機制,使得程式可以直接跳轉到對應的執行地址,而不需要依次檢查每個條件。 AI:那你能告訴我在使用switch語句時,如果沒有寫break語句會發生什麼情況呢? 我:程式將會繼續執行下一個case分支的程式碼,直到遇到break語句或switch語句結束為止。 AI:那你能解釋一下為什麼在switch語句中,default語句通常放在最後嗎? 我:符合語法習慣和邏輯順序 AI:那你能詳細說說這種語法習慣和邏輯順序具體是怎樣的嗎? 我:switch語句的目的是根據不同的條件執行不同的程式碼塊。首先列出所有可能的條件(case語句),最後處理所有未匹配的情況(default語句)。這種順序使得程式碼的邏輯更加清晰。 AI:那你能告訴我在switch語句中,表示式的型別有什麼限制嗎? 我:switch語句的表示式必須是整數型別 AI:那你能舉例說明哪些整數型別可以用於switch語句的表示式嗎? 我:如int、char等 AI:那你能解釋一下為什麼char型別可以用於switch語句表示式嗎?畢竟它是字元型,而你剛剛說表示式必須是整數型別。 我:char型別在C和C++中是整數型別的一種,它通常佔用一個位元組(8位),可以表示從 - 128到127(有符號)或0到255(無符號)的整數值。 AI:那你能告訴我在使用if語句進行巢狀時,如何確保程式碼的可讀性嗎? 我:我不會,請你為我解答 AI:那我來給你解答一下。在使用if語句巢狀時,可以透過以下幾種方式確保程式碼的可讀性。首先,合理地使用縮排,讓不同層次的if語句在視覺上有明顯的區分,這樣可以清晰地看出巢狀關係。其次,對於複雜的條件表示式,可以將其提取出來,定義為有意義的布林變數,變數名能夠清晰地表達這個條件的含義。還有,儘量避免過度巢狀,當巢狀層次過多時,可以考慮將部分巢狀的邏輯提取成獨立的函式,這樣主邏輯會更加清晰。 我:我的回答結束了,請對我的回答進行評價總結 AI:你在回答中準確地指出了在C語言中選擇控制結構相關的一些重要概念,例如對if語句、if - else語句、switch語句的理解,包括它們的作用、特點等內容。優點:回答簡潔明瞭,直接切中要點,對於每個問題都能給出較為準確的答案。可以改進的地方:在某些回答上可以更加詳細深入,例如在解釋char型別可用於switch語句表示式時,可以進一步舉例說明在實際程式碼中的應用場景。
程式碼除錯中的問題和解決過程
- 問題1:程式碼無法正常編譯
- 問題1解決方案:透過錯誤資訊發現非法字元