- 博客(40)
- 资源 (1)
- 收藏
- 关注
原创 C++代码:计算真因子和
真因子和是指一个数的所有正因子(除了这个数本身)之和。例如,10的真因子是1, 2, 和5,它们的和是8。public:/*** @brief 返回一个数的真因子和* @param num 输入的数字*/return 0;// 0和1的真因子和为0i++) {sum += i;return sum;/*** @brief 运行自测试*/// 10的真因子和是1 + 2 + 5 = 8// 15的真因子和是1 + 3 + 5 = 9// 1的真因子和是0。
2024-10-11 09:10:20 61
原创 C/C++ 趣味代码目录
0-100行练手C++实现线性拟合C++控制台井字棋C++实现在控制台输出红色爱心C语言实现三角定位C++彩色星空C++实现二叉树C++ 纳秒级计时器C++代码:简单的神经元实现 C 语言实现一个循环队列C++代码:弹力小球C++代码:矩阵的加减乘运算C++中的数制转换工具使用C++实现表达式求值器C++实现雪花飘落效果可视化冒泡排序C++实现简单的内存池100-300行C++贪吃蛇C++ 小球打砖块C++ 实现K-means算法
2024-09-09 14:59:20 235
原创 使用C++实现雪花飘落效果
在程序中,我们定义了一个Snow结构体,用于存储每个雪花的状态信息,包括位置、大小、速度和颜色。1314// 设置雪花总数double x;// 雪花横坐标int y;// 雪花纵坐标int r;// 雪花的大小// 雪花下落速度int color;// 雪花的颜色// 保存所有雪花通过本文,我们学习了如何使用C++和库实现一个简单的雪花飘落效果。该程序展示了如何在图形界面编程中处理对象的初始化、移动和重绘。这种技术可以应用于更多复杂的图形和动画效果的开发中。
2024-08-15 08:35:43 127
原创 使用C++实现表达式求值器
表达式求值器主要处理两类任务:解析和计算。解析过程将输入的字符串表达式转换为可以操作的数据结构,而计算过程则对这些数据结构进行运算以得出最终结果。本文详细介绍了如何使用C++实现一个能够解析和计算包含加、减、乘、除以及括号的算术表达式的求值器。我们使用了栈数据结构来辅助解析和计算过程,并展示了如何将输入的字符串表达式转换为逆波兰表示法,并计算其值。通过这种方法,我们能够有效地处理包含复杂层次结构的算术表达式。
2024-08-15 08:34:57 65
原创 使用C++实现表达式求值器
表达式求值器主要处理两类任务:解析和计算。解析过程将输入的字符串表达式转换为可以操作的数据结构,而计算过程则对这些数据结构进行运算以得出最终结果。本文详细介绍了如何使用C++实现一个能够解析和计算包含加、减、乘、除以及括号的算术表达式的求值器。我们使用了栈数据结构来辅助解析和计算过程,并展示了如何将输入的字符串表达式转换为逆波兰表示法,并计算其值。通过这种方法,我们能够有效地处理包含复杂层次结构的算术表达式。
2024-08-05 10:50:50 129
原创 C++实现简单的内存池
首先,我们定义一个名为的模板类,它接受一个类型参数T和一个默认大小为100的整数参数PoolSize。这个类将用于管理内存池的分配和回收。// ...
2024-05-06 14:44:25 419
原创 C++中的数制转换工具
本文介绍了一个简单的C++数制转换工具,该工具可以方便地实现二进制、十进制和十六进制之间的转换。未来,可以进一步扩展该工具的功能,例如支持其他数制(如八进制)或添加更多的用户交互和错误处理功能。二进制、十进制和十六进制是最常用的数制。二进制是计算机内部处理数据的基础,十进制是我们日常生活中最常用的数制,而十六进制则在编程和硬件相关领域中广泛使用。程序将根据用户的选择进行相应的数制转换,并输出结果。下面是一个使用C++编写的简单数制转换工具,该工具包含了二进制、十进制和十六进制之间的转换功能。
2024-04-25 09:59:43 491
原创 详解 C++ 实现K-means算法
我们定义了一个Point结构体来表示二维空间中的点。这个结构体很简单,只有两个成员变量x和y,分别表示点在二维空间中的横坐标和纵坐标。还有一个构造函数,用于创建点对象时初始化坐标。
2024-04-18 08:46:09 872
原创 C++教程
基础篇:1.1 C++ 编程语言简介基础篇:1.2 C++的历史基础篇:1.3 C语言与C++的区别基础篇:1.4 C++的第一个程序,hello world基础篇:1.5 C++变量声明、定义与作用域基础篇:1.6 C++数据类型基础篇:1.7 C++关键字基础篇:1.8 C++ 中的类型限定符基础篇:1.9 C++ 运算符详解基础篇:1.10 C++的基本输入输出基础篇:1.11 C++中 if 语句基础篇:1.12 C++中的Switch语句基础篇:1.13 C++中的跳转语句
2024-04-11 15:06:06 148
原创 推荐一个对C++新手友好的Github项目,600行实现跨平台数独
数独作为一种经典的逻辑游戏,不仅能够锻炼人们的逻辑思维能力,还能在编程实践中提供丰富的问题解决思路。本文将以开源项目为基础,探讨数独游戏的设计思路与实现方法,旨在为编程爱好者和初学者提供一个学习和参考的范本。
2024-04-05 11:41:07 634
原创 C++实现二叉树:构建、遍历与应用
以二叉搜索树(Binary Search Tree, BST)为例,它是一种特殊的二叉树,对于每个节点,其左子树所有节点的值都小于该节点的值,而右子树所有节点的值都大于该节点的值。二叉树(Binary Tree)是每个节点最多只有两个子节点的树结构,通常子节点被称作“左子节点”和“右子节点”。在C++中,我们可以通过定义一个结构体来表示二叉树的节点,并使用指针来构建节点间的关系。二叉树在计算机科学中有着广泛的应用,如表达式树用于解析算术表达式,二叉搜索树用于高效查找,二叉堆用于实现优先队列等。
2024-01-26 20:35:58 635
原创 C语言代码:用 C 语言实现一个循环队列
然后,它进行一系列出队操作,将队列中的元素依次移除,并打印出来。在本文中,我们将使用C语言来实现一个循环队列,并通过代码和注释进行详细讲解。本文将介绍如何使用C语言实现一个循环队列,包括队列的定义、入队、出队、判空和判满等操作。下面是一个完整的循环队列的实现,包括初始化队列、判断队列是否为空、判断队列是否已满、入队操作、出队操作和获取队头元素等操作。有时候,我们可能需要获取队头元素的值,但并不想将其从队列中移除。判断队列是否已满的方法也很简单,只需要检查队尾指针是否指向队头指针的前一个位置即可。
2023-12-09 13:53:10 693
原创 用 C++ 实现线性拟合
我们的目标是编写一个程序,可以接受一组数据点作为输入,并使用最小二乘法来拟合一条直线。最小二乘法是一种常用的拟合方法,它通过最小化数据点到拟合直线的垂直距离的平方和来确定最佳拟合直线的参数。最小二乘法是一种常用的拟合方法,它通过最小化实际观测值与拟合值之间的残差平方和来确定拟合直线的参数。在线性拟合中,我们假设拟合直线的公式为y = kx + b,其中k是斜率,b是截距。我们希望用一条直线来拟合这些数据点,我们可以通过数学方法得到拟合直线的表达式为y = 2x + 1。
2023-10-29 12:21:23 1113
原创 一个 C++ 纳秒级计时器
这里我们使用 std::chrono::time_point_cast 函数将时间点转换为纳秒级别的计时,然后使用 time_since_epoch 函数获取自纪元(1970-01-01 00:00:00 UTC)以来的纳秒数。这样,我们可以通过结束时间的纳秒数减去开始时间的纳秒数,得到代码执行的总纳秒数。当然,你也可以在需要开始计时的时候手动调用开始计时的函数,这里为了简化起见,我们在构造函数中开始计时。以下是一个使用 std::chrono 创建的纳秒级计时器的示例,并对其进行了详细的介绍。
2023-08-28 20:05:25 331
原创 算法详解:可视化冒泡排序算法及其优化
冒泡排序是一种基本的排序算法,通过不断交换相邻元素的位置实现排序。虽然冒泡排序算法不适用于对大规模数据进行排序,但对于小规模数据或者已经基本有序的数据,冒泡排序算法仍然是一种可行的排序算法。冒泡排序算法是一种稳定的排序算法,因为在比较相邻元素大小并交换位置时,只有前面的元素比后面的元素大才会进行交换,不会改变相同元素的相对位置。冒泡排序(Bubble Sort)是一种基本的排序算法,它的基本思想是通过不断交换相邻元素的位置,将待排序的元素按照从小到大(或从大到小)的顺序逐步排列。重复以上步骤直至排序完成。
2023-07-16 12:58:16 303
原创 学习 STL:string容器详解
string 容器是STL中用于字符串处理的重要工具,它提供了丰富的成员函数,可以方便地对字符串进行操作。程序员可以通过使用string容器,简化字符串处理的过程,提高程序的可读性和可维护性。string容器支持多种赋值运算符,包括赋值给空字符串、赋值给原生字符串、赋值给其他string容器等。string容器提供了多种比较字符串的方式,包括比较两个字符串的大小、判断两个字符串是否相等等。通用性:string容器可以适用于不同类型的字符串,例如ASCII码字符串、Unicode字符串等。
2023-07-13 14:17:33 121
原创 C++代码:矩阵的加减乘运算
在数学中,矩阵是一种非常重要的概念。它们在各种应用中都有着广泛的应用,例如图像处理、神经网络、物理学、统计学等领域。而矩阵的加减乘是矩阵运算中最基本的操作之一。在本文中,我们将介绍如何使用 C++ 语言实现矩阵的加减乘。
2023-07-03 12:30:54 702
原创 C++代码:弹力小球
在实现过程中,我们学习了如何使用向量来计算小球的移动方向和速度,如何使用图形库来绘制小球和轨迹线。最后,我们需要注意的是,虽然 graphics.h 库非常适合初学者进行图形编程的学习,但是在实际开发中,我们可能会使用更加现代的图形库,比如 OpenGL、DirectX 等。我们可以使用鼠标位置和小球位置之间的向量来计算小球的加速度,然后根据小球的速度和加速度来计算小球的位置。接下来,我们将小球的速度加上计算出的加速度,然后将速度乘以一个小于 1 的系数(这里是 0.98),来模拟空气阻力对小球的影响。
2023-06-12 12:20:09 528
原创 C++代码:简单的神经元实现
在这个简单的神经元实现中,我们使用的是一个线性的激活函数,即f(sum)=sum。权重是神经元接收到的输入信号的重要性的度量,它决定了每个输入信号对神经元输出的影响程度。值得注意的是,这个例子中使用的传输函数是一个简单的线性函数,这在实际应用中并不常见。本文将介绍如何用C++来实现一个简单神经元,通过对神经元的基本组成部分进行逐一分析,帮助读者了解神经元的工作原理、作用及其在人工智能领域的应用。在一个简单的神经元中,输出通常是一个实数,它表示神经元的激活值或者输出值。在当前状态下,神经元的输出可能具有值。
2023-05-14 11:41:40 470
原创 C++代码:控制台版井字棋
它包括了基本的游戏逻辑、用户输入和游戏结果判断。请注意,这个实现没有对输入进行详尽的检查,可能会导致程序崩溃或产生未定义行为。要在实际项目中使用这段代码,需要对输入进行更加严格的检查。在每次循环中,根据当前玩家输入的行和列更新棋盘,然后打印棋盘。用 check_win 函数检查给定玩家是否获胜,通过检查所有可能的获胜条件(行、列和对角线)。然后用 check_draw 函数检查是否平局,遍历整个棋盘,如果发现空格,则说明游戏尚未结束。初始化游戏,我们只需要画出棋盘,然后初始化 player1 的状态。
2023-05-13 15:50:02 453
原创 为什么要慎用匿名namespace?
在 C++ 中,namespace 是一个很重要的概念,它可以帮助我们避免命名冲突的问题。然而,在使用 namespace 时,有些 C++ 程序员会使用匿名 namespace,以避免命名冲突。匿名 namespace 是指没有名称的 namespace,它的作用域仅限于当前文件。虽然匿名 namespace 看起来很方便,但是在实际使用中,我们应该慎重考虑是否使用它。本文将深入探讨为什么要慎用匿名 namespace。
2023-05-05 11:27:29 828
原创 C++彩色星空
程序使用了 、 和 等标准头文件,以及一些宏定义。其中,MAXSTAR 宏定义了星星的总数,STAR 结构体定义了每个星星的属性,包括横坐标、纵坐标、速度和颜色。int x;int y;int speed;int color;100int x;int y;int speed;int color;
2023-04-27 16:15:01 1574
原创 用C++实现在控制台输出红色爱心
本篇文章介绍了如何使用C++来实现在控制台中输出红色爱心。通过学习这个小案例,大家可以了解到一些有趣的C++语法和API调用方法,同时也可以锻炼自己的编程能力和创造力。在开始之前,我们需要先了解几个知识点。首先是控制台颜色输出,可以通过Windows API提供的SetConsoleTextAttribute函数来设置控制台文字颜色。在日常编程中,我们经常需要使用C++来实现各种有趣的功能。本篇文章将介绍如何在控制台中输出红色爱心,通过这个小案例,大家可以了解到一些有趣的C++语法和API调用方法。
2023-04-05 13:32:41 2161
原创 Linux 中查看 CPU 核心数的方法
lscpu 命令可以显示计算机处理器架构相关的信息,包括硬件架构、型号名称、CPU MHz、CPU 核心数等等。/proc/cpuinfo 是一个存储有关 Linux 系统中 CPU 详细信息的虚拟文件。该命令会输出系统中可用的 CPU 核心数。该命令会输出每个 CPU 核心的数量。这表明每个 CPU 核心有两个处理器。这表明系统中有 4 个 CPU 核心。
2023-04-03 15:01:48 4897 1
原创 Linux进程查询——ps命令
命令是最基本的、非常强大的进度查看命令。使用这个命令,你可以确定哪些进程正在运行以及它们的状态,它们是否已经完成,是否已经死亡,哪些进程占用了太多的资源等等。为我们提供了一个一次性的进程视图,但它提供的结果不是动态的和连续的;如果你想监控进程的时间,你应该使用。为了监视和控制进度,你必须首先了解当前的进度,也就是说,你需要查看当前的进度,而。命令时的进程,如果你想动态显示进程信息,可以使用。列出的是当前进程的快照,也就是执行。用于列出系统中当前运行的进程,命令是用来杀死一个进程的。
2022-11-15 15:29:23 870
转载 人工智能 vs. 机器学习 vs. 深度学习有什么区别?
人工智能技术正在改变世界。虽然创建一个像人类一样聪明的人工智能系统仍然非常遥远,但机器学习已经在许多方面超过了我们,比如说计算能力。
2022-11-11 16:51:42 186
转载 什么是面向对象编程?
面向对象编程(OOP)是当今编程就业市场的一项基本技能。但是,如果刚刚开始编程,那么可能对这个东西感觉很抽象。OOP概念其实很容易掌握,特别是如果我们已经开始学习函数式编程。OOP 可帮助我们编写干净、可扩展且可测试的代码。
2022-11-09 18:14:56 627
原创 linux创建文件夹命令
我们可以使用mkdir命令在 Linux 或类似 Unix 的操作系统中创建新目录或文件夹。本文将介绍如何在 Linux 或 Unix 系统中创建文件夹(也称为“目录”)。:1.在 Linux 中打开终端应用程序。2.输入mkdir命令。3.输入文件夹名称。知道了最基本的语法,那么我们就上机实践一下。首先我们打开中断后,在终端页面输入mkdir foo。接着使用ls命令,我们可以查看是否创建成功。可以看到,文件夹被成功创建。...
2022-08-30 12:41:46 34845
原创 NOMA计算
1.基本计算假设在一个子信道上能同时上传N和用户信号,那么整数n代表n个用户,子信道宽度表示为Bsc,用户与基站之间的信道系数为hn,那么该信道的输出的叠加信号就是:x=∑i=1Npisix = \sum_{i=1}^{N}{\sqrt{p_i}s_i}x=i=1∑Npisi其中pi表示的是,该信道第i个用户的信号输出功率,si表示第i个用户的调制信号。对于接收端来说,用户n收到的叠加信号就是:yn=hn∑i=1Npisi+wny_n = h_n\sum_{i=1}^{N}{\sqr
2022-02-13 05:22:08 921
原创 char *和const char *是相同的类型吗?
两者的数据类型还是不一样的: char* a = "hello, world!"; const char* b = "hello, world!"; cout << typeid(a).name() << endl; // 输出:Pc cout << typeid(b).name() << endl; // 输出:PKc虽然char* = “hello” 和const char* ="hello"有差不多的用法,但是仍然是不一样的。比如说char
2022-02-12 05:10:11 625
原创 NOMA基础知识
通常, 无线通信网络嵌入无线电接入技术(RAT), 该技术采用多址技术(无线蜂窝系统的一个基本功能)为多个移动终端提供到核心网络的连接。 因此, 根据其基本原理, 多址接入技术可以归类为:正交多址 (OMA) 技术非正交多路访问 (NOMA)技术OMA:OMA允许每个用户通过向每个用户分配不同的正交资源(时间/频率/代码) 块 (RB) 来从所需信号中完全分离不需要的信号。具体例子:频分多址 (FDMA)、 时分多址 (TDMA)、 码分多址 (CDMA) 和正交频分多址 (OFDMA)。N
2022-01-14 23:21:49 3749
原创 如何在linux中关闭一个进程
如何在linux中kill一个进程刚开始学习Linux的时候,总是直接点击×来关闭程序。虽然知道这是关闭整个终端程序,但是奈何如此简单的事情对于新手来说都是很困难的。????在 Linux 里中止程序后来知道,在linux中可以按ctrl+c来关闭一个程序。比如说在以下的程序中:如果直接点击叉叉,就会出现该提示。而按下ctrl+c后就可以直接退出来了。这个插入符号(^)代表 Ctrl。所以基本上,终端将 Ctrl+C 的按键显示为 ^C。怎么在linux里面kill一个进程如果该程序跑起
2021-09-15 20:47:44 46211 1
原创 网络通信笔记
网络通信文章目录网络通信1.socket编程基础socket通信的三要素socket通信模型套接字概念socket 通信创建流程图网络字节序和主机字节序sockaddr数据结构sockaddrsockaddr_in总结IP地址转换函数2.Socket 编程函数socket 函数bind 函数accept函数connect 函数出错处理函数关闭连接1.socket编程基础socket通信的三要素1.通信的目的ip地址2.使用的端口号3.使用的传输层协议(如TCP、UDP)socket通信模型
2021-09-04 13:23:24 144
原创 c++贪吃蛇
贪吃蛇程序设计一个简单的贪吃蛇程序设计,适合初学者。简介本文的代码比较简单,只涉及一些的控制台知识,适合初学者学习。1.光标移动函数先写一个光标移动函数。1. void Goto(short x, short y) { COORD pos = { x,y }; HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);//获得输出设备的句柄 SetConsoleCursorPosition(hOut, pos);//设置控制台光
2021-08-17 17:09:35 820
原创 linux终端里面的光标很粗,怎么调细
这个问题是我刚开始学习linux时碰到的问题,不知道怎么光标就变得很粗了,感官非常不好。上网搜索的时候,也没有很多的回答,故此记录一下。1.第一步,右键点击终端空白处,然后点击配置文件。2.选择配置文件首选项3.最后就可以选择光标的样子了...
2021-07-28 22:33:22 3355 3
翻译 SMALL_RECT的作用
定义:它定了一个矩阵左上角和右下角的坐标。语法:typedef struct _SMALL_RECT { SHORT Left; SHORT Top; SHORT Right; SHORT Bottom;} SMALL_RECT成员变量Left:左上角的x坐标Top:左上角的y坐标Right:右下角的x坐标Bottom:右下角的y坐标作用这个结构是被控制台函数设定控制台屏幕缓冲区的行列。参考:https://docs.microsoft.com/en-us/wi
2021-07-18 13:54:52 609
30道 C++ 常见面试题
2024-04-05
23道常见的C语言面试题
2024-04-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人