CSP-J考题大纲

CSP-J考题大纲

  • 一、选择题
    • 1. 计算机历史
      • 1.1 计算机历史人物
        • 1.1.1 艾伦 • 图灵
        • 1.1.2 莫西利和艾克特
        • 1.1.3 冯 • 诺伊曼
      • 1.2 计算机领域奖项
        • 1.2.1 图灵奖
        • 1.2.2 诺贝尔物理学奖
        • 1.2.3 约翰 • 冯 • 诺伊曼奖
    • 2. 计算机常识
      • 2.1 摩尔定律
      • 2.2 量子计算机
      • 2.3 二进制“和”与“或”
      • 2.4 面向对象
        • 2.4.1 面向对象的概念
        • 2.4.2 C++具有面向对象特性
        • 2.4.3 面向对象的程序设计语言
    • 3. C++常识
      • 3.1 数据结构
        • 3.1.1 栈(Stack)
        • 3.1.2 队列(Queue)
        • 3.1.3 二叉树(Binary Tree)
        • 3.1.4 链表(Linked List)
        • 3.1.5 堆(Heap)
        • 3.1.6 散列表(Hash Table)
        • 3.1.7 图(Graph)
        • 3.1.8 树(Tree)
        • 3.1.9 集合(Set)
        • 3.1.10 哈希集合(HashSet)
        • 3.1.11 哈希映射(HashMap)
        • 3.1.12 图的遍历算法
        • 3.1.13 树的遍历算法
      • 3.2 常见算法
        • 3.2.1 冒泡排序
        • 3.2.2 插入排序
        • 3.2.3 选择排序
        • 3.2.4 快速排序
        • 3.2.5 归并排序
        • 3.2.6 顺序查找
        • 3.2.7 二分查找
        • 3.2.8 插值查找
        • 3.2.9 哈希查找
        • 3.2.10 二叉查找树
  • 二、程序阅读题
    • 1. 程序问答
      • 1.1 明确程序效果
        • 1.1.1 列举每个变量值
        • 1.1.2 画流程图
        • 1.1.3 不断简化
          • 1.1.3.1 去除固定值的得出
          • 1.1.3.2 合并部分程序
      • 1.2 逆向思考
    • 2. 程序填空
      • 2.1 一堆[]先分解
      • 2.2 已知值先转换

备注: 所有的星都表示易考指数。

一、选择题

1. 计算机历史

1.1 计算机历史人物

1.1.1 艾伦 • 图灵

成就:

  1. 提出了一种抽象的计算模型图灵机【★★★☆☆】
  2. 提出了关于机器思维的问题【★☆☆☆☆】
  3. 人工智能之父【★★★★☆】

影响:
设立图灵奖,专门奖励为计算机事业作出重要贡献的个人【★★★★★】

1.1.2 莫西利和艾克特

成就:
成功研制出世界上第一台同通用计算机【★★★☆☆】

1.1.3 冯 • 诺伊曼

成就:

  1. 起草了“存储程序通用电子计算机方案”(EDVAC)【★★☆☆☆】
  2. 提出了冯 • 诺伊曼结构【★☆☆☆☆】
  3. 提出了利用存储程序运行计算机【★☆☆☆☆】
  4. 提出了采用二进制编码代替十进制【★★☆☆☆】
  5. 计算机之父【★★★★★】

影响:
成就中2.3.4这三大思想至今仍然为电子计算机设计者所遵循

1.2 计算机领域奖项

1.2.1 图灵奖

目的:
奖励为计算机事业作出重要贡献的个人【★★☆☆☆】


特点:

  1. 计算机界的诺贝尔奖【★☆☆☆☆】
  2. 计算机界最负盛名、最崇高的奖项【★★★★☆】
1.2.2 诺贝尔物理学奖

目的:
奖励计算机领域的突出贡献者【★★☆☆☆】


获奖事例:

  • 晶体管的发明【★★☆☆☆】
  • 大容量存储硬盘的发明(巨磁电阻)【★☆☆☆☆】
  • 光纤的发明【★☆☆☆☆】
  • 集成电路的发明【★★☆☆☆】
1.2.3 约翰 • 冯 • 诺伊曼奖

目的:
奖励计算机科学家和技术上具有杰出成就的科学家【★★☆☆☆】

2. 计算机常识

2.1 摩尔定律

提出者:
戈登 • 摩尔【★☆☆☆☆】


提出时间:
1965年【★☆☆☆☆】


称为:
计算机第一定律【★★★☆☆】


定律内容:

  • 集成电路芯片上所集成的电路的数目,每隔 18 18 18 个月就翻一番;【★★★☆☆】
  • 微处理器的性能每隔 18 18 18 个月提高一倍,而价格下降一半;【★★★☆☆】
  • 1 1 1 美元所能买到的计算机的性能,每隔 18 18 18 个月翻两番。【★★☆☆☆】

2.2 量子计算机

研制者:
谷歌【★☆☆☆☆】


研制(成功)时间:
2019 2019 2019 10 10 10 月【★☆☆☆☆】


研制结果:
研制出名为 Sycamore 53 53 53 位量子芯片,芯片已成功实现“量子优越性”。【★★☆☆☆】

2.3 二进制“和”与“或”

在编程中, ∨ ∨ ∧ ∧ 分别代表逻辑或(OR)和逻辑与(AND)操作符。它们是用来在布尔表达式中进行逻辑运算的。
逻辑或操作符( ∨ ∨ )表示只要两个操作数中至少一个为 true,整个表达式的结果就为 true。例如,表达式 ( x ∨ y x ∨ y xy) 的结果在 x x x y y y 中至少有一个为 true 时为 true,否则为 false
逻辑与操作符( ∧ ∧ )表示只有两个操作数都为 true,整个表达式的结果才为 true。例如,表达式 ( x ∧ y x ∧ y xy) 的结果在 x x x y y y 都为 true 时为 true,否则为 false
这些逻辑运算符通常用于控制流程中的条件判断和布尔表达式的求值。在编程语言中,常见的逻辑运算符是 “||” 和 “&&”,它们分别对应逻辑或和逻辑与操作符。

2.4 面向对象

2.4.1 面向对象的概念

面向对象的概念是一种软件开发方法论,其核心思想是将系统中的数据和操作数据的方法封装在一起,通过对象之间的交互来实现程序的功能。【★★☆☆☆】面向对象的特点包括封装、继承和多态。【★★★★☆】

2.4.2 C++具有面向对象特性

C++是一种支持面向对象编程的编程语言,它在语言层面上提供了丰富的面向对象特性。下面是C++的一些面向对象特性:

  1. 封装:通过类定义来实现封装,类将数据和操作封装在一起,通过访问修饰符(publicprivateprotected)控制对类成员的访问权限。封装提供了数据的隐藏和保护,使得对象的使用者只能通过类的公共接口访问和操作对象的数据。
  2. 继承:C++支持单继承和多继承。继承允许一个类通过继承另一个类来获得其属性和方法,并且可以通过派生类对继承的成员进行覆盖或扩展。继承提供了代码的重用性,可以通过定义基类来实现通用的行为,然后通过派生类来扩展或定制特定的行为。
  3. 多态:C++通过虚函数和运行时动态类型识别(RTTI)实现多态性。多态允许不同类型的对象根据其具体类型调用相同的方法,实现方法的动态绑定。这提供了灵活性和可扩展性,可以处理具有不同行为的对象集合,并且可以在运行时根据对象的实际类型来决定调用哪个方法。
2.4.3 面向对象的程序设计语言

• 简介
除了C++,还有一些专门面向对象的编程语言,如JavaC#Csharp)等。这些语言在语法和语义上更加贴近面向对象的概念,提供了更丰富的面向对象特性。比如,JavaC#都支持自动垃圾回收机制,简化了内存管理的工作;它们还提供接口(interface)机制,允许定义规范和多继承等。

• 优点
面向对象的编程模型具有很多优点,例如可重用性、可扩展性和可维护性等。通过面向对象的方法,可以将系统分解为若干个相对独立的对象,每个对象都有自己的状态和行为,从而简化了系统的设计和实现过程。同时,面向对象的编程模型也使得代码更加易于理解和维护,有助于提高开发效率和软件质量。

3. C++常识

3.1 数据结构

3.1.1 栈(Stack)

栈是一种具有后进先出(LIFO)特性的数据结构。实现了两个基本操作:压栈(将元素放入栈顶)和出栈(将栈顶元素取出)。

在C++中,可以使用std::stack作为栈的实现。

3.1.2 队列(Queue)

队列是一种具有先进先出(FIFO)特性的数据结构。实现了两个基本操作:入队(将元素放入队尾)和出队(将队头元素取出)。

在C++中,可以使用std::queue作为队列的实现。

3.1.3 二叉树(Binary Tree)

二叉树是一种每个节点最多有两个子节点的树状结构。其中一个子节点称为左子节点,另一个称为右子节点。

可以使用指针或者数组等方式来实现二叉树。常见的二叉树操作包括插入节点、删除节点、查找节点等。

3.1.4 链表(Linked List)

链表是由节点按顺序连接而成的线性数据结构。每个节点包含一个数据元素和一个指向下一个节点的指针。

在C++中,可以使用指针或者标准库中的std::list来实现链表。

3.1.5 堆(Heap)

堆是一种特殊的树形结构,常用于实现优先级队列。堆分为最大堆和最小堆两种。

C++标准库中的std::priority_queue提供了堆的实现,可以根据自定义的比较函数来实现最大堆或最小堆。

3.1.6 散列表(Hash Table)

散列表是根据关键字直接访问存储位置的数据结构,实现了键值对的映射。散列表通过哈希函数将关键字映射到存储位置。

C++标准库中的std::unordered_mapstd::unordered_set提供了散列表的实现。

3.1.7 图(Graph)

图是由节点和边构成的网络结构。图可以分为有向图和无向图,可以使用邻接矩阵或邻接表来表示。

常见的图算法包括深度优先搜索(DFS)、广度优先搜索(BFS)、最短路径算法等。

3.1.8 树(Tree)

树是一种非线性的数据结构,以分层的方式存储数据。树的每个节点可以有多个子节点。

常见的树结构包括二叉树、二叉搜索树、平衡二叉树、红黑树等。

3.1.9 集合(Set)

集合是一种无序且元素不重复的数据结构。集合中的元素没有顺序,可以进行插入、删除和查找操作。

C++标准库中的std::setstd::unordered_set提供了集合的实现。

3.1.10 哈希集合(HashSet)

哈希集合是基于散列表实现的集合数据结构。哈希集合利用哈希函数将元素存储在散列表中。

C++标准库中的std::unordered_set提供了哈希集合的实现。

3.1.11 哈希映射(HashMap)

哈希映射是基于散列表实现的键值对映射数据结构。哈希映射利用哈希函数将键映射到散列表中的存储位置。

C++标准库中的std::unordered_map提供了哈希映射的实现。

3.1.12 图的遍历算法

图的遍历算法用于访问图中的所有节点。常见的图的遍历算法包括深度优先搜索(DFS)和广度优先搜索(BFS)。

DFS从起始节点开始,沿着一条路径访问图的节点,直到无法继续前进,然后回退到上一个节点继续探索其他路径。

BFS从起始节点开始,先访问起始节点的所有邻接节点,然后逐层访问其他节点,直到访问完所有节点。

3.1.13 树的遍历算法

树的遍历算法用于访问树中的所有节点。常见的树的遍历算法包括前序遍历、中序遍历和后序遍历。

前序遍历先访问根节点,然后按照左子树、右子树的顺序遍历节点。

中序遍历按照左子树、根节点、右子树的顺序遍历节点。

后序遍历按照左子树、右子树、根节点的顺序遍历节点。

3.2 常见算法

3.2.1 冒泡排序
void bubbleSort(int arr[], int n)
{
   
    for (int i = 0; i < n - 1; i++)
    {
   
        for (int j = 0; j < n - i - 1; j++)
        {
   
            if (arr[j] > arr[j + 1])
            {
   
                swap(arr[j], arr[j + 1]);
            }
        }
    }
}

时间复杂度: O ( n 2 ) O(n^2) O(n2)
空间复杂度: O ( 1 ) O(1) O(1)

3.2.2 插入排序
void insertionSort(int arr[], int n)
{
   
    for (int i = 1; i < n; i++)
    {
   
        int key = arr[i];
        int j = i - 1;
        while (j >= 0 && arr[j] > key)
        {
   
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = key;
    }
}

时间复杂度: O ( n 2 ) O(n^2) O(n2)
空间复杂度: O

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用PHPStudy搭建本地web网站并实现任意浏览器公网访问

文章目录 [toc]使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点&#xff0c;测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中&#xff0c;查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2…

正点原子--STM32定时器学习笔记(1)

这部分是笔者对基本定时器的理论知识进行学习与总结&#xff01;&#xff0c;主要记录自己在学习过程中遇到的重难点&#xff0c;其他一些基础点就一笔带过了&#xff01; 1. 定时器概述 1.1 软件定时原理 使用纯软件&#xff08;CPU死等&#xff09;的方式实现定时&#xf…

【SpringBoot】SpringBoot的web开发

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;SpringBoot ⛺️稳重求进&#xff0c;晒太阳 Wbe开发 使用Springboot 1&#xff09;、创建SpringBoot应用&#xff0c;选中我们需要的模块&#xff1b; 2&#xff09;、SpringBoot已经默…

机器视觉系统设计:视觉系统中的成像基准

开发视觉系统的一个重要活动是验证其部署是否符合工程规范。一个成功的视觉应用程序的两个特点是它无需工程师干涉情况下正常工作了多长时间&#xff0c;以及它的维护和复制部署是多么简易。实现所有如上所述目标的一个关键步骤是确定视觉系统的基准。 在这里使用的上下文中&a…

Unknown column ‘project_name‘ in field list。表示数据库中没找到你要查得或者插入的‘project_name’字段。

Unknown column project_name in field list。表示数据库中没找到你要查得或者插入的‘project_name’字段。

ftrace工具学习笔记

ftrace是一个功能强大的Linux内核跟踪工具&#xff0c;可用于分析内核的行为和性能问题。它可以用来收集各种内核跟踪数据&#xff0c;如函数调用、内存分配、中断处理等。以下是ftrace的一些主要特点和用法&#xff1a; ftrace是内核自带的跟踪工具&#xff0c;因此无需安装。…

服务器和云服务器哪个更安全?

随着云计算技术的不断发展&#xff0c;越来越多的企业开始选择使用云服务器来存储和处理数据。然而&#xff0c;对于一些企业来说&#xff0c;他们可能更倾向于使用传统的服务器。在这种情况下&#xff0c;安全性成为了一个重要的考虑因素。那么&#xff0c;服务器和云服务器哪…

代码随想录算法训练营第22天 | 235. 二叉搜索树的最近公共祖先 , 701.二叉搜索树中的插入操作 , 450.删除二叉搜索树中的节点

二叉树理论基础&#xff1a; https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE 235. 二叉搜索树的最近公共祖先 题目链接&#xff1a;https://leetcode.cn/problems/lowes…

vue3-内置组件-Transition

基于状态变化的过渡和动画&#xff08;常用&#xff09; 建议多看几遍~~。然后动手去写写&#xff0c;学编程只有多动手才能有感觉。 内置组件: 它在任意别的组件中都可以被使用&#xff0c;无需注册。 Vue 提供了两个内置组件&#xff0c;可以帮助你制作基于状态变化的过渡和动…

AMH面板如何安装与公网远程访问本地面板界面

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Mac版Idea实用快捷键+使用技巧

快捷键 全局查找 shift command f 查找类(class) command o 查找classfilesymbolaction 点击两次shift 复制当前行 command d 自动代码提示 option enter 代码格式化 option command l 生成代码(构造函数、Getter/Setter方法、equals方法、hashCode方法、…

VLM 系列——Llava1.6——论文解读

一、概述 1、是什么 Llava1.6 是llava1.5 的升级暂时还没有论文等&#xff0c;是一个多模态视觉-文本大语言模型&#xff0c;可以完成&#xff1a;图像描述、视觉问答、根据图片写代码&#xff08;HTML、JS、CSS&#xff09;&#xff0c;潜在可以完成单个目标的视觉定位、名画…

这一年让我印象深刻的bug --外部接口请求失败问题

1 业务场景 我们有个需求是外部客户需要在我们系统创建一个账号。业务流程如下 但是我们运行一段时间后发现一个问题&#xff0c;有客户反创建客户账号时&#xff0c;提示账号已经存在&#xff0c;但是我们系统却查不到单号 2 问题分析 经分析报错来源于权限系统&#xff0c;我…

学习Spring的第十五天

spring aop动态代理开发 一、什么是动态代理 动态代理就是&#xff0c;在程序运行期&#xff0c;创建目标对象的代理对象&#xff0c;并对目标对象中的方法进行功能性增强的一种技术。在生成代理对象的过程中&#xff0c;目标对象不变&#xff0c;代理对象中的方法是目标对象…

基于JavaWeb开发的火车售票系统[附源码]

基于JavaWeb开发的火车售票系统[附源码] &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联系方式 承接各种定制系统 &#x1f4dd…

XCTF:3-1[WriteUP]

从题目中获取文件 使用file命令查看文件类型 修改后缀为.rar后进行解压缩 再次使用file命令查询该文件的类型 再次修改后缀为.pcap或者.pcapng 使用wireshark打开&#xff0c;直接搜索flag字样 在多个数据包里发现了flag.rar、flag.txt等文件 尝试使用http导出文件 有一个fl…

Sui上TVL突破5亿美元,位列DeFi榜单前十名和最活跃链前五名

2023年Sui上DeFi协议迅速增长&#xff0c;2024年这一势头仍在继续&#xff0c;根据DeFiLlama报告Sui上TVL近期超过5亿美元。在不到一年的时间里就达到这个金额&#xff0c;得益于Sui的突破性指标&#xff0c;比如其峰值TPS接近6,000。 Sui TVL突破5亿美元&#xff0c;登上DeFi…

超多制作模板的姓氏头像生成器微信小程序源码

超多制作模板的姓氏头像生成器微信小程序源码&#xff0c;这是一款姓氏头像制作小工具&#xff0c;内含丰富多样的模板提供制作。 以前的基本是固定位置生成&#xff0c;这款制作支持拖拽调整位置&#xff0c;自定义颜色&#xff0c;阴影等等。

第三百零八回

文章目录 1. 概念介绍2. 实现方法2.1 文字信息2.2 红色边框 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何实现密码输入框"相关的内容&#xff0c;本章回中将介绍如何在在输入框中提示错误.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们…

【 buuctf-另外一个世界】

flag 就隐藏在这一串二进制数中&#xff0c;可以利用在线工具转换得到 flag&#xff0c;本次讲一下用代码怎么转换。将二进制数转换成 ascii 字母&#xff0c;手写的话两种思路&#xff1a; 1.将二进制数四位一组先转成十六进制数&#xff0c;再将十六进制数两位一组&#xff…
最新文章