- 博客(50)
- 资源 (6)
- 问答 (10)
- 收藏
- 关注

原创 C++大整数类(支持多种进制)
一、简介项目名称:C++大整数类开发环境:Visual Studio 2022C++标准:C++20C++中是有整数类型的,最常用的就是int型。但是,C++自带的整数类型是有大小范围的,可能会溢出,产生很多令人头疼的错误。示例:#include<iostream>//#include"CBigInt.h"using namespace std;int main(){ int t = 1; for (int i = 0; i < 100; i++) { t *
2021-05-14 20:40:56
6722
27

原创 MFC双人五子棋(VS2019)
本人最近用MFC制作了一个双人五子棋,下面与大家分享一下我的制作流程。开发环境: Visual Studio 20191. 创建对话框首先,创建双人五子棋解决方案,我的名称是GoBang。创建对话框并调整对话框尺寸,我的尺寸是400*380。将对话框的标题改为“双人五子棋”,“边框”属性改为“对话框外框”,防止运行期间改变大小。——算法篇(附完整代码)
最近突发奇想,要使用C++做一个双人象棋的程序,昨天肝了一天,终于把算法部分完成了,下面把开发过程中的经验分享一下。知识要求:熟练掌握C++语言面向对象编程的知识(继承,多态)掌握STL的基本操作了解中国象棋基本规则(不会还有人不知道中国象棋规则吧!)..................
2022-07-07 21:21:52
16025
47
原创 1385:团伙(group)
1385:团伙(group)时间限制: 1000 ms 内存限制: 65536 KB【题目描述】在某城市里住着n个人,任何两个认识的人不是朋友就是敌人,而且满足:1、我朋友的朋友是我的朋友;2、我敌人的敌人是我的朋友;所有是朋友的人组成一个团伙。告诉你关于这n个人的m条信息,即某两个人是朋友,或者某两个人是敌人,请你编写一个程序,计算出这个城市最多可能有多少个团伙?...
2022-07-04 14:17:14
2656
1
原创 1331:【例1-2】后缀表达式的值
1331:【例1-2】后缀表达式的值时间限制: 10 ms 内存限制: 65536 KB【题目描述】从键盘读入一个后缀表达式(字符串),只含有0-9组成的运算数及加(+)、减(—)、乘(*)、除(/)四种运算符。每个运算数之间用一个空格隔开,不需要判断给你的表达式是否合法。以@作为结束标志。...
2022-07-04 13:13:41
927
1
原创 C++封装MySQL操作
MySQL是一个比较好用并且免费的数据库,实际开发中可能会用到。如果想用C++调用MySQL,需要调用MySQL提供的一系列API。但是,这些API是基于C语言编写的,没有面向对象的特征,特别是查询获取结果集,用起来可能不太方便。而在Java中访问数据库,无论是查询还是其他操作,都被高度封装,非常方便。为了弥补这一缺陷,我最近利用课余时间封装了一下MySQL常用的API,下面就来介绍一下。程序框架程序主要分为DataBase,QueryResult,QueryRow,QueryFields和一些异常类,
2022-03-05 21:14:01
2685
1
原创 C++赋值和初始化的区别
C++中对变量的操作有很多,比如赋值、初始化等。很多人都会把赋值和初始化混为一谈,下面我们就来研究一下赋值和初始化的区别。先上结论:初始化赋值在变量生命周期中只能进行一次可以无限次数进行任何类型的变量都必须初始化(基本类型无初值也可以视为调用默认构造函数,而对象必须调用构造函数进行初始化,无构造函数会调用默认构造函数,有构造函数必须调用其中一个,调用无参构造函数时可以省略括号,这也算初始化)可有可无必须在声明时紧跟在变量名后可以在变量生命周期中的任何位置在类的构
2021-12-12 19:12:42
2162
4
原创 C++游戏编程教程(六)——C++字符串消息处理器类
大家好,我是一位初一的编程爱好者。今天,我向大家介绍一个我自制的C++字符串消息处理器类。项目介绍在实际开发中,我们经常会用到消息处理,即用户发来一些消息,让我们进行处理,典型的例子是QQ机器人。如果简单地用几个if,会导致程序非常混乱,可读性差。这时候,就要新建一个类对这些消息进行管理。当然,我只是实现了一个最简单的版本,还有很多功能,大家可以自行完善。其实,这个类功能和实现都很简单,但我通过这个类,开发了一个人机聊天的项目,比较有意思。项目名称:C++字符串消息处理器类开发环境:Visual S
2021-11-21 20:29:47
4075
原创 C++通过父类构造子类
今天我看到这么一句话:派生类的成员只能通过派生类对象访问基类的保护成员,派生类对一个基类对象中的受保护成员没有访问权限。也就是说,如果有以下代码:class A{protected: int i;};class B :public A{ B(const A& a) { this->i = a.i; }};是无法编译通过的,因为子类B的构造函数无法通过参数a来访问A类的i成员。那么,怎么通过父类来构造子类呢?在C++11中,加入了一个新的东西,叫类的初始
2021-11-06 13:12:21
4763
原创 CSP-J2021第三题——字符串处理
原题链接先说一下今年的题目特点,那就是并没有考到复杂的算法,而是考了一些应用性较强的内容,比如第三题的字符串处理。很多OI选手对字符串处理都不擅长,导致这道题失分。其实,今年的题目还是很简单的。下面,我们来探讨一下这道题的几种解法。(只介绍字符串处理部分,其他地方太简单,正常人都能写出来)一、正则表达式匹配先介绍一下正则表达式:(详细教程看这里)正则表达式是匹配字符串的一种模式。经常用到的语法有:字符意义+表示前面的字符至少出现1次,无上限。*表示前面的字符至少出现0
2021-10-29 20:43:41
867
原创 C++游戏编程教程(五)——项目实战
今天,我们来用所学知识做一个简易的飞机大战游戏。游戏功能:玩家驾驶飞机在窗口下方左右移动,按下空格发射子弹(0.3秒一个),而上方会有石块落下,打中飞机会死亡,玩家可以使用子弹攻击石块,如果打到了石块就消失,同时之后的石块下落会加速。屏幕上方还会有敌人的飞机出现,会随机发射子弹,还会随机移动,玩家碰到敌人发来的子弹会死亡,敌人碰到玩家的子弹也会消失。敌人有20个,随机出现,同一时刻屏幕上最多有5个敌人。玩家消灭所有的敌人就胜利了。...
2021-10-06 19:02:18
19919
22
原创 C++游戏编程教程(四)
这篇博客,我们说一下Actor、Component和DrawComponent类的代码。代码都很简单,所以写到了一篇里。Actor这个类是角色类,保存了角色的一些基本信息。代码Actor.h:#pragma once#include <vector>#include "Math.h"#include<SDL.h>#include"Game.h"class Actor{public: enum State { EActive, EPaused,
2021-10-05 22:03:52
1715
原创 C++游戏编程教程(三)
在上一篇博客里,我们介绍了SDL基本的函数用法,今天,我们就来研究一下Game类的代码。让我们再次打开模板项目。注:在代码中,用到了一个头文件Math.h(不是C语言中的math.h),这是那本书的作者自己编写的一个头文件,非常有用,点击此处下载。一定要把解压后的Math.h和Math.cpp加入到项目里,才能编译通过。Game类代码先上代码:Game.h#pragma once#include "SDL.h"#include <unordered_map>#include &l
2021-10-04 12:44:10
5742
9
原创 C++游戏编程教程(二)
上一篇博客,我们讲了SDL环境的配置和基本程序框架,今天我们就来研究一下各个类的代码实现。让我们打开上一次的模板项目,继续添加代码:Game类程序框架这个类可以说是程序的主要组成部分了,程序运行主要就是在Game类的函数里。在上代码之前,我先简单介绍一下游戏的更新机制。游戏进行主要由三部分组成:处理输入;更新游戏;生成输出。在代码中,这三个功能分别由三个函数实现,而在一个主函数里,要循环执行这三个函数。这也是游戏与其他程序不同的一点:需要频繁更新。基本的SDL API现在,我们需要了解
2021-10-01 10:49:46
2206
2
原创 C++游戏编程教程(一)
参考书籍:《C++游戏编程:创建3D游戏》注:本教程所有代码的开发环境均为Visual Studio Preview 2022,C++标准是C++20。一、初识SDLSDL是一个跨平台的开源多媒体库,被广泛应用于游戏开发,具体可以看这里。一旦出现了这样的程序库,环境配置就会成为众多初学者最头疼的事。为了一劳永逸的解决这个问题,我们先新建一个示例项目,并进行以下配置:首先,我们要从官网上下载SDL库,下载Source Code和Runtime Binaries。下载之后,找到include和li
2021-09-25 10:42:16
9854
3
原创 C++使用模板递归进行编译期计算
有的时候,我们的代码中需要某些特定数值(如2的N次方),注意,这里的数值必须是写在代码里的,即常量。这时候,如果再用计算器挨个计算就会非常麻烦,而在运行期间计算又会使得程序运行速度缓慢。这时候,我们就用到了编译期间计算。编译期计算的主要原理是运用模板递归。如计算N的阶乘:#include <iostream>template<int n>class C//主模板类{public: static const long long result = C<n - 1>
2021-09-19 10:06:10
1155
原创 P1000 超级玛丽游戏
题目P1000 超级玛丽游戏一个非常沙雕的题,直接输出就可以了。。。不过用一般语言可能有点麻烦,需要加很多引号,在此向大家隆重介绍做这道题的大神语言——PHP!PHP代码 ******** ************ ####....#. #..###.....##.... ###.......###### ###
2021-09-11 21:43:05
314
原创 Java递归列出目录下所有文件(包括子文件夹里的文件)
import java.io.FileNotFoundException;import java.lang.*;import java.io.File;import java.util.Scanner;public class Test { private static void SF(File file,int n)//n为文件夹层数 { String str="\t".repeat(n);//输出相应数量的制表符,层次更清晰 if(file.is
2021-08-28 19:52:53
1060
4
原创 C++模板递归
#include <iostream>using namespace std;template<int n>class C//主模板类{private: C<n - 1> m_c;//由于调用的是C<n-1>而不是C<n>,所以不算自引用,编译能通过public: C() { cout << n << endl; } ~C() { cout << n << endl;
2021-08-25 19:06:17
514
原创 论如何用计算机无精度丢失存储任意有理数(C++)
在数学中,有理数是整数(正整数、0、负整数)和分数的统称。C++语言提供了很多数据类型来存储部分有理数,如int ,long long ,float, double 等。但这些类型都有一个共同的特点,那就是精度有限。例如int的范围是-2147483648~2147483647,float大约只有6-7位是准确的。关于浮点数精度丢失的原因,大概是这样的:如果有一个最简分数nm\frac{n}{m}mn,要以kkk进制小数表示,如果mmm的任意一个质因数不能被kkk整除,这个分数就不能化成kkk进制有限小数
2021-08-21 19:51:03
351
1
原创 1370:最小函数值(minval)
题目1370:最小函数值(minval)时间限制: 1000 ms 内存限制: 65536 KB【题目描述】有n个函数,分别为F1,F2,...,FnF_{1},F_{2},...,F_{n}F1,F2,...,Fn。定义Fi(x)=Aix2+Bix+Ci(x∈N∗)F_{i}(x)=A_{i}x2+B_{i}x+C_{i}(x∈N∗)Fi(x)=Aix2+Bix+Ci(x∈N∗)。给定这些AiAiAi、BiBiBi和CiCiCi,请求出所有函数的所有函数值中最小的m个
2021-08-21 19:24:34
690
9
原创 1365:FBI树(fbi)
题目1365:FBI树(fbi)时间限制: 1000 ms 内存限制: 65536 KB【题目描述】我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。FBI树是一种二叉树,它的结点类型也包括F结点,B结点和I结点三种。由一个长度为2N的“01”串S可以构造出一棵FBI树T,递归的构造方法如下:T的根结点为R,其类型与串S的类型相同;若串S的长度大于1,将串S从中间分开,分为等长的左右子串S1和S2;由左子串
2021-08-19 10:56:08
279
原创 1364:二叉树遍历(flist)
题目1364:二叉树遍历(flist)时间限制: 1000 ms 内存限制: 65536 KB【题目描述】树和二叉树基本上都有先序、中序、后序、按层遍历等遍历顺序,给定中序和其它一种遍历的序列就可以确定一棵二叉树的结构。假定一棵二叉树一个结点用一个字符描述,现在给出中序和按层遍历的字符串,求该树的先序遍历字符串。【输入】两行,每行是由字母组成的字符串(一行的每个字符都是唯一的),分别表示二叉树的中序遍历和按层遍历的序列。【输出】一行,表示二叉树的先序序列。【输入样例】D
2021-08-19 10:00:44
454
原创 MFC RichEdit控件使用方法大全
RichEdit的意思是“富文本编辑控件”,在Edit的基础上添加了很多功能,如对不同字体、字号、文本颜色、背景色、插入Ole对象的支持,Windows系统的写字板就是基于RichEdit的。这篇文章就是介绍RichEdit的相关知识的。...
2021-08-18 12:19:23
8691
原创 1363:小球(drop)
题目1363:小球(drop)【题目描述】许多的小球一个一个的从一棵满二叉树上掉下来组成FBT(Full Binary Tree,满二叉树),每一时间,一个正在下降的球第一个访问的是非叶子节点。然后继续下降时,或者走右子树,或者走左子树,直到访问到叶子节点。决定球运动方向的是每个节点的布尔值。最初,所有的节点都是false,当访问到一个节点时,如果这个节点是false,则这个球把它变成true,然后从左子树走,继续它的旅程。如果节点是true,则球也会改变它为false,而接下来从右子树走。满二叉树的
2021-08-17 17:52:21
683
原创 C++ typeid详解
C++为我们提供了一种可以判断变量类型的关键字,即typeid,它的参数和sizeof一样,可以是一个变量,或者一种类型。typeid的返回值是type_info类,而且返回的是一个左值。type_info类禁用了拷贝构造函数,因此我们必须要用引用或指针来存储结果,如:const type_info& type1=typeid(int);const type_info* type2=&typeid(int);name()作用:返回描述变量类型的字符串(注意:是类型全名)。基本用法
2021-08-07 11:24:56
8903
2
原创 1287:最低通行费
题目1287:最低通行费时间限制: 1000 ms 内存限制: 65536 KB【题目描述】一个商人穿过一个N×N的正方形的网格,去参加一个非常重要的商务活动。他要从网格的左上角进,右下角出。每穿越中间1个小方格,都要花费1个单位时间。商人必须在(2N-1)个单位时间穿越出去。而在经过中间的每个小方格时,都需要缴纳一定的费用。这个商人期望在规定时间内用最少费用穿越出去。请问至少需要多少费用?注意:不能对角穿越各个小方格(即,只能向上下左右四个方向移动且不能离开网格)。【输入】
2021-07-30 14:18:44
294
原创 Visual Studio 2022
近日,微软推出了Visual Studio 2022的预览版,想试用的可以点击此处官网下载。Visual Studio 2022 预览版 2 发布了!2021 年 7 月 14 日我们很高兴地宣布 Visual Studio 2022 的第二个预览版!预览版 1 是有史以来第一个 64 位 Visual Studio,提供了改进的可扩展性。从预览版 2 开始,我们专注于提供有关个人和团队生产力、现代开发和不断创新等主题的新功能。在本博客中,我们将重点介绍 Visual Studio 2022 的一些
2021-07-20 14:04:59
8714
6
原创 C++自制vector容器(带迭代器)
C++的STL库中提供了很多数据结构,用起来很方便,但了解底层原理也是很重要的,它可以帮助我们提高编程水平。本人最近就模仿STL制作了一个vector容器。代码如下:#pragma once#include<stdexcept>template<typename type>class CVector{public: //构造函数 CVector(); CVector(size_t nSize); CVector(size_t nSize, const type&
2021-07-12 13:34:43
657
5
原创 1225:金银岛
题目1225:金银岛时间限制: 1000 ms 内存限制: 65536 KB【题目描述】某天KID利用飞行器飞到了一个金银岛上,上面有许多珍贵的金属,KID虽然更喜欢各种宝石的艺术品,可是也不拒绝这样珍贵的金属。但是他只带着一个口袋,口袋至多只能装重量为w的物品。岛上金属有s个种类, 每种金属重量不同,分别为n1,n2,…,ns,同时每个种类的金属总的价值也不同,分别为v1,v2,…,vs。KID想一次带走价值尽可能多的金属,问他最多能带走价值多少的金属。注意到金属是可以被任意分割
2021-07-10 12:54:10
871
原创 2045:【例5.13】蛇形填数
题目2045:【例5.13】蛇形填数时间限制: 1000 ms 内存限制: 65536 KB提交数: 1201 通过数: 626【题目描述】在n×n方阵里填入1,2,3,…,n×n,要求填成蛇形。例如n=4时方阵为:10 11 12 19 16 13 28 15 14 37 6 5 4其中,n≤20。【输入】输入n。【输出】输出题述方阵。n行,每行各数之间用一个空格隔开。【输入样例】4【输出样例】10 11 12 19 16 13 28 15
2021-07-09 20:08:03
2590
原创 1191:流感传染
题目1191:流感传染时间限制: 1000 ms 内存限制: 65536 KB【题目描述】有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,(已经得病的不变),空房间不会传染。请输出第m天得流感的人数。【输入】第一行一个数字n,n不超过100,表示有n*n的宿舍房间。接下来的n行,每行n个字符,’.’表示第一天该房间住着健康的人,’#’表示该房间空
2021-07-09 13:40:02
715
原创 1208:2的幂次方表示
1208:2的幂次方表示时间限制: 1000 ms 内存限制: 65536 KB【题目描述】任何一个正整数都可以用2的幂次方表示。例如:137=27+23+20同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:2(7)+2(3)+2(0)进一步:7=22+2+20(21用2表示)3=2+20所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)又如:1315=210+28+25+2+1所以1315最后可表示为:
2021-07-09 13:27:02
989
C++使用MFC基于Minimax算法和α-β剪枝的五子棋AI(带图形界面)
2022-02-19
C++使用SDL的飞机大战2.0
2021-10-06
MFC简易RTF编辑器
2021-04-17
MFC双人黑白棋(VS2019编译通过)
2021-04-17
MFC双人五子棋(VS2019编译通过)
2021-04-16
一个抽象代数的证明题
2025-01-15
阻塞的socket如何判断已经关闭
2023-07-09
为什么外网ipv6访问不了内网服务器
2023-01-26
五子棋minmax算法一般能搜到多少层
2023-01-22
外部程序调用自己写的的dll怎么调试
2022-12-28
vsix项目工具菜单中不显示
2022-08-22
vs2022代码补全不能用了
2022-07-05
C++如下的懒汉模式是否线程安全?
2022-04-17
winapi如何实现让另外的进程窗口卡住
2022-03-14
C++多线程有时会异常
2022-02-04
关于博弈树α-β剪枝的一个问题
2022-01-25
VS2022 C++把类的声明与实现分开后报错
2021-11-06
优快云上传的资源一直没人审核怎么办
2021-10-09
关于socket的一个问题
2021-09-25
VS2022C++显示未定义基类
2021-09-19
C++前置++与后置++的问题
2021-09-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人