#2024-2025-1学号20241309《计算机基础与程序设计》第六周学习总结

news/2025/1/12 3:57:45/文章来源:https://www.cnblogs.com/mlq061015/p/18521397

作业信息

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计
这个作业要求在哪里 2024-2025-1计算机基础与程序设计第六周作业
这个作业的目标
作业正文 2024-2025-1学号20241309《计算机基础与程序设计》第六周学习总结

教材学习内容总结

《计算机科学概论》第七章:

1. Polya 解决问题的方法:

  • 理解问题:这是解决问题的第一步,必须彻底弄清楚问题的要求、已知条件和未知条件等,避免对问题的理解出现偏差或遗漏。只有清晰地理解了问题,才能为后续的解决步骤打下坚实的基础。
  • 找到数据和未知量之间的联系(拟定计划/方案):分析问题中数据与未知数的关系,思考如何利用已知信息来推导或计算出未知量。这一步需要充分发挥创造力和逻辑思维能力,尝试找出解决问题的多种途径和方法,并选择最合适的方案。
  • 执行方案:按照选定的方案逐步实施,将理论上的解决方案转化为实际的操作步骤。在执行过程中要保持严谨和细致,确保每一个操作都正确无误。
  • 分析得到的解决方案:对执行方案后得到的结果进行检验和评估,看是否真正解决了问题。如果结果不理想,需要反思问题出在哪里,是方案本身存在缺陷,还是执行过程中出现了错误,以便对解决方案进行改进和完善。

2. 简单类型与组合类型:

  • 简单类型:是基本的数据类型,如整数类型(用于表示整数)、浮点类型(用于表示小数)、字符类型(用于表示单个字符)、布尔类型(用于表示真或假两种逻辑值)等。这些类型是构建更复杂数据结构的基础。
  • 组合类型:是由多个简单类型或其他组合类型组合而成的数据类型,能够表示多个数据的集合或具有多个属性的数据。常见的组合类型有:
  • 序列类型:元素按顺序排列的集合,例如数组、列表、字符串等。数组是相同类型元素的有序集合,可以通过索引访问其中的元素;列表是可变长度的元素序列,可以包含不同类型的元素;字符串是字符的序列,在计算机应用中具有不可替代的作用。
  • 集合类型:元素的无序集合,其中的元素具有唯一性,即集合中不会出现重复的元素。集合常用于表示一些需要去重或判断元素是否存在的情况。
  • 映射类型:由键值对组成的数据结构,通过键来快速查找对应的值。例如字典(在一些编程语言中也称为哈希表或关联数组),可以根据键快速获取与之关联的值。

3. 复合数据结构:是在简单类型和组合类型的基础上构建的更复杂的数据结构,它将多种数据类型组合在一起,以满足特定的应用需求。例如:

  • 结构体(记录):在一些编程语言中,结构体是一种将不同类型的变量组合在一起的复合数据类型。结构体中的每个成员都有自己的名称和数据类型,可以通过成员的名称来访问和操作结构体中的数据。这种数据结构常用于表示具有多个属性的实体,如学生信息(包含姓名、年龄、学号等属性)。
  • 链表:链表是一种动态的数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。链表的优点是可以灵活地添加和删除节点,适用于数据量不确定或需要频繁修改的数据集合。
  • 树:树是一种分层的数据结构,由节点和边组成。树中的每个节点都可以有多个子节点,但只有一个父节点(除了根节点,根节点没有父节点)。树结构常用于表示具有层次关系的数据,如文件系统、组织结构等。
  • 图:图是一种更为复杂的非线性数据结构,由顶点和边组成。图中的顶点可以与任意其他顶点相连,边可以具有权重或方向等属性。图结构常用于表示复杂的关系网络,如社交网络、交通网络等。

4. 查找与排序算法:

  • 查找算法:
  • 顺序查找:也称为线性查找,是最基本的查找算法。它从数据集合的一端开始,逐个检查每个元素是否为要查找的对象,直到找到为止。顺序查找的优点是简单易懂,适用于数据量较小或数据未排序的情况,但查找效率较低。
  • 二分检索(二分查找):适用于已排序的数据集合。它通过不断将数据集合分成两半,比较中间元素与要查找的元素的大小,确定要查找的元素在左半部分还是右半部分,然后在相应的部分继续进行查找。二分查找的效率较高,时间复杂度为 O(log n)。
  • 排序算法:
  • 选择排序:每次从待排序的数据集合中选择最小(或最大)的元素,将其与当前位置的元素交换,直到整个数据集合排序完成。选择排序的算法简单,但效率较低,时间复杂度为 O(n²)。
  • 冒泡排序:通过不断比较相邻的两个元素,将较大(或较小)的元素交换到后面(或前面),经过多次循环,使数据集合逐渐有序。冒泡排序的优点是易于理解和实现,但效率也不高,时间复杂度为 O(n²)。
  • 插入排序:将待排序的元素逐个插入到已排序的部分中,保持已排序部分的有序性。插入排序对于接近有序的数据集合效率较高,时间复杂度在最好情况下为 O(n),在最坏情况下为 O(n²)。
  • 快速排序:一种基于交换的高效排序算法。它首先选择一个基准元素,将数据集合分成两部分,一部分的元素小于基准元素,另一部分的元素大于基准元素,然后对这两部分分别进行递归排序。快速排序的平均时间复杂度为 O(n log n),但在最坏情况下可能退化为 O(n²)。

5. 算法复杂度:

算法复杂度是衡量算法效率的重要指标,它反映了算法在运行时所需的资源(主要包括时间资源和内存资源)。

  • 时间复杂度:表示算法执行所需的时间与问题规模之间的关系。常用的时间复杂度有 O(1)(常数时间,表示算法的执行时间不随问题规模的增加而变化)、O(n)(线性时间,表示算法的执行时间与问题规模成正比)、O(n²)(平方时间,表示算法的执行时间与问题规模的平方成正比)等。在分析算法的时间复杂度时,通常关注算法中最耗时的操作或循环的执行次数。
  • 空间复杂度:表示算法执行所需的存储空间与问题规模之间的关系。空间复杂度的分析主要考虑算法中所使用的变量、数组、结构体等数据结构所占用的存储空间,以及递归调用时所需的栈空间等。

6. 递归:

递归是一种算法调用它本身的编程技巧。递归算法通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。递归一般需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。递归的优点是可以用简洁的代码实现复杂的功能,并且代码的逻辑清晰易懂,但递归调用会占用较多的系统资源,可能导致栈溢出等问题。

7. 代码安全:

在问题求解和算法设计过程中,代码安全是一个非常重要的考虑因素。代码安全涉及到防止代码被恶意攻击、保护用户数据的隐私和完整性等方面。例如,在编写代码时要注意对输入数据的合法性进行验证,防止用户输入恶意数据导致程序崩溃或执行非法操作;对敏感数据进行加密处理,防止数据泄露;对程序的访问权限进行严格控制,防止未经授权的访问等。

《C语言程序设计》第五章:

选择结构概述

选择结构用于根据条件判断来决定程序的执行路径,使得程序可以根据不同情况执行不同的代码块,增强程序的灵活性和逻辑性。

if语句

1. 单分支if语句
格式为: if(表达式) 语句; 。当表达式的值为真(在C语言中,非零值表示真,零值表示假)时,执行后面的语句;若表达式的值为假,则跳过该语句。例如, if(x > 5) printf("x大于5\n"); ,这里当 x 的值大于 5 时,就会输出相应内容。
2. 双分支if - else语句
格式为: if(表达式) 语句1; else 语句2; 。当表达式的值为真时,执行语句1;当表达式的值为假时,执行语句2。例如, if(a % 2 == 0) printf("偶数\n"); else printf("奇数\n"); 用于判断 a 是偶数还是奇数。
3. 多分支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 配对,可以通过添加花括号来明确配对关系。

教材学习中的问题和解决过程

问题1:进行实验二基本要求的代码编写时发现可以运行但是计算出出的结果与正确结果不同;;
问题1解决方案:通过询问助教。发现是误将&打成了%

基于AI的学习

其他(感悟、思考等,可选)

设计并实现一个位运算计算器。该计算器能够对整数执行下列基本的位运算:
(1)按位与(AND)
(2)按位或(OR)
(3)按位取反(NOT)
(4)按位异或(XOR)
(5)左移(LEFT SHIFT)
(6)右移(RIGHT SHIFT)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/825470.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

目标管理中目标制定的原则是什么

目标管理中目标制定的基本原则可以用SMART准则(具体、可衡量、可达成、相关性、时间限制)来概括。文章将主要探讨五个方面:1、具体性(Specific);2、可衡量性(Measurable);3、可达成性(Achievable);4、相关性(Relevant);5、时间限制(Time-bound),目标需有明确…

猿人学web端爬虫攻防大赛赛题第15题——备周则意怠-常见则不疑

题目网址:https://match.yuanrenxue.cn/match/15 解题步骤看触发的数据包。有个m参数,一看就是经过处理的,我们得知道m是如何组成的。看Initiator模块。还是看request函数,往上一看就看到了m的赋值操作。打断点,触发。看下window.m()的定义。比较好理解的,t1和t2就是对时…

ChatOps是什么

ChatOps是一种运维和开发团队在沟通、协作和自动化方面的实践方法。它的核心思想是将运维和开发操作集成到团队常用的聊天工具中,通过命令行或简单的自然语言指令来执行各种操作和任务,从而提高团队的效率和透明度。一、ChatOps的概念 ChatOps是一种运维和开发团队在沟通、协…

编程 和 数学 的关系是什么

编程 和 数学 的关系有:1. 共同的逻辑思维基础;2. 共享抽象建模的特性;3. 算法与数学之间的紧密联系;4. 数据结构和数学对象的对应关系;5. 计算机科学中的数学理论;6. 创新和问题解决的共同性。编程和数学都建立在严密的逻辑思维基础上。数学是一种形式化的语言,通过推理…

独显直连是啥意思

独显直连(Direct GPU Access,DGA)是一种涉及计算机图形卡和显示系统交互的技术。这种配置方式允许操作系统或应用程序直接与图形卡硬件进行通信,绕过传统的操作系统驱动和API层。独显直连在提高图形性能、降低延迟、并为高性能计算带来优势方面有其独到之处。本文将深入探讨…

Diffuision Policy + RL -------个人博客_ZSY_20241101

Diffusion Policy: Visuomotor Policy Learning via Action DiffusionCheng Chi, Zhenjia Xu, Siyuan Feng, Eric Cousineau, Yilun Du, Benjamin Burchfiel, Russ Tedrake, Shuran Song 原论文链接 投在了IJRR上 点击:原作者论文思路讲解 1. PPO背景引入 这里简要交代PPO的算…

抖音蓝V信息采集器快手蓝V商家联系方式批量提取工具

抖音蓝V信息采集器快手蓝V商家联系方式批量提取工具 作者V♥553813195 关于抖音蓝V信息采集器和快手蓝V商家联系方式批量提取工具,以下是详细的分析:一、抖音蓝V信息采集器 定义与功能 抖音蓝V信息采集器是一款专为抖音平台设计的工具,旨在帮助用户快速、准确地采集具有蓝V认…

halo配置踩坑过程小记

halo配置过程详解写在最前:​ 终于搞定了最后的一步域名解析配置,其实动态博客的折腾程度也不低于当时的hexo吧,也可能当时的痛苦过程已经忘了。。整理一下思路,记录一下配置过程走过的坑。 ​ 我是从hexo用了半年想折腾点新玩意儿的,其实hexo配置自动化部署之后也挺方便的…

wordpress设置自定义字体

wordpress设置自定义字体详解wordpress设置自定义字体: 失败的操作过程:写在最前:试了一天多的引用字体,方法包括但不限于:下载.ttf、.otf格式字体,转化为wotf 、wotf2格式,挂在github仓库用CDN引用,得到css链接​ 然后这里填字体名称和CSS链接,试了很久很久,都失败了…

组合数学与计数原理

组合数学与计数原理 date: 2024/10/29. 不同情况求组合数 求组合数的四种方法。 Lucas 定理 如果 \(p\) 是质数,则对于 \(\forall m, n \in \text{Z},1 \leq m \leq n\),有: \[\binom{n}{m}=\binom{m \bmod p}{n \bmod p}*\binom{m/p}{n/p} (\bmod p) \]即把 \(n,m\) 表示为…

Java面试题中高级进阶(JVM篇Java垃圾回收)

说说Java对象创建过程?知道类的生命周期吗?简述Java的对象结构?如何判断对象可以被回收?JVM的永久代中会发生垃圾回收么?你知道哪些垃圾收集算法?似乎有点模糊了,那就大概看一下面试题吧。前言 本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说Java对象创…

不写完整sql,DBeaver如何查询数据?效率翻倍!

前言 我们在使用DBeaver时,最常用的就是查询数据,除了在DBeaver里面直接写完整的sql语句进行查询外,其实还可以用不完整的sql语句来查询,效率翻倍。那么,我们该如何操作呢? 如何操作 首先,我们还是照旧打开某一张表的数据,这样默认是没有任何查询条件的。当我们需要按照…