2024-2025 20241323 第六週學習總結

小苟不是狗發表於2024-11-03

這個作業屬於https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP
這個作業要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01

作業正文https:https://www.cnblogs.com/gly03/p/18523229

教材學習內容總結
一、簡單型別與組合型別
(一)簡單型別
簡單型別(Primitive Types)是程式語言中最基本的資料型別,通常包括整數、浮點數、字元、布林值等,它們是不可再分的基本資料單元。
(二)組合型別
組合型別(Composite Types)是由簡單型別組合而成的資料型別,例如陣列、結構體、類等。它們可以包含多個簡單型別的資料,並且可以進行復雜的操作。
二、複合資料結構
(一)陣列
陣列(Array)是一組相同型別的元素的集合。
(二)連結串列
連結串列(Linked List)是由節點組成的線性資料結構,每個節點包含資料和指向下一個節點的指標。
(三)棧
棧(Stack)是後進先出(LIFO)的資料結構。
(四)佇列
佇列(Queue)是先進先出(FIFO)的資料結構。
(五)樹
樹(Tree)是由節點和邊組成的層次結構,如二叉樹、B樹等。
(六)圖
圖(Graph)是由節點和邊組成的非線性資料結構,用於表示複雜的關係。
三、查詢與排序演算法
(一)查詢演算法

  1. 線性查詢
    線性查詢(Linear Search)是逐個檢查每個元素,直到找到目標元素。
  2. 二分查詢
    二分查詢(Binary Search)是在有序陣列中透過不斷縮小查詢範圍來查詢目標元素。
    (二)排序演算法
  3. 氣泡排序
    氣泡排序(Bubble Sort)是透過多次遍歷陣列,比較相鄰元素並交換位置。
  4. 選擇排序
    選擇排序(Selection Sort)是每次選擇最小(或最大)的元素放到已排序部分的末尾。
  5. 插入排序
    插入排序(Insertion Sort)是將未排序部分的元素逐個插入到已排序部分的正確位置。
  6. 快速排序
    快速排序(Quick Sort)是透過選擇一個基準元素,將陣列分為兩部分並遞迴排序。
  7. 歸併排序
    歸併排序(Merge Sort)是將陣列分為兩部分,分別排序後再合併。
    四、演算法複雜度
    (一)時間複雜度
    時間複雜度(Time Complexity)表示演算法執行時間隨輸入規模增長的變化趨勢,常用大O表示法(O(n)、O(n^2)等)。
    (二)空間複雜度
    空間複雜度(Space Complexity)表示演算法執行過程中所需的額外空間隨輸入規模增長的變化趨勢。
    五、遞迴
    遞迴是一種程式設計技術,函式直接或間接呼叫自身來解決問題。遞迴通常用於解決可以分解為相同問題的子問題的情況。遞迴的關鍵在於定義遞迴基(終止條件)和遞迴關係(如何將問題分解為子問題)。
    六、程式碼安全
    (一)輸入驗證
    輸入驗證(Input Validation)確保使用者輸入的資料符合預期格式和範圍。
    (二)邊界檢查
    邊界檢查(Boundary Checking)防止陣列越界、緩衝區溢位等錯誤。
    (三)加密
    加密(Encryption)對敏感資料進行加密,防止資料洩露。
    (四)許可權控制
    許可權控制(Access Control)限制不同使用者對系統資源的訪問許可權。
    (五)日誌記錄
    日誌記錄(Logging)記錄系統操作和錯誤資訊,便於追蹤和分析問題。
    (六)安全編碼實踐
    安全編碼實踐(Secure Coding Practices)遵循安全編碼規範,避免常見的安全漏洞。
    if語句
  8. 單分支if語句
    格式為: if(表示式) 語句; 。當表示式的值為真(在C語言中,非零值表示真,零值表示假)時,執行後面的語句;若表示式的值為假,則跳過該語句。例如, if(x > 5) printf("x大於5\n"); ,這裡當 x 的值大於 5 時,就會輸出相應內容。
  9. 雙分支if - else語句
    格式為: if(表示式) 語句1; else 語句2; 。當表示式的值為真時,執行語句1;當表示式的值為假時,執行語句2。例如, if(a % 2 == 0) printf("偶數\n"); else printf("奇數\n"); 用於判斷 a 是偶數還是奇數。
  10. 多分支if - else if - … - else語句
    用於處理多種可能的情況。格式為: if(表示式1) 語句1; else if(表示式2) 語句2; … else 語句n; 。程式會依次判斷表示式的值,當某個表示式的值為真時,執行對應的語句,然後跳過後面的判斷。若所有表示式的值都為假,則執行 else 後的語句(如果有 else 部分)。比如根據學生成績劃分等級: if(score >= 90) printf("A"); else if(score >= 80) printf("B"); else if(score >= 70) printf("C"); else if(score >= 60) printf("D"); else printf("E");
    switch語句
    • 基本形式: switch(表示式) { case 常量表示式1: 語句組1; break; case 常量表示式2: 語句組2; break; … default: 語句組n; } 。首先計算 switch 後面表示式的值,然後與各個 case 後面的常量表示式的值進行比較。若與某個 case 的值相等,則執行該 case 後面的語句組,直到遇到 break 語句或者 switch 語句結束。如果沒有匹配的 case ,則執行 default 後面的語句組( default 部分可選)。例如, switch(day) { case 1: printf("星期一"); break; case 2: printf("星期二"); break; … default: printf("輸入錯誤"); } 可根據 day 的值輸出相應的星期。
    • 注意事項: case 後的常量表示式的值必須互不相同,且只能是整型或字元型常量。 break 語句在 switch 語句中非常關鍵,若遺漏可能導致程式執行流程不符合預期,出現“穿透”現象。
    條件運算子
    • C語言提供了條件運算子( ?: ),這是一個三目運算子。其一般形式為: 表示式1? 表示式2 : 表示式3 。先計算表示式1的值,如果為真,則整個表示式的值為表示式2的值;如果為假,則整個表示式的值為表示式3的值。例如, max = (a > b)? a : b; 用於求 a 和 b 中的較大值,它可以看作是 if - else 語句的一種簡潔表示形式。
    選擇結構的巢狀
    在 if 語句或 switch 語句內部可以再包含其他的 if 語句或 switch 語句,形成巢狀結構。但要注意巢狀的層次不要過於複雜,以保證程式的可讀性和可維護性。在巢狀使用時,要特別注意 else 與 if 的配對規則, else 總是與它上面最近的且未配對的 if 配對,可以透過新增花括號來明確配對關係。

相關文章