- 博客(13)
- 收藏
- 关注
原创 大整数类设计(C++)
简介在平时的功能需求中,C/C++语言内置的整形变量表示范围已经足够大了,但是在一些特定的场合,例如解决数学问题的时候,可能需要表示极大的整数。这时候C/C++语言提供的类型就不能满足需求了,需要自己来实现超大整数的实现,当然仅仅是能够存储超大整数还不行,还要能够进行运算。设计功能能够表达正数与负数能够由整形或字符串转化得到能够使用 + - * / 等符号进行运算可以与int 类型进行混合运算可以使用输入输出流当发生除数为零等错误时会抛出异常源码分享头文件:BigInt.h#inc
2021-01-04 00:05:17 4403 1
原创 各种排序算法的实现与比较
排序算法简介1. 冒泡排序2. 选择排序3. 插入排序4. 归并排序5. 堆排序6. 快速排序7. 计数排序试验介绍源码分享/* * @Author: your name * @Date: 2020-12-15 21:15:54 * @LastEditTime: 2020-12-17 23:44:36 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath
2020-12-17 23:51:55 556
原创 STM32F1系列单片机的flash模拟EEPROM方案(简单易用)
前言方案说明设计思路使用方法源码分享文件:main.c#include "delay.h"#include "sys.h"#include "usart.h"#include "stm32f1_flash.h"int32_t var_a = 0;int main(){ int i = 0; delay_init();//初始化延时函数 uart_init(19200);//初始化串口 printf("test start !\r\n"); register_data(&a
2020-11-17 00:33:29 2887 3
原创 解9*9数独算法(C++)
什么是数独数独(shù dú)是源自18世纪瑞士的一种数学游戏。是一种运用纸、笔进行演算的逻辑游戏。已知有9行9列的格子,且被分成9个3*3的方块。其中一些格子内有数字,数值的范围为1-9 。玩家需要在其余的空白格子上填入数字,数字的范围也是1-9,要求所有空格都被填满而且满足以下条件:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。例如:一个数独题目如下:一种解法如下:红色数字为玩家填入的答案,满
2020-11-08 20:12:13 6032
原创 从C语言过渡到C++
头文件与命名空间输入输出bool 类型string 类型const constexpr变量定义位置动态内存管理类型转换默认参数与函数重载带参宏 内联函数指针与引用空指针智能指针
2020-11-05 12:57:22 1424
原创 C语言变参函数的原理与应用
变参函数变参函数其实并不罕见,在初学者的的 helloworld 程序中就用到了变参函数 printf() ,在之后的学习当中,scanf() 又是另一个常见的变参函数。这些函数有以下共同特点:可以输入一个到任意多个参数从第二个参数开始,参数的类型不固定可以从第一个参数推测应该输入的参数类型及个数实现原理在函数调用过程中,相应内存的栈空间会增长,这时函数参数会被压到栈中。在普通函数执行时,函数根据参数列表得知栈内的参数类型以及个数,计算出相应参数的地址 和 占用空间大小,从而从栈中获取各个
2020-10-28 11:22:48 453
原创 C语言编程易错点总结
前言C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。它是目前最著名,最流行的语言,效率高、功能强、用法灵活。在学习编程语言的过程中,最怕最难的就是找BUG,而找BUG又是必不可少的能力,甚至可能是编程中必经的一个环节。有时候找BUG的时间甚至可能比写代码的时间还要长。语法上的错误可以在编译器的帮助下较轻松的解决,但是一些逻辑上的错误不仅仅难以修正,还可能难以察觉,它可能突然出现,又神秘消失。为了防止重复犯同样的错误,也为了...
2020-10-17 11:29:38 4040
原创 一种可自动实现增量编译的Makefile模板
Makefile介绍程序的生成可分为预处理 编译 汇编 链接这几个阶段,各个阶段的功能不再赘述。对于平时写的各种小程序,并不需要很精细的管理。如果某一处发生了改动,直接把所有文件把的所有阶段全都执行一遍。当工程比较小的时候怎么做没有问题,但一旦工程比较大,就需要选择性的进行编译、链接等操作,否则会消耗很多时间。当源码有改动时,只对改动所能影响到的文件进行重构,这就是增量编译的概念。Makefile 可以简单的认为是一个工程文件的编译规则,描述了整个工程的编译和链接等规则。其中包含了那些文件需要编译,那些
2020-10-04 22:52:54 820
原创 一种获取所有排列状态的非递归算法
什么是排列应用场景算法思路源码分享#include <stdio.h>#include <stdlib.h>#include <string.h>int numArray[] = {5, 9, 7, 4, 6, 9, 1};int test(int *p, int num);int *sequenceAndTest(int length, int num, int (*testFunc)(int *, int));int main(int arg
2020-09-24 23:48:47 194
原创 一种获取所有组合状态的非递归算法
组合定义组合的定义:从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。用符号 C(n,m) 表示。应用场景在解决各种算法的问题时,有一种比较偷懒的方式,那就是把所有可能性都试一遍。而排列组合是比较常用的方式,可以通过某种编码方式,让一组排列组合结果来代表某个解,测试所有排列组合,便测试了所有解。源码分享#include <stdio.h>#in
2020-09-19 10:28:50 398 1
原创 一种Windows/Linux系统下的非阻塞输入方案
目录什么是非阻塞输入应用场景实现原理源码分享什么是非阻塞输入程序获取输入的方式有很多,如 scanf()、getchar()、getche()、getch() 等函数,这些函数在执行的时候,会等待用户进行输入,直到获取输入完毕才会执行后面的代码。如果用户一直不输入,那么程序就一直等待,函数后面的代码得不到执行,这就是阻塞输入。非阻塞输入是指:用户输入数据后程序可以捕获,用户不输入数据程序也可以继续执行。应用场景初学者使用的一般是阻塞式输入,这种方式一般没有任何问题,用户输入完数据再执行后面的代码往
2020-09-15 00:35:48 1355
原创 简单易懂的 C语言指针
C语言指针什么是指针指针定义指针赋值指针使用指针运算如何看懂复杂指针符号优先级分析方法指针使用注意事项指针与数组指针与const什么是指针在运行的程序中, 所有的数据都是存放在内存中的,不同的数据类型占有的内存空间的大小各不相同。内存是以字节为单位的连续编址空间, 每一个字节单元对应着一个唯一的编号。这个编号被称为内存单元的地址,其中存储的数据的首地址用于标识该数据,称为变量地址,方便用户对数据进行正确的访问。指针也就是内存地址,指针变量是用来存放内存地址的变量, 它与一般的变量不同的是,一般变量存放
2020-09-06 18:07:22 473
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人