2024-2025 20241323 第六周学习总结

这个作业属于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 配对,可以通过添加花括号来明确配对关系。
posted @ 2024-11-03 14:05  小苟不是狗  阅读(18)  评论(0编辑  收藏  举报