首页 > 编程语言 >2024-2025-1 20241322《计算机基础与程序设计》第六周学习总结

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

时间:2024-11-01 22:41:55浏览次数:2  
标签:语句 2024 基准值 else 20241322 2025 算法 条件 排序

作业信息

这个作业属于哪个课程 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小时

标签:语句,2024,基准值,else,20241322,2025,算法,条件,排序
From: https://www.cnblogs.com/qiangedaming/p/18521326

相关文章

  • #2024-2025-1学号20241309《计算机基础与程序设计》第六周学习总结
    作业信息这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里2024-2025-1计算机基础与程序设计第六周作业这个作业的目标作业正文2024-2025-1学号20241309《计算机基础与程序设计》第六周学习总结教材学习内容总结《计算机科学概论......
  • Diffuision Policy + RL -------个人博客_ZSY_20241101
    DiffusionPolicy:VisuomotorPolicyLearningviaActionDiffusionChengChi,ZhenjiaXu,SiyuanFeng,EricCousineau,YilunDu,BenjaminBurchfiel,RussTedrake,ShuranSong原论文链接投在了IJRR上点击:原作者论文思路讲解1.PPO背景引入这里简要交代PPO的算法......
  • 20241031总结
    dream首先朴素的\(dp\)很好想,前缀和优化也很简单,接下来考虑如何继续优化。我们发现反转操作相当于把一个序列变成环反转后再移动几格,于是我们只需要知道\(1\)位置的变换就能知道其它位置数的变换。#include<iostream>#defineintlonglongusingnamespacestd;inline......
  • 日记 2024.11.1:2024 syzx 秋季训练 4
    E令\(m=s/2\)。将\(r<m\)的区间称作A类,\(m<l\)的B类,\(l\leqm\leqr\)的C类。A、B类可以互相匹配,过程如下:将B翻转,假如A类都叫\([l_i,r_i]\),B类对称翻转后叫作\([l_j,r_j]\),将\(l_i,r_j\)混合从小到大排序,维护一个升序的set,遇到\(l_i\)时将\(r_i\)插......
  • 天津大学2024华为杯I.个大的大个 题解
    原题链接https://acm.tju.edu.cn/problem/P2040学校oj好像挂了,题解发不出去,又没有草稿功能,所以先存在这里了。前言华为杯时候对字符串不太熟,加上看错题了导致没做出这题,很可惜,苦练几个月,现在已经成为串串大师,回过头来秒一下这题发个题解泄恨。题意给定一个长为\(n\)的字符......
  • OIFC未来共同体20241030noip模拟四
    T1我们发现\(1\)其实根本没有用,只和一个连通块里的\(0\)的个数有关,直接\(dfs\),判断即可。#include<iostream>#include<cstring>usingnamespacestd;inlineintread(){registerintx=0,f=1;registercharc=getchar();while(c<'0'||c>'......
  • 2024御网线上Pwn方向题解
    ASMChecksec检查保护基本上保护都关闭了64位ida逆向程序只有一段,并且返回地址就是输入的数据,看起来就是srop了,找一下可以用的gadget通过异或清空rax值,然后通过异或ecx和1,异或rax和rcx即可增加rax的值,同理左移一位同样可以增加rax的值,将rax增加到0xf然后打srop,程序还给出了......
  • 2024年10月文章一览
    2024年10月编程人总共更新了21篇文章:1.2024年9月文章一览2.《ProgrammingfromtheGroundUp》阅读笔记:p147-p1803.《ProgrammingfromtheGroundUp》阅读笔记:p181-p2164.《ProgrammingfromtheGroundUp》阅读笔记:p217-p2385.《ProgrammingfromtheGroundUp》读后感......
  • OIFC未来共同体20241028noip模拟三
    T1状压\(dp\),两两之间有相同的位,那一位就为\(1\),否则就为\(0\),考虑哪些选法不合法,要在\(0\)的位上为\(1\),即只在\(1\)上选和不选都是不可以的,于是状压\(dp\)即可。#include<iostream>#defineintlonglongusingnamespacestd;inlineintread(){registerintx......
  • CSP2024 游记
    \(\texttt{Thisarticlewaswrittenbyxxxalq.}\)\(2024.8.26\)开学第一天。\(2024.8.28\)来自浙江杭州的一位优秀OI选手Jasonshan10远赴\(800\text{km}\)来到郑州,晚上他和我跟武思源一起吃了饭,我们仨第一次见面还是在去年的杭师大,转眼都过去一年多了,此方也早已成为......