青少年信息学奥赛(入门级)
文章平均质量分 62
全国青少年信息学奥林匹克信息竞赛入门级知识点总结
papership
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【入门级-数据结构-3、特殊树:完全二叉树的定义与基本性质】
编号为i的节点是叶子节点,当且仅当:i > ⌊n/2⌋(n为总节点数)。例:n=6(偶)→ 度为 1 的节点是 3(只有左子节点 6);高度:叶子节点高度为 1,完全二叉树的高度 = 根节点的高度 = ⌊log₂n⌋ + 1;除最后一层外,每一层的节点数都达到最大值(即第k层有2^(k-1)个节点,k≥1);若n为偶数:度为 1 的节点数 = 1(最后一个非叶子节点只有左子节点);若n为奇数:度为 1 的节点数 = 0(所有非叶子节点都有左右子节点)。若i=1,为根节点,无父节点)。原创 2025-12-14 18:01:38 · 367 阅读 · 0 评论 -
【入门级-数学与其他:4、离散与组合数学:杨辉三角】
13世纪,我国古代数学家杨辉在其《详解九章算法》(1261) 中引用了此图,并注明了此图出自贾宪的《释锁算书》。杨辉三角在我国古代大多用来作为开方的工具。杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。杨辉三角(也称帕斯卡三角)是组合数学中一个非常优美且实用的工具,它清晰地展示了二项式系数和组合数的规律。行2的 2 = 行1的 1 + 1。行3的 3 = 行2的 1 + 2。行4的 6 = 行3的 3 + 3。原创 2025-11-12 15:35:54 · 206 阅读 · 0 评论 -
【入门级-数学与其他:4、离散与组合数学:集合】
子集: 如果集合 A 的每一个元素都是集合 B 的元素,则称 A 是 B 的子集,记作 A ⊆ B。对于三个集合:|A ∪ B ∪ C| = |A| + |B| + |C| - |A∩B| - |A∩C| - |B∩C| + |A∩B∩C|对称差: A ⊕ B = {x | (x ∈ A 或 x ∈ B) 且 x ∉ (A ∩ B)} = (A ∪ B) - (A ∩ B)集合相等: 如果 A ⊆ B 且 B ⊆ A,则集合 A 和 B 相等,记作 A = B。空集是唯一的,也是任何集合的子集。原创 2025-11-12 13:48:08 · 1120 阅读 · 0 评论 -
【入门级-数学与其他:4、离散与组合数学:排列&组合】
列出所有可能:ABC, ABD, ACB, ACD, ADB, ADC, BAC, BAD, BCA, BCD, BDA, BDC, CAB, CAD, CBA, CBD, CDA, CDB, DAB, DAC, DBA, DBC, DCA, DCB。公式: P(n, r) = n × (n-1) × (n-2) × …列出几种可能:(5苹果, 0香蕉, 0橙子), (4,1,0), (3,2,0), (3,1,1)…公式: C(n + r - 1, r) 或等价的 C(n + r - 1, n - 1)原创 2025-11-11 17:15:29 · 369 阅读 · 0 评论 -
【入门级-数学与其他:4、离散与组合数学:加法原理】
设完成一个任务有 k 类不同的方案。在第一类方案中有 n1 种方法,在第二类方案中有 n2种方法,……,在第 k 类方案中有nk种方法。"加法原理"是离散与组合数学中的基本原来。是组合计数中最简单、最直观,也是最重要的原理之一。意味着这些方案类别之间没有重叠,完成任务的任何一种方法都属于且仅属于其中一个类别。如果完成一项任务有互斥的若干类方案,那么完成该任务的总方法数,等于各类方案方法数之和。掌握加法原理,是步入组合数学世界的第一步,也是解决更复杂计数问题的基础。加法原理的核心思想可以概括为一句话:。原创 2025-11-03 15:37:24 · 337 阅读 · 0 评论 -
【入门级-数学与其他:4、离散与组合数学:乘法原理】
乘法原理是组合数学的基石,它的核心思想是 “分步相乘”,掌握好乘法原理,是学习后续更复杂的排列(Permutation)、组合(Combination)等概念的关键。说"加法原理"也好,"乘法原理"也好,其实大家都会算数,这个没什么难的,关键这里是让大家了解在计算机的世界,如何将这2个原理与计算机结合,才能方便我们以后设计程序。就是做一件事,需要分几步完成,每一步都有若干种选择,那么完成这件事的总方法数就是把每一步的选择数乘起来。这时,乘法原理依然适用,但第二步的选择数依赖于第一步的结果。原创 2025-11-03 16:51:09 · 297 阅读 · 0 评论 -
【入门级-算法-1、算法概念与描述】
现在我们要做一个菜,由于每个厨师的操作步骤和做菜的方法都是不同的,因此做出来的菜的口味也不同,那么这个厨师的菜谱其实就是厨师做菜的“算法”。算法是解决特定问题的有限、明确、可执行的步骤集合,用于解决一个特定问题或完成一项特定任务,本质是把输入数据转化为期望输出的“解题流程”。可行性: 算法的每一步都必须是可行的,也就是说,能够通过已经实现的基本操作在有限时间内完成。可执行的: 步骤必须是你能做到的,比如“搅拌”,而不是“用意念混合”。2.“加入3克盐”,而不是“加少许盐”,盐的数量不同,口味自然不同。原创 2025-10-16 10:07:33 · 723 阅读 · 0 评论 -
【入门级-算法-2、入门算法:枚举法】
枚举法的基本思想:计算机主要功能,或者说它的优势就是算力强大,穷举所有可能看着有些笨拙,但是对于计算机来说不是什么问题,因此我们要善于利用这种思想进行程序设计。枚举法(Brute Force):是一种直接遍历所有可能情况的算法思想,适合解决数据范围较小的问题。它的核心是穷举所有可能性,并检查哪些情况符合要求。cout << “a + b = 100 的所有正整数解:” << endl;问题没有明显的数学规律,只能暴力尝试。需要找到所有可能的解(如排列组合)。逐个检查 每个可能的解。能够找到所有可能的解。原创 2025-08-14 15:48:55 · 342 阅读 · 0 评论 -
【入门级-算法-2、入门算法:模拟法】
模拟法(Simulation):是一种按照问题描述直接模拟过程的算法思想,适合解决流程明确、步骤固定的问题。它的核心是用代码还原实际问题的发展过程。不需要复杂的算法设计,用程序按照问题描述的规则、流程或场景,逐步骤地还原操作过程,最终得到结果。理解问题流程,明确每一步的操作规则,按照问题描述逐步执行。cout << “错误!流程清晰的问题(如游戏规则、物理过程)。需要逐步执行的操作(如自动化操作模拟)。cout << "输入两个数字: ";状态转换明确的问题(如状态机)。适合流程明确、步骤固定的问题。原创 2025-08-14 16:38:22 · 368 阅读 · 0 评论 -
【入门级-算法-3、基础算法:递推法】
递推法是指在求解问题时,通过建立相邻项之间的关系(递推公式),从初始条件出发,逐步计算出问题的解的过程。递推公式:描述第 n 项与前面若干项之间关系的数学表达式(如斐波那契数列的递推公式:F(n) = F(n-1) + F(n-2))。斐波那契数列特点:从第3个数开始,数字是前2个数字之和,例如,第3个数是1(0+1等于1),第4个数是2(1+1等于2)。初始条件:问题的最小规模解,是递推的起点(如斐波那契数列中的第 1 项和第 2 项)。// 更新F(n-2)为原来的F(n-1)有明显的递推关系的问题。原创 2025-08-18 08:32:42 · 490 阅读 · 0 评论 -
【入门级-算法-3、基础算法:递归法】
思路:比如我们想求5的阶乘,我们是不知道的,但是如果我能求出4的阶乘,乘以5就可以得到5的阶乘,按照递归的思想,我们就转移到递归条件中,去函数调用自己,将问题转换为去求4的阶乘,一次类推,去求3的阶乘,求2的阶乘,最终求出1的阶乘,而1的阶乘是已知的,程序进入基线条件部分,然后函数层层调用返回,最终实现求出5的阶乘。使用递归时,一定要确保有明确的基线条件,否则会导致无限递归,最终引发栈溢出错误。对于一些复杂问题,递归可以提供直观的解决方案,但在性能要求较高的场景下,可能需要考虑用迭代替代递归。原创 2025-08-21 09:48:59 · 543 阅读 · 0 评论 -
【入门级-算法-3、基础算法:二分法】
调整右边界:right = mid - 1。循环结束:如果循环结束(即 left > right)仍未找到,说明目标值不存在于数组中,返回 -1。计算中间:计算中间索引 mid = left + (right - left) // 2。初始化:设置 left = 0(数组起始索引),right = n-1(数组末尾索引)。假设你要猜的数据是18,需要的中间数字分别是:50,25,13,18,四次就可以完成。问题描述:在有序数组 nums 中查找指定目标数据,若存在返回其索引,否则返回 -1。原创 2025-10-16 14:08:48 · 516 阅读 · 0 评论 -
【入门级-算法-3、基础算法:倍增法】
2、核心思想是:将过程分成多个2的幂次阶段,通过预处理(或逐步计算)每个幂次步长的结果,从而将线性复杂度的时间代价优化为对数复杂度。这个过程从最大的步长开始尝试,如果不行就缩小步长,直到步长为0。将一个步骤分解,不是一步一步地走,而是每次将步长翻倍,以极高的效率逼近目标。如果成功了,说明目标在 16 米之外,我们下次从 16 米处开始,再尝试跳 8 米(16+8=24 > 20,跳过头了)。那么我们就放弃跳 8 米,尝试跳 4 米(16+4=20,正好到达目标)。先尝试跳一个很大的步长,比如 16 米。原创 2025-10-17 08:42:54 · 216 阅读 · 0 评论 -
【入门级-算法-3、基础算法:贪心法】
贪心法是一种 “高效但谨慎” 的算法:它在合适的问题上能以极低的成本得到全局最优解,但在不满足条件的问题上会失效。使用贪心法的关键是先验证问题的两个核心条件(贪心选择性质、最优子结构),再设计明确的贪心策略,最后通过案例验证结果是否正确。贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法策略。它不追求回溯或全局规划,而是以 “短视” 的局部最优策略推进,因此效率通常较高,但并非适用于所有问题。对每个子问题求解,得到子问题的局部最优解。原创 2025-09-18 16:36:22 · 299 阅读 · 0 评论 -
【入门级-算法-4、算法策略:前缀和】
前缀和是一种预处理技术,是预先计算并存储数组从起始位置到每个位置的元素累加和,从而将区间求和的复杂度从 O(n) 降为 O(1)。它的本质是用 “空间换时间”,通过一次预处理存储中间结果,避免后续重复计算,特别适合需要频繁查询数组区间和的场景。n-1],我们定义它的前缀和数组 为: prefix[0…prefix[0] = 0 (或者 prefix[0] = nums[0],根据约定不同)n]来保存数组 nums[0…假设有一个数组,我们需要频繁地查询某个区间 [L, R] 内元素的和。原创 2025-10-17 09:44:20 · 620 阅读 · 0 评论 -
【入门级-算法-5、数值处理算法:高精度的加法】
当我们需要使用一个比这个范围更大的整数(例如,1000位的整数)进行运算时,标准的数据类型就无法满足我们的要求了。4.结果整理:将结果数组逆序,转换为字符串或数字形式,得到最终结果,由于结果是逆序存储的,输出时需要从后往前(即从最高位到最低位)输出。2.逐位相加:从数组的起始位置(即数字的个位)开始,对应位数字相加,再加上上一位的进位(也可能没有进位产生,即进位值为零)。= 1 1 1 1 1 1 1 1 1 0 (最终结果)1 1 1 1 1 1 1 1 1 0 (处理进位)原创 2025-10-17 13:40:41 · 351 阅读 · 0 评论 -
【入门级-算法-5、数值处理算法:高精度的减法】
高精度减法通过将大数字拆分为单个数字的数组,从最低位(右)向最高位(左)依次计算,同时处理 “借位” 问题,最终得到结果。请参考如下文章:https://blog.youkuaiyun.com/papership/article/details/153468146。2、高精度减法用于处理大整数(超过标准数据类型范围)的减法运算。// 比较两个大数的大小,用于确定结果符号。借位减法:从低位到高位逐位相减,处理借位。// 高精度减法:计算 a - b。// 比较两个数字字符串的大小。原创 2025-10-23 17:36:09 · 552 阅读 · 0 评论 -
【入门级-算法-5、数值处理算法:高精度的乘法】
逐位计算乘积:用数组 A 的第 i 位(A [i])乘以数组 B 的第 j 位(B [j]),结果存入结果数组 C 的第 i+j 位(C [i+j] += A [i] * B [j])。统一处理进位:遍历结果数组 C,对每一位执行 “C [k] = C [k] % 10”,进位 “C [k+1] += C [k] / 10”,确保每一位都是 0-9 的数字。数组长度估算:若乘数 A 有 n 位、乘数 B 有 m 位,结果最多有 n+m 位,因此结果数组 C 的初始长度可设为 n+m,避免空间不足。原创 2025-11-05 15:46:19 · 392 阅读 · 0 评论 -
【入门级-算法-5、数值处理算法:高精度整数除以单精度整数的商和余数】
请参考如下文章:https://blog.youkuaiyun.com/papership/article/details/153468146。作为被除数的高精度整数 A[](数组存储,每个元素存一位数字)第9位: (7*10 + 9) / 13 = 6, r = 1。// 被除数(字符串形式)// 将字符串转换为数组(逆序存储,个位在前)// 高精度除法:A ÷ b = C …// 除数(单精度)商数组 C[i] = 当前被除数 / b。原创 2025-12-04 16:42:34 · 341 阅读 · 0 评论 -
【入门级-算法-6、排序算法:排序的基本概念&冒泡排序】
设计算法时,时间复杂度和空间复杂度往往存在权衡关系,优秀的算法设计需要在两者之间找到平衡点,有两种常用解决方法:一个是空间换时间,就是说使用额外存储空间来减少计算时间;一个是时间换空间,就是说减少存储空间但增加计算时间,在实际的开发过程中,要根据实际资源的情况进行调整。时间复杂度:在计算机科学中,时间复杂性,又称时间复杂度,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。8 23 4 11 25 第四次,即比较结果(每一趟最后一次排序结束后,最大的数据“浮出水面”,即找到最大的数)原创 2025-08-15 13:37:58 · 386 阅读 · 1 评论 -
【入门级-算法-6、排序算法: 插入排序】
2、将 key 与它前面的元素(已排序部分)从后向前依次比较。虽然时间复杂度为O(n²),但由于其实现简单、稳定、空间效率高等特点,在实际编程中仍有其用武之地,特别是在作为其他高级算法的组成部分时。从 arr[1](第二个元素)开始,作为当前需要插入的元素(key)。3、每插入一个元素,已排序部分就增加一个元素,未排序部分就减少一个元素。j = i - 1;2、依次将未排序部分的元素插入到已排序部分的正确位置。// 从第二个元素开始(下标1),作为要插入的元素。// 将比 key 大的元素都向后移动一位。原创 2025-09-08 16:41:36 · 501 阅读 · 0 评论 -
【入门级-算法-6、排序算法: 计数排序】
计数排序核心思想:通过 “统计待排序元素的出现次数”然后根据这些计数信息将元素放置到正确的位置,来确定每个元素的最终位置,而非通过元素间的比较完成排序。它仅适用于元素值范围已知且较为集中的场景(例如年龄、考试分数、商品 ID 等),时间复杂度可达到线性级别,效率远高于冒泡、归并等比较型排序,时间复杂度可以达到 O (n + k)(其中 n 是元素个数,k 是元素值的范围)。计算前缀和:将计数数组转换为前缀和数组,以确定每个元素在结果数组中的位置。// 步骤6:反向遍历原数组,构建有序数组(保证稳定性)原创 2025-09-26 17:11:30 · 370 阅读 · 0 评论 -
【入门级-算法-6、排序算法:选择排序】
第二轮:从 arr[1] 到 arr[n-1] 中找到最小的元素,将其与 arr[1] 交换。第一轮:从 arr[0] 到 arr[n-1] 中找到最小的元素,将其与 arr[0] 交换。第 i 轮:从 arr[i] 到 arr[n-1] 中找到最小的元素,将其与 arr[i] 交换。// 如果 minIndex == i,说明 arr[i] 已经是未排序部分的最小值,无需交换。// 2. 内层循环,在未排序部分 (i+1 到 n-1) 中寻找真正的最小值的位置。// 更新最小元素的索引。原创 2025-09-08 14:41:50 · 607 阅读 · 0 评论 -
【入门级-算法-9、动态规划:动态规划的基本思路】
简单来说,就是思考 dp[i] 如何由前面的状态(如 dp[i-1], dp[i-2] 等)推导出来,即如何利用已经计算过的结果。有了 dp[0] 和 dp[1]之后,我们就可以根据 dp[i] = dp[i-1] + dp[i-2] 计算出 dp[2], dp[3] …我们需要确定如何遍历整个状态空间,以保证在计算 dp[i] 时,它所依赖的 dp[i-1] 和 dp[i-2] 都已经被计算出来了。所以 dp[0] = 1。dp[1]:爬到第1阶,只有一种方法(爬1个台阶),所以 dp[1] = 1。原创 2025-12-09 21:16:17 · 608 阅读 · 0 评论 -
【入门级-C++程序设计:1、程序基本概念-常量与变量的命名、定义及作用】
在C++中,常量(Constants)和变量(Variables)的命名、定义及作用有所不同,它们直接影响代码的可读性、安全性,还关乎团队协作效率性和后期维护性,良好的命名规范能让代码更清晰、逻辑更易懂。constexpr 修饰符(C++11 起):定义 “编译时常量”,要求值在编译期即可确定,可用于需要编译期常量的场景(如数组大小、模板参数)。表示固定不变的值:用于存储程序中逻辑上不会变化的量(如数学常数、配置参数上限、固定的字符串等),增强代码可读性(用名称代替魔术数字)。// 表示默认名称的常量。原创 2025-07-05 07:38:46 · 489 阅读 · 0 评论 -
【入门级-C++程序设计:1、程序基本概念-头文件与名字空间的概念】
头文件是扩展名为 .h 或 .hpp 的文件,用于声明类、函数、变量、常量、宏等代码元素,只是声明,并不包含具体实现,以便在多个源文件(.cpp)中共享这些声明,实现代码的模块化和复用。接口定义:头文件相当于模块的 “接口说明书”,使用者只需关注头文件中的声明,无需了解 .cpp 中的具体实现。隐藏实现细节,仅暴露必要的接口,做到接口与实现分离。4、头文件内容的编码规范:头文件中应只放声明(如函数原型、类定义),避免放定义(如函数实现、全局变量初始化),否则可能导致 “多重定义” 错误。原创 2025-07-04 21:07:26 · 966 阅读 · 0 评论 -
【入门级-C++程序设计:1、程序基本概念-编辑、编译、解释、调试的概念】
一、编辑(Editing)1、 概念编辑是指使用文本编辑器或集成开发环境(IDE)创建或修改程序源代码的过程。2、使用的编辑工具文本编辑器:如 VS Code、Notepad++ 等。集成开发环境(IDE):如 Visual Studio、CLion、Eclipse 等,集成了编辑、编译、调试等功能。3、主要工作编写代码逻辑,添加注释以提高可读性,格式化代码(缩进、对齐等)。二、编译(Compiling)原创 2025-07-04 09:26:03 · 518 阅读 · 0 评论 -
【入门级-C++程序设计:1、程序基本概念-标识符、关键字、常量、变量、字符串、表达式的概念】
/ 表达式结果为true/false。#define PI 3.14159 // 宏常量(预处理替换)数据类型:int, float, double, bool, char。// const常量。// 声明未初始化(值随机)逻辑表达式:(age >= 18) && (sex == male)定义:由操作数(变量、常量)和运算符组成的计算式,最终产生一个值。由字母(a-z, A-Z)、数字(0-9)和下划线(_)组成。字面常量:直接写出的值(如 42, 3.14, ‘A’)。原创 2025-07-01 21:45:59 · 430 阅读 · 0 评论 -
【入门级-C++程序设计:2、基本数据类型】
C++ 提供了丰富的基本数据类型,包括:整数型(int、long)、实数型(float、double)、字符型(char)和布尔型(bool)长整型 long:至少64位(8字节),范围约为 -9.2×10¹⁸ 到 9.2×10¹⁸。基本整型 int:通常为32位(4字节),范围约为 -2.1×10⁹ 到 2.1×10⁹。双精度浮点 double:通常64位(8字节),约15位有效数字。char:通常8位,存储ASCII字符(-128到127)2、实数类型:浮点类型,用于表示实数,精度和范围有所不同。原创 2025-06-30 21:31:50 · 257 阅读 · 0 评论 -
【入门级-C++程序设计:3、程序基本语句-cin语句、scanf语句、cout语句、printf语句、赋值语句、复合语句】
复合语句(也称为块语句)是 C++ 中由一对花括号 {} 包围的语句序列,它在语法上花括号 {} 包围的多条语句被当作一个整体,整体被视为一个语句。cin (C++使用) 和 scanf (C使用) 都是用于输入数据的函数,都可以在C++的代码中使用,下面详细进行说明,注意二者使用上的区别。功能说明:cout 是 C++ 标准输出流对象,定义在 头文件中,用于向标准输出设备(通常是控制台/终端)输出数据。功能说明:是 C++ 标准输入流对象,定义在 头文件中,用于从标准输入(通常是键盘)读取数据。原创 2025-07-08 15:27:55 · 384 阅读 · 0 评论 -
【入门级-C++程序设计:3、程序基本语句-if语句、switch语句、多层条件语句】
在 C++ 中,多层条件语句指的是在一个条件语句内部嵌套另一个(或多个)条件语句,用于处理更复杂的判断逻辑。常见的形式是在 if 语句内部再包含 if 或 else if 语句,或者是if 语句内部包含switch语句。一、if 语句: C++ 中最基础的条件控制语句,用于根据条件判断执行不同的代码块。// 条件1和2为假且条件3为真时执行的代码。// 条件1为真但条件2为假时执行的代码。// 条件1为假且条件2为真时执行的代码。// 条件1为真,条件2为假,条件3为真。// 所有条件都为假时执行的代码。原创 2025-08-04 10:16:18 · 573 阅读 · 0 评论 -
【入门级-C++程序设计:3、程序基本语句:for语句、while语句、do while语句】
for 循环最适合计数场景,while 适合条件驱动,do-while 则适合必须执行至少一次的情况。C++ 提供了三种主要的循环语句:for、while 和 do-while,每种都有其特定的使用场景。执行顺序 先判断后执行 先判断后执行 先执行后判断。变量作用域 循环内 外部或循环内声明 外部或循环内声明。continue:跳过本次循环剩余部分,进入下一次循环。cout << "找到负数: " << num;return:退出整个函数(包括其中的循环)// 找到后立即退出循环。原创 2025-08-01 13:04:03 · 222 阅读 · 0 评论 -
【入门级-C++程序设计:3、程序基本语句-多层循环语句】
多层循环的核心是外层循环控制 “轮次”,内层循环控制每轮的 “细节操作”,执行时先完整执行内层循环,再进入外层循环的下一次迭代。j++) { // 内层循环:j=0,1(每次i变化时,j从0重新开始)4)判断内层循环条件:若为true,执行内层循环体,然后执行内层迭代,重复步骤 4;i++) { // 外层循环:控制行(0~2)i++) { // 外层循环:i=0,1。j++) { // 内层循环:控制列(0~3)// 内层循环体(每次外层循环,内层会完整执行一遍)原创 2025-07-08 22:04:16 · 505 阅读 · 0 评论 -
【入门级-C++程序设计:4、基本运算】
位运算(Bitwise Operations)是指直接对整数的二进制位进行操作,常用于底层编程、性能优化和某些特定算法(如加密、压缩、位掩码等)。关系运算符用于比较两个值,比较结果返回 true(1)或 false(0)。取模(余数),仅适用于整数,结果符号与被除数相同,结果为2。// false(因为 b 为 false)整除 / int c = a / b;// true(因为 a 为 true)否则为 false。前缀形式(++x) 和 后缀形式(x++),两者的行为有重要区别(计算顺序不同)。原创 2025-07-11 13:09:16 · 368 阅读 · 0 评论 -
【入门级-C++程序设计:5、数学库常用函数】
数学库常用函数介绍,包括:绝对值函数、四舍五入函数、下取整函数、上取整函数、平方根函数、常用三角函数、对数函数、指数函数等。原创 2025-07-29 12:34:33 · 988 阅读 · 0 评论 -
【入门级-C++程序设计:6、结构化程序设计】
它通过清晰的逻辑关系展示 “做什么”“怎么做”“先做什么后做什么”,帮助人们理解复杂流程的结构、顺序和分支条件,是跨领域沟通、流程优化和问题分析的重要手段。逐步求精(Stepwise Refinement):软件设计的每一层都进行更详细的定义,每次细化只关注当前层次的细节,通过多次迭代细化设计,逐步补充细节,达到可实现的代码级别。模块化(Modularity):将功能拆分为独立模块(函数/类),每个模块有明确的功能和接口,模块间低耦合,模块内高内聚,提高复用性和可维护性。int a = 5;原创 2025-07-30 12:33:29 · 852 阅读 · 0 评论 -
【入门级-C++程序设计:7、数组-数组与数组下标&数组的读入与输出】
/ 自动确定数组的大小,给数组赋了5个值,因此数组长度为5。不能越界访问:访问 arr[-1] 或 arr[size] 可能导致程序崩溃或不可预测的行为。// 声明包含5个整数的数组(未初始化)下标从0开始:第一个元素是 arr[0],最后一个元素是 arr[size-1]数组名代表首地址:arr 等价于 &arr[0],数组名是数组首地址的地址常量。// 输出带索引的数组。// 从文件读取数组。原创 2025-08-11 15:31:39 · 505 阅读 · 0 评论 -
【入门级-C++程序设计:7、数组-二维数组与多维数组】
/ 3行4列的未初始化数组。// 2个二维数组,每个有3行4列。j++) { // 行循环。1、三维数组初始化, 2个"层",每个层是3行4列的二维数组。数据类型 数组名[维度1][维度2][维度3]…定义方式:数据类型 数组名[行数][列数];{1, 2, 3}, // 第一行。原创 2025-08-04 13:16:08 · 320 阅读 · 0 评论 -
【入门级-C++程序设计:8、字符串的处理-字符数组与相关函数&string类与相关函数】
/ 返回负数(s1 < s2)、0(相等)、正数(s1 > s2)char str3[6] = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’};// 逐个字符初始化。// 安全复制,最多复制 3 个字符(不会自动补 ‘\0’)char* p = strchr(str, ‘o’);// 安全连接,最多添加 2 个字符(自动补 ‘\0’)// 自动计算长度(包含 ‘\0’,实际长度为 6)// 等价于 char str2[6] = {‘H’,‘e’,‘l’,‘l’,‘o’,‘\0’};原创 2025-08-06 13:08:45 · 451 阅读 · 0 评论 -
【入门级-C++程序设计:9、函数与递归-函数定义与调用、形参与实参】
// 形参 num 是实参的副本。void printSum(int a, int b) { // a 和 b 是形参。change(a);// 实参 a 的值(10)拷贝给形参 num。// 3 和 7 是实参(常量)// 输出 10(a 未被修改)// 输出 100(a 被修改)// 输出 100(a 被修改)原创 2025-08-07 22:28:13 · 477 阅读 · 0 评论
分享