
c++
文章平均质量分 53
熬了夜的程序员
coding
展开
-
使用C++实现简单的TCP服务器和客户端
本文将通过一个简单的例子,介绍如何使用C++实现一个基本的TCP服务器和客户端。这个例子展示了如何创建服务器端接收客户端的连接,如何处理接收到的数据,并如何将数据发送回客户端。TCP服务器的实现:包括如何创建服务器、监听端口、接收客户端请求等。TCP客户端的实现:客户端如何连接到服务器、发送数据并接收服务器返回的数据。通过这篇文章,我们实现了一个简单的 TCP 服务器和客户端示例,学习了如何使用 C++ 来进行网络编程。原创 2025-02-24 11:12:34 · 698 阅读 · 0 评论 -
Linux操作系统中的信号
信号是一种进程间通信机制,用于通知进程某个事件的发生。信号可以由内核、用户、其他进程或硬件生成,并可以在进程运行时的任意时刻传递给进程。每种信号都有一个对应的信号编号和默认行为。忽略信号:进程可以选择忽略某些信号,使其对进程无影响。捕捉信号:通过定义一个信号处理函数,进程可以捕捉并自定义处理信号的行为。执行默认操作:对于大多数信号,Linux提供了默认的处理操作,如终止进程、暂停进程、生成核心转储文件等。原创 2024-08-13 15:54:15 · 919 阅读 · 0 评论 -
C/C++实现汉诺塔游戏和详细解
通过这篇文章,我们不仅学习了如何用C/C++编写汉诺塔的递归解决方案,还深入了解了递归的概念及其在实际问题中的应用。希望这篇文章能帮助你更好地理解递归算法,并启发你解决其他看似复杂的问题。原创 2024-05-13 17:14:02 · 395 阅读 · 0 评论 -
【EasyX】扫雷
6、位置搜索函数poi_sum:队列处理函数的辅助函数,将输入点的坐标周围8个格子的雷数返回给duires;5、队列处理函数duires:对无雷的输入进行扩展搜索、调用位置搜索函数辅助、调用响应函数输出;8、主控函数Control:接受鼠标的输入,处理简单的逻辑,复杂的交由队列处理函数执行;7、响应函数do_null、not_null:随时处理队列处理函数的结果;4、显示函数Show:依照层次结构显示雷区;9、计时器函数Time:计算累计时间并显示;1、全局变量:时间、地图、图片资源、状态;原创 2023-07-01 22:38:00 · 861 阅读 · 0 评论 -
【EasyX】反弹球消砖块
第二步绘制静态挡板,挡板的中心坐标为bar,高度为bar_high,宽度为bar_width,挡板的上下左右位置坐标为bar_left/bar_right/bar_top/bar_bottom,调用函数bar进行绘制。第四步加入brick_num个砖块,int isBrickExisted[Brick_num]记录某一块砖块是否存在。如果小球与i号砖块发生碰撞,则让该砖块消失(isBrickExisted[i] = 0),不显示。第三步用A/S/W/D实现挡板的移动,判断挡板是否接中小球,接中后反弹。原创 2023-06-11 23:42:29 · 806 阅读 · 0 评论 -
【EasyX】实时时钟
第三步定义系统变量(SYSTEMTIME ti),通过GetLocalTime(&ti)获取当前时间,秒针的角度由实际时间决定,即secondAngle = ti.wSecond * 2 * PI/60。第五步绘制表盘,并可以利用outtextxy()函数在画面中输出文字,为了让时针、分针的转动更自然,对求解时针、分针的角度进行了改进。第四步添加时针、分针,和秒针变化相比,他们的长度、宽度、颜色、旋转速度有一定的不同。本博客介绍利用EasyX实现一个实时钟表的小程序,同时学习时间函数的使用。原创 2023-06-10 22:16:41 · 2350 阅读 · 0 评论 -
C++实现有理数类
C++只提供了整数类和浮点数类,但是没有有理数类,所以需要自己写一个有理数类。我们将使用分数来表示一个有理数。即Rational类有两个数据域,分子叫做 numerator,分母叫做denominator,且分母不能为0。同时,一个有理数可能又很多表现形式,比如1/4可以表示为3/12,2/8等,我们统一用化简后的形式表示这个数,比如1/4。原创 2022-09-04 17:43:43 · 1560 阅读 · 0 评论 -
C语言实现数独小游戏
C语言控制台数独游戏,注释详细效果图#include <stdio.h>#include <stdlib.h>#include <memory.h>#include <math.h>#include <time.h>#include <windows.h>#include <string.h>#include <conio.h>#include <stdarg.h>#in原创 2022-03-11 10:02:12 · 8756 阅读 · 7 评论 -
C语言实现进制转换、移位运算小工具
流程图#include <stdio.h>#include <stdlib.h>#include <math.h>#include <conio.h>#include <stdarg.h>#include <ctype.h>#include "conversion.h"char MainMenu(); //主菜单void pause(const char *str, ...); //暂停程序void Tran原创 2022-03-11 09:52:17 · 570 阅读 · 0 评论 -
C/C++ 常用算法手册(纯代码)
项目在Github上,不定期更新。冒泡排序#include <iostream>#include <array>#include <cstdlib>#include <ctime>using namespace std;constexpr int SIZE = 10;void BubbleSort(array<int, SIZE>& arr){ int length = arr.size(); fo原创 2022-03-10 12:18:48 · 1526 阅读 · 0 评论 -
C语言实现base58算法
Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+“和”/"符号。Base58 与 Base64 异同相同一般都用于URL,邮件文本,可见字符显示。都会造成信息冗余,数据量增大,因此不会用于大数据传输编码。区别编码集不同,Base58 的编码集在 Base64 的字符集的基础上去掉了比较容易混淆的字符。Base64 采用直接切割 bit 的方原创 2022-03-10 12:07:39 · 1031 阅读 · 0 评论 -
C++ 命令行版贪吃蛇(附下载地址)
下载地址原创 2021-12-24 18:11:42 · 570 阅读 · 0 评论 -
Linux C语言实现输入密码显示星号-手动实现getch()
Linux C语言实现输入密码显示星号-手动实现getch()废话不多说直接上代码github传送门#include <stdio.h>#include <stdlib.h>#include <string.h>#include <termios.h>#include <unistd.h>int getch(void);void get_password(char *password);int main(){ ch原创 2021-12-21 17:31:49 · 1562 阅读 · 0 评论 -
力扣(LeetCode)初级算法--只出现一次的数字
文章目录题目解法说明C解法C++解法GO解法题目只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/leetbook/read/top-interview-questions原创 2021-06-17 11:54:07 · 240 阅读 · 1 评论 -
力扣(LeetCode)初级算法--移除元素
文章目录题目C++解法题目移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums原创 2021-01-07 17:42:54 · 220 阅读 · 0 评论 -
C和指针-编程练习-花括号是否匹配
C和指针-编程练习-花括号是否匹配题目:编写一个程序,它从标准输入读取C源代码,并验证所有花括号都正确地承兑出现。注意:你不必担心注释内部、字符串常量内部和字符常量形式的花括号。#include <stdio.h>#include <stdlib.h>/** 检查一个程序的花括号对*/int main(){ char ch; int braces = 0; //逐字符读取程序 while ((ch = getchar()) !=原创 2021-01-07 16:47:59 · 228 阅读 · 0 评论 -
C++斐波那契数列(带备忘录的递归)
C++斐波那契数列(带备忘录的递归)斐波那契数列的数学形式就是递归的,写成代码就是这样:int fib(int N) { if (N == 1 || N == 2) return 1; return fib(N - 1) + fib(N - 2);}这个不用多说了,学校老师讲递归的时候似乎都是拿这个举例。我们也知道这样写代码虽然简洁易懂,但是十分低效,低效在哪里?假设 n = 20,请画出递归树:PS:但凡遇到需要递归的问题,最好都画出递归树,这对你分析算法的复杂度,寻找算法低转载 2021-01-05 14:03:00 · 1647 阅读 · 3 评论 -
2020安徽程序设计省赛 G序列游戏
2020安徽程序设计省赛 G序列游戏有一个序列w,初始为空。再给出一个长度为m 单调递增的序列a。你需要对序列w 作如下n 次操作:(1)操作0,在序列尾部添加数字0。(2)操作1,在序列尾部添加数字1.(3) 操作-1,删除序列w 中,所有位于位置ai 的数(1<=i<=m)。比如a={1,3,5},就将w 中第1,3,5 个数删除。若ai>w 的当前长度,则该操作停止。输出n 次操作后的序列w。解题思路:该题根据题目描述,可以直接定义三个操作对应的函数处理用户输入即可。具原创 2021-01-04 17:13:23 · 525 阅读 · 2 评论 -
2020安徽程序设计省赛 I美丽几何
2020安徽程序设计省赛 I美丽几何在平面上有n 个点,初始每个点的美丽值都为0,任意选择两个点组成一条直线,对于每一条直线,如果存在一个点,这个点到这条直线的距离小于其他n-3 个点到这条直线的距离,那么我们把这个点的美丽值加1。为了简化输出,我们只需要输出所有点的美丽值的异或值,保证三点不共线。解题思路据美丽值的定义:对于每一条直线,如果存在一个点,这个点到这条直线的距离小于其他点到这条直线的距离,那么我们把这个点的美丽值加1。求解所有的点的美丽值,即对于每一条直线,寻找距离其最近的一个点(若有多原创 2021-01-04 16:52:51 · 606 阅读 · 0 评论 -
OpenCV图像藏密--将图像隐藏到另一张图像中
文章目录密码学的应用流行多年并且技巧繁多。本文所有介绍的是图像藏密(image steganography)的隐藏技术。而密码学分为加密和解密,本文先介绍加密再介绍解密。1《OpenCV和Visual Studio图像识别应用开发》 ↩︎...原创 2020-11-27 22:39:28 · 1654 阅读 · 0 评论 -
力扣(LeetCode)初级算法--旋转数组
文章目录题目C解法C++解法GO解法题目旋转数组给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,99] 和 k = 2输出: [3,99,-1,-100]解释:向原创 2020-11-27 10:38:24 · 232 阅读 · 0 评论 -
力扣(LeetCode)初级算法--删除排序数组中的重复项
文章目录题目C解法C++解法GO解法题目删除排序数组中的重复项给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,原创 2020-11-26 10:01:04 · 220 阅读 · 0 评论 -
C/C++常用算法系列 一、排序算法
C/C++常用算法系列文章目录一、排序算法.文章目录C/C++常用算法系列文章目录排序算法1.快速排序二、使用步骤1.引入库2.读入数据总结排序算法。提示:以下是本篇文章正文内容,下面案例可供参考1.快速排序示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimp原创 2020-11-21 19:11:01 · 250 阅读 · 0 评论 -
OpenCV(c++)-1 安装和配置OpenCV4.4(Windows+visual studio 2019)
内容概览安装OpenCV4在Windows系统安装OpenCV4配置visual studio 2019配置包含路径验证配置结果安装OpenCV4OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 [1] 它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV用C++语原创 2020-10-24 22:38:51 · 735 阅读 · 4 评论 -
现代C++教程:高速上手(四)-容器
1、线性容器std::array与std::vector不同的是,array对象的大小是固定的,如果容器大小是固定的,那么可以优先考虑使用std::array容器。由于std::vector是自动扩容的,当存入大量的数据后,并且对容器进行了删除操作,容器并不会自动归还被删除元素相应的内存,这时候需要手动运行shrink_to_fit()释放这部分内存。std::array C风格接口传参:void foo(int *p, int len){ return;}std::array<i原创 2020-05-21 17:03:48 · 472 阅读 · 0 评论 -
c/c++ 实现三角函数(不使用库函数) sin/cos/tan/cot
在许多嵌入式系统或计算平台中,可能不方便使用标准数学库函数。在本篇博客中,我们将使用 泰勒展开 来实现常见的三角函数:sin(x)、cos(x)、tan(x) 和 cot(x),而不依赖任何库函数。通过手动实现这些数学公式,我们可以更好地理解三角函数的计算原理,同时为那些受限的环境提供一种实现方案。泰勒展开是数学中一个非常重要的公式,它能够将任何在某点可导的函数展开为一个无限级数。对于三角函数,我们可以利用其在0点的泰勒级数展开来近似计算函数值。sinxx−x33!x55!−。原创 2020-03-23 22:57:08 · 4611 阅读 · 0 评论