自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 问答 (5)
  • 收藏
  • 关注

原创 【摸鱼向】利用Arduino实现自动化切屏

用Arduino加上红外传感器来实现自动监测的功能,当有人靠近门口的时候,电脑可以自动执行预设的命令,比如切屏。

2023-12-08 18:45:24 713

原创 【海龟绘图】更加立体真实的二叉树渲染(基于3D的枝杈朝向和光照)

基本原理就是,在tree这个递归函数中,我们还需要一个额外的3维向量heading,代表着当前树杈的朝向,然后根据heading,进一步确定子树杈的随机朝向或者花瓣的亮度。注意一下,随机性意味着你可能需要多试几次才能得到比较美观的树,而基于cpu的渲染在时间效率上也是肯定不如gpu渲染来的快的。(原谅我的配色ww,虽然不好看,但是真的很立体啦。

2023-12-04 12:25:40 550 1

原创 在Windows上使用sfml库开发图形应用【vscode+MinGW配置】

在linux系统上,使用sfml库非常轻松,就够了,此后在编译时,需要在编译选项中指明所需要的库,,此后就可以愉快地运行了。但是在windows上就复杂很多,由于笔者主要使用vscode进行开发,所以下文就介绍了如何配置vscode+sfml的开发环境。

2023-11-12 20:33:23 1313

原创 Pop!_OS - Linux桌面使用体验

Pop!_OS是我目前觉得最棒的linux发行版,虽然它依托于Ubuntu,但它更适合作为个人的桌面开发环境。下文简要介绍了我在使用Pop!\_OS时的一些体验。

2023-10-31 14:57:31 3173 2

原创 C++ filesystem 文件系统初体验

【代码】C++ filesystem 文件系统初体验。

2023-03-21 13:26:02 317 1

原创 C++ fstream读取文件的操作详细流程及解释

【代码】C++ fstream读取文件的操作详细流程及解释。

2023-03-21 13:24:59 1458

原创 CSS如何导入字体的各种变形 [@font-face font-style font-weight]

【代码】CSS如何导入字体的各种变形 [@font-face font-style font-weight]

2023-02-20 21:39:14 199

原创 【定量分析】插入排序运行时间与输入数组元素排列之间的关系

插入排序的时间复杂度的更精确的量度应该为:$\Theta(n+m)$,其中n为数组规模,m为数组逆序对数。

2023-01-04 21:08:14 231

原创 【定量分析】冒泡排序运行时间与输入数组元素排列之间的关系

冒泡排序的循环迭代次数等于所有元素的排序距离中的最大值,其中排序距离的定义为:排序后该元素的下标减去当前该元素的下标,值可正可负。

2023-01-04 20:37:16 144

原创 利用Arduino和ADXL345加速度计测量实时倾角并图形化处理

本文重点说明部分是:I2C串口通信在Arduino平台的使用(利用wire库进行单/多字节读写的方法);利用旋转矩阵进行线性变换。

2023-01-01 22:52:48 1317

原创 Vscode C/C++ 智能提示故障的解决方案

最近需要经常使用linux的一些基本库函数,比如signal.h, netdb.h等等,但是却出现智能提示无法找到的情况: 但编译器并不会报错。最开始我以为是c/c++扩展的问题,但是进入头文件库中看了一下,发现是宏定义的问题:所以只需要在c_cpp_properties.json中加入一行"_GNU_SOURCE"即可:

2022-12-05 23:12:33 1043

原创 有关Linux命令行工具的一些趣事

在最开始学习向终端输入命令时总是感觉很神奇,终端究竟是怎样理解我的命令的?

2022-11-30 19:34:48 248

原创 C++ 实现控制台3D动画

由于代码竞赛活动要求代码行数尽可能少,所以代码没有任何模块性或者可阅读性。但是,在Linux上编译完成后(注意要包含curses库,即g++编译时加上`-l curses`选项),就可以看到一个不断旋转浮动的彩色立方体。

2022-11-07 18:51:19 1174

原创 理解C语言指针

因此当p是一个指针的时候,假设p的地址为0xfffff0,且指向int型数据,那么p+1就不是0xfffff1,而是0xfffff0+sizeof(int)=0xfffff4。char *p[2][3],由于[]优先级高于*,所以p是一个2*3的数组,数组中每一个元素都是char *类型的。int (*p)[3],由于()优先级最高,所以p是一个指针,指向了int[3]型的数据。,另外,A作为一个数组,A的地址就是A的第一个元素的位置,同时也是A本身。int *p,p是一个指向int类型数据的指针。

2022-10-27 14:57:48 644

原创 Bomblab(ICS课程回课pku)

alohomora的功能为:从phase_4的输入中按照"%d %d %s"的格式读取内容,如果发现读取到了最后的字符串,就把字符串中每一个char都加2,最后与"000Gcu{FqgupvGpvgt3pvqItqypWrNkhg0"进行比对,如果相同,就返回1。举个例子,如果读取的六个数字第一个是3,第二个是4,那么rsp[0]=4,rsp[1]=3,则node4将指向node3。功能:将ptrs[i]指向node(rsp[i]),举个例子,如果rsp[1]为3,那么ptrs[1]=&node3。

2022-10-14 15:20:06 968 5

原创 从暴力算法一步步走到KMP算法

学习kmp算法时,总是不理解为什么**应该**这样,next数组的提出和初始化实在是把人绕的头晕。我觉得,不是自己太愚笨,理解不了如此高深莫测的kmp,而是说,很多教程都是站在巨人的肩膀上告诉我们应该怎样云云,而不是指引我们一步步爬到高处,毕竟没有经历过程的洗礼,一蹴而就的理解自然是很困难的事情。因此本文就从Brute Force开始,经过不断的分析、消除不必要的回溯,来最终得到并真正地理解kmp算法。

2022-09-30 19:12:11 305

原创 编译器优化代码所带来的隐藏问题 | `int isTmax(int x)` in datalab

写C语言代码进行运算的时候,一定要注意编译器在不同优化等级以及不同代码排列方式下的行为,因为有时这些优化可能会带来糟糕的结果。

2022-08-27 22:10:06 449

原创 【踩坑记录】 C语言 判断int类型的数是否为INT_MAX

这说明,按照编译器的理解,一个int类型的整数加上1的结果不可能是Tmin,所以才直接返回了0。即,编译器在这个地方没有考虑整数溢出的结果。(以后绝对不能再想当然了,在这个地方卡了好久😭)合着是这个地方直接被编译器给编译没了,又按照这句表达式最原本的意思写了段asm代码,发现问题就是出在编译器这里。...

2022-08-27 11:14:35 435

原创 C++ 利用union和bitset访问任意对象的二进制内容

在学习信息的存储和表示时,查看对象的二进制格式是非常重要的学习方法,但这个过程大部分是通过一个循环的函数进行的,比较麻烦。而利用C++自带的bitset就能轻松实现访问。如此一来就可以轻松实现访问了。

2022-08-19 19:49:05 303

原创 TMin - TMin是否产生溢出

而TMin的负仍为TMin,因此我认为TMin - TMin应该等同于TMin+TMin,所以自然算是产生了溢出。总结,出现这种纠结,还是对于溢出的定义理解不够深入,时,OF^SF和SF都被置为0。后,结果是:OF^SF被置为1,SF被置为0,即。)之后,OF=1,SF=0,则。的结果应该是1,所以得到了悖论。来进行判断的,因此我认为,...

2022-08-04 14:17:15 730

原创 [CSAPP Practice Problem 2.32] tsub_ok(int x, int y)判断补码减法是否溢出

tsub_ok(int x, int y)判断补码减法是否溢出。

2022-07-19 17:19:55 509

原创 POJ Project Summer

小 I 和小 B 最近沉迷一款叫做《Project Summer》的游戏,小 I 扮演这个游戏中需要逃生的无辜者(Innocent), 小 B 扮演这个游戏中抓住无辜者,阻止其逃生的背叛者(Betrayer)。这个游戏的地图是一个 N 行 M 列 的矩形,每个格点表示一个位置。 '#' 表示地图中的障碍物,'.' 表示地图中的空地,此外,地图中还有只有背叛者才能使用的传送门,用小写字母 'a' - 'z' 标记,它们在地图上成对出现。角色可以花费 1 单位的时间从一个格子走到上下左右相邻的 4 ..

2022-06-23 21:10:03 1026

原创 最佳加法表达式POJ

B:最佳加法表达式​​​​​​总时间限制:1000ms内存限制:65536kB描述给定n个1到9的数字,要求在数字之间摆放m个加号(加号两边必须有数字),使得所得到的加法表达式的值最小,并输出该值。例如,在1234中摆放1个加号,最好的摆法就是12+34,和为36输入有不超过15组数据每组数据两行。第一行是整数m,表示有m个加号要放( 0<=m<=50)第二行是若干个数字。数字总数n不超过50,且 m <......

2022-05-22 10:47:25 192

原创 二叉树 先根/中根/后根/层级 递归/非递归 周游的总结C++

观前提示:代码没有注释,里面有很多是参考别人的代码,算是备忘录。先是我二叉树的实现方式:class node{public: int info; node *lLink, *rLink; node(int _info) : info(_info), lLink(NULL), rLink(NULL) {}};然后是周游算法:// 递归实现void preOrder(node *root){ if (root == NULL) return;

2022-05-03 10:43:09 1367

原创 C语言 创建和传递‘以变量定义长宽的二维数组’的两种方法

有时候我们需要先读取用户的输入来定义一个二维数组的规模,但是经常会出现各式各样的问题,尤其是当代码涉及到在函数间传递数组的时候.下面就写两种比较安全妥当的方法.方法一:通过创建一个二级指针来实现二维数组的传递.优点:易于理解,而且在函数间传递起来较为方便.缺点:创建和释放比较麻烦.#include <stdio.h>#include <stdlib.h>void f(int **a){ printf("f(int **a) is right.\n").

2022-02-05 01:18:54 3014 3

原创 写一个简单的qsort和bsearch

qsort原本是利用快速排序的,不过在此出于简化目的,采用选择排序。话不多说,上代码。void Qsort(void *base, int len, int size, int (*cmp)(const void *, const void *)){ for (int i = 0; i < len - 1; i++) { int minid = i; for (int j = i + 1; j < len; j++) .

2022-02-05 00:33:36 749

原创 C语言 按姓氏排序并搜索字符串数组

其实实现起来并不困难,只需要利用stdlib.h中的qsort()以及bsearch()函数即可。但是需要注意有关二级指针的一些问题,否则就会卡上好久还不知道为什么出错(比如我-_-)#include <stdio.h>#include <string.h>#include <stdlib.h>int cmp(const void *p1, const void *p2){ // 由于p1是指向数组元素的指针,而数组元素本身又是一个字符串指针, // .

2022-02-04 23:42:18 816

原创 Python 利用内置函数把二进制小数转换为十进制

python本身并不适合做数值运算,如果需要数值运算的话,调用python的内置函数会快得多。把二进制小数先左移到小数点左侧,然后用int()函数转换为整数,最后再除以2的左移位数次方即可。

2022-01-22 14:01:07 4638

原创 C语言 通过位操作写一个用于查看任意地址的存储内容的函数

在学习整数,浮点数以及中文字符的存储方式时,经常会需要直接查看他们在内存中的存储形式,如此一来,写一个函数来查看任意地址的存储内容就显得很有必要。

2022-01-22 12:45:01 646

原创 C语言 一步步教你做一个带有图形界面的冒险小游戏

本文没有繁难的代码,所以很适合想做游戏但不知道如何做游戏的同学食用~

2022-01-20 15:40:25 6239 1

原创 C语言 手撸一个函数来把整数类型转换为字符串

首先效果如下:(段首 为输入,段尾为输出)首先分析一下目标函数的应该具有的功能:传入一个int类型整数,返回一个指向目标字符串的char类型指针。也即:char* str(int x);代码及注释如下://convert int to string#include <stdio.h>#include <stdlib.h>char* str(int x);void _str(int x,char* ret,int* p_cnt);/...

2022-01-20 00:55:38 1354

原创 C语言汉字在内存中如何存储

近日在学习C语言字符串的知识时,对汉字在内存中的存储方式有了一些进一步的认识,下面整理了一下探索的结果。char s[] = "你";printf("%d\n",strlen(s));printf("%hhd %hhd\n",s[0],s[1]); // %hhd可简单理解为以signed char格式输出//结果显示为2-60 -29第一行输出:结果为2,表明"你"是以gbk格式存储的,若结果为3,则说明是以utf-8格式存储的。第二行输出:由于整数在内存当中是以补码形式存储,

2022-01-16 14:03:24 6510 2

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除