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

news/2025/1/12 4:00:57/文章来源:https://www.cnblogs.com/qiangedaming/p/18521326

作业信息

这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP
这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK06
这个作业的目标 ①Polya如何解决问题 ②简单类型与组合类型 ③复合数据结构 ④查找与排序算法 ⑤算法复杂度 ⑥递归 ⑦代码安全
作业正文 https://www.cnblogs.com/qiangedaming/p/18521326

教材学习内容总结

《计算机科学概论》第七章:问题求解与算法设计

1. 问题求解过程

  • 介绍了George Pólya的问题求解方法,并将其应用于计算机问题求解。
  • 强调分析问题、列出主要任务、编写算法以及重组和改写的重要性。

2. 数据结构与类型

  • 区分简单类型(如整数、浮点数)和复合类型(如数组、结构体)。
  • 介绍复合数据结构机制,如数组、链表、栈和队列等。

3. 递归算法

  • 解释递归算法的概念,即一个算法直接或间接地调用自身。
  • 提供递归算法的例子,如计算阶乘、斐波那契数列等。

4. 排序算法

  • 介绍常见的排序算法:选择排序、插入排序、冒泡排序和快速排序。
  • 分析每种排序算法的时间复杂度和空间复杂度。

5. 检索算法

  • 介绍线性检索和二分检索两种基本的检索算法。
  • 强调二分检索在有序数组中的高效性。

6. 算法设计原则

  • 强调信息隐蔽、抽象和模块化在算法设计中的重要性。
  • 介绍良好的命名规范和注释习惯对于提高算法可读性和可维护性的帮助。

7. 测试与调试

  • 介绍白盒测试和黑盒测试两种测试方法。
  • 强调测试在算法设计和实现过程中的重要性,以及调试技巧和方法。

《C语言程序设计》第五章:选择控制结构

1. 选择控制结构概述

  • 定义:在程序中,根据某个条件是否成立,选择执行不同的代码块。
  • 目的:实现程序的流程控制,使程序更加灵活和适应不同的场景。

2. if语句

  • 基本语法if (条件) 语句;
    • 如果条件为真,则执行语句;否则跳过该语句。
  • if-else语句if (条件) 语句1; else 语句2;
    • 如果条件为真,执行语句1;否则执行语句2。
  • if-else if-else语句:用于处理多个条件分支。
  • 注意事项
    • 条件表达式应该使用括号括起来,以确保优先级正确。
    • 在if语句的末尾不要忘记分号(;)。
    • 注意条件表达式的值,确保其为真或假,避免产生意外的行为。
    • 在嵌套的if语句中,要确保每个条件和对应的语句都是完整的,避免出现语法错误或逻辑错误。

3. switch语句

  • 基本语法switch(expression) { case constant1: 语句块1 break; case constant2: 语句块2 break; ... default: 默认语句块 }
    • 首先计算expression的值,然后与各个case后面的常量进行比较,如果匹配则执行相应的语句块,最后通过break语句退出switch结构。
    • 如果没有匹配的case,则执行default后面的语句块(如果有的话)。
  • 嵌套使用:可以在外部switch语句的每个case分支中,包含一个或多个完整的switch语句,形成多层的嵌套结构。
  • 注意事项
    • 在使用switch语句时,尽量减少重复的代码块,以提高代码的复用性和可维护性。
    • 注意case分支后面的常量类型和值,确保它们与expression的类型和取值范围相匹配。
    • 在每个case分支的末尾使用break语句,以防止执行多个case分支的情况发生。

4. 条件运算符

  • 基本语法条件 ? 表达式1 : 表达式2
    • 如果“条件”为真,则整个表达式的值为“表达式1”的值;否则,整个表达式的值为“表达式2”的值。
  • 应用场景:在需要基于某个条件选择执行不同操作的场景下,可以使用条件运算符。
  • 注意事项
    • 条件运算符的优先级较低,因此在复杂的表达式中可能需要使用括号来确保正确的运算顺序。
    • 条件运算符的返回值只能是单一的值,不能返回多个值。
    • 在某些情况下,使用if-else语句可能比条件运算符更加清晰和易于理解。

5. 复合语句

  • 定义:用一对花括号将一组逻辑相关的语句括起来,称为复合语句。
  • 应用场景:在if语句、switch语句等控制结构中,可以使用复合语句来包含多个语句。
  • 注意事项:复合语句内定义的变量只能在复合语句内使用。

6. 选择控制结构的应用实例

  • 学生成绩评级系统:使用if-else语句根据输入的成绩判断成绩所属的等级(如优秀、良好、中等、及格、不及格),并输出相应的评级结果。
  • 菜单选择系统:使用switch语句根据用户的输入执行相应的操作。
  • 计算器功能:使用条件运算符根据用户输入的算式和运算符计算并输出结果。

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

  • 问题1:快速排序算法是如何工作的,其基本策略是什么?
  • 问题1解决方案:快速排序算法是计算机科学概论第七章中介绍的一种重要排序算法。它的基本策略是分治法,具体工作过程如下:
    选择基准值: 快速排序算法首先会选择一个基准值(pivot),这个基准值可以是数组中的任何一个元素,但通常选择第一个元素、最后一个元素或中间元素作为基准值。
    分区操作: 接下来,算法会进行分区(partitioning)操作,即将数组划分为两个部分:一部分包含所有小于基准值的元素,另一部分包含所有大于或等于基准值的元素。基准值则位于这两部分的中间。
    递归排序: 分区操作完成后,算法会递归地对小于基准值的元素部分和大于或等于基准值的元素部分进行快速排序,直到整个数组变得有序。
    合并结果: 由于快速排序在分区过程中已经实现了部分排序,并且递归地处理每个分区,因此最终合并的结果就是一个完全有序的数组。
    快速排序算法的关键在于分区操作,它通过一个循环遍历数组,将小于基准值的元素移动到基准值的左边,将大于或等于基准值的元素移动到基准值的右边。这个循环结束后,基准值就位于了它的最终位置,数组也被划分为了两个部分。
    快速排序算法的平均时间复杂度为O(n log n),在最坏情况下(如数组已经有序或完全逆序时)的时间复杂度为O(n^2),但由于其在实际应用中表现良好,且能够处理大量数据,因此被广泛使用。
  • 问题2:怎么区分if语句和if-else语句
  • 问题2:执行逻辑:if语句:只有当条件为真时,才执行if块内的代码。
    if-else语句:当条件为真时执行if块内的代码,当条件为假时执行else块内的代码。
    代码块数量:if语句:只有一个代码块(条件为真时执行)。
    if-else语句:有两个代码块(一个用于条件为真时,另一个用于条件为假时)。
    使用场景:使用if语句时,你通常只关心条件为真时的情况,而不关心条件为假时的情况。
    使用if-else语句时,你需要对条件为真和假两种情况都进行处理。

基于AI的学习

  • 计划学习时间:15小时

  • 实际学习时间:12小时

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

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

相关文章

黑马PM-电商项目-商品中心

商品发布流程推导商品类目品牌管理SKU和SPU商品属性商品发布功能设计类目关联的相关场景属性管理特殊规则运费模版商品管理产品设计

可以本地化部署的免费的bug管理工具有哪些

可以本地化部署的免费的BUG管理工具有以下几种:一、MantisBT;二、Bugzilla;三、Redmine;四、Trac;五、Flyspray;六、BugNET。MantisBT是一款开源的缺陷跟踪工具,功能丰富。它支持多项目管理、自定义字段、工作流配置等特性,适合中小型团队使用。一、MantisBT MantisBT是…

MindSearch踩坑心得

MindSearch允许llm生成类似jupyter notebook的代码片段自主的规划搜索路径,形成搜索图可以自由的控制最大迭代步数,这种灵活的特性使得的MindSearch搜索效果相比写死的代码要效果好很多。MindSearch代码不多,但是调用很复杂,不行请看这个时序图,请格外关注WebSearchGraph和…

某小型CMS漏洞复现审计

根据数据包在IDEA全局搜索,定位到delete代码段。该方法接收三个参数:path、name 和 data,这些参数通过 \@RequestParam注解从请求中提取,并进行简单拼接,赋值给file对象,此时file对象代表实际的文件名称。SQL注入 漏洞复现:登陆后台,点击页面删除按钮,抓包:rid参数存…

遥感图像Trento原始数据集下载

遥感图像Trento数据集提供下载遥感图像Trento原始数据集下载偶然间在某个项目里发现了Trento的完整数据集,不过那个数据集有些奇怪的小改动 虽然我已经不做遥感方向了,不过当初我找这个数据集也是花了很长时间 于是重新整理了一下,就当是方便后来的研究者使用吧 github:htt…

hadoop-3.1.2分布式搭建

一、准备工作 三台虚拟机:master、node1、node2时间同步 关闭防火墙:systemctl stop firewalld查看防火墙状态:systemctl status firewalld取消防火墙自启:systemctl disable firewalld修改主机名三台分别执行 vim /etc/hostname 并将内容指定为对应的主机 名静态IP配置vim…

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

作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第六周作业这个作业的目标作业正文 2024-2025-1学号20241309《计算机基础与程序设计》第六周学习总结教材学习内容总结 《计算机科学概论》第七章: 1. Poly…

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

目标管理中目标制定的基本原则可以用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层。独显直连在提高图形性能、降低延迟、并为高性能计算带来优势方面有其独到之处。本文将深入探讨…