自己的碎碎念集合

自己的碎碎念集合

  • 2023-09-11 C语言定义 `int *p,q;` p, q类型是否一样
  • 2023-09-07 c++叠加三目运算符闰年计算法
  • 2023-08-13 一个小题目 A+B problem
    • 一、问题及解答
      • 关碍
    • 总结
  • 2023-07-26 C的2至36进制转换函数
    • 一、itoa()函数的示例代码
    • 总结
  • 2023-07-19 平面坐标下判断三角形以及输出周长和面积
    • 一. 基本知识
    • 总结
  • 2023-06-25 达芬奇去除白背景水印
    • 一、具体步骤
    • 总结
  • 2023-06-20 将Libreoffice PPT 文档转换为txt文字
  • 2023-05-19 C语言非流输入
    • 一、windows平台
    • 二、linux平台
    • 总结
  • 2023-05-11 字符与数组的运用小练习_C语言
    • 一、代码
    • 总结
  • 2023-04-29 C语言二进制读写库
    • 一、代码
    • 总结
  • 2023-04-25 二进制十进制相互转换
    • 一、二进制十进制等相互转换
    • 总结
  • 2023-04-14 lua + C动态库交叉debug
    • 一、前期准备
    • 二、lldb注入进程
    • 总结
  • 2023-04-13 Windows环境下lua输入输出编码转换
    • 一、为lua编写编码转换库
    • 二、lua调用编码转换库demo
    • 总结
  • 2023-04-12 在Windows环境为lua编写模拟键盘库
    • 一、C语言为lua编写库代码
    • 总结
  • 2023-04-04 在C++中使用 int128 类型
    • 一、int128 类型的简单使用
    • 总结
  • 2023-03-28 scanf [A-B] 中[A-B]的意思
  • 2023-03-26 正则表达式的汉字支持
    • 一、解决方案: 宽字符
    • 总结
  • 2023-02-07 C++ constexpr 需要全局或静态才能产生作用
  • 2023-02-03 UE 5.1 第一个游戏难点回顾
    • 一、UE5.1安装
    • 二、开始第一个游戏
      • 1. 学习视频地址
  • 2023-02-02 C语言如何做到让函数知道传入的数据类型
    • 一、gnu扩展宏 __builtin_types_compatible_p
    • 二、使用步骤
    • 总结
  • 2022-12-18 C++模板展开问题
    • C++11的递归模板展开和C++17的逗号表达式展开
    • 总结
  • 2022-11-20 C++小练习, 虚函数求平均值
  • 2022-11-19 C++ 基类, 派生类, 虚函数小练习
    • 题目:
    • 代码:


2023-09-11 C语言定义 int *p,q; p, q类型是否一样

这是一种典型的容易引起混淆的问题, int*是一个类型, int是一个类型,

而如此声明, 初学者可能误认为 p,q 都是指针, 但很遗憾, p 是指针, 但 q 不是,

这在clang-tidy中有会有提示:

Multiple declarations in a single statement reduces readability

单个语句中的多个声明会降低可读性, 人为给自己挖坑的典型.

    int *p;int q;

这才是正确的代码规范.

如果非要偷懒, 那只能事先规定类型

    typedef int *intPtr;intPtr r, s;

2023-09-07 c++叠加三目运算符闰年计算法

原文连接:

c++叠加三目运算符怎么看

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{int x;cin>>x;cout<<(x%400==0?"YES":(x%4==0?(x%100!=0?"YES":"NO"):"No"));return 0;
}

2023-08-13 一个小题目 A+B problem

一个小算法问题, 记录一下

一、问题及解答

A+B problem( A+B problem )
描述
小明有一个很大的数字,现在他想要在这个数字中间插入一个+号,来求出这个数的结果,并且他还想知道,这些数中哪个数末尾0最多。
输入
第一行一个整数T(t<=100)表示数据组数
接下来有T行,每行一个数字字符(长度在10^5,最高位不为0)
输出
T行,每行一个整数,表示0最多有多少个

输入
2
2017
44445555

输出
0
3

关碍

条件是数字字符长度在10^5, 内置int类型不可能满足, 意味着可能用到高精度, 但本题不用.

因为只是求末尾0, 意味着算法简单很多.

如果最后一个字符数字是x, 只需在数字串中的其它部分找到的10-x, 如果x为0, 只需找到其它的0的个数即可.

#include <iostream>
#include <string>auto getLastChar(char num) -> char
{char res = static_cast<char>('9' + '1' - num);return (res == '9' + 1) ? '0' : res;
}auto countZero(const std::string &str) -> int
{char chr = getLastChar(str.back());int cnt = 0;for (const auto &i : str){if (i == chr){cnt++;}}return (chr == '5' || chr == '0') ? cnt - 1 : cnt;
}auto main() -> int
{int T = 0;std::cin >> T;std::vector<std::string> vecStr;vecStr.reserve(T);std::string str;for (int i = 0; i != T; ++i){std::cin >> str;vecStr.push_back(str);}for (int i = 0; i != T; ++i){std::cout << countZero(vecStr[i]) << '\n';}return 0;
}

总结

算法不难, 但需要绕个小弯儿.

2023-07-26 C的2至36进制转换函数

有一些C语言初学者学语言的时候比较囫囵吞枣, 最简单的整数转2至36进制函数, 根本没听说过, 还有自己造轮子, 关键还写不对, 其实多看看书, 多查查资料, 有时候可以省很多时间.


一、itoa()函数的示例代码

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>char digStr[64];int main()
{SetConsoleOutputCP(65001);int number = 123456;itoa(number, digStr, 2);printf("数字:%d 转换后的字符串为:%s\n", number, digStr);number = -123456;itoa(number, digStr, 2);printf("数字:%d 转换后的字符串为:%s\n", number, digStr);return 0;
}

总结

代码简单, 函数语义清晰, 简单记录一下.

2023-07-19 平面坐标下判断三角形以及输出周长和面积

平面坐标下判断三角形以及输出周长和面积, 用线性代数的简单知识.


一. 基本知识

在平面坐标, 三个点就是三个向量, 可以通过两个向量同时减去第三个向量, 形成一个顶点在原点的三角形.

三角型
我们发现, 只有一种情况三角形不能成立, 就是从原点出发的两个向量在一条直线上
向量方向一致或相反
我们可以简单的用向量叉乘判断三角型是否成立, 同时, 向量叉乘的结果是向量形成的平行四边形面积
向量叉乘
平行四边形面积的一半就是三角形面积

而三角型的周长, 可以根据勾股定理得出三条边的长度, 相加得出.

以下是代码:

#include <math.h>
#include <stdio.h>// 定义向量结构体
typedef struct
{double x;double y;
} Vector;// 计算向量的差
Vector sub(Vector vecA, Vector vecB)
{return (Vector){vecA.x - vecB.x, vecA.y - vecB.y};
}// 计算向量的叉积
double cross(Vector vecA, Vector vecB)
{return vecA.x * vecB.y - vecA.y * vecB.x;
}// 计算两点之间的距离
double distance(Vector pointA, Vector pointB)
{Vector subAB = sub(pointA, pointB);return sqrt(subAB.x * subAB.x + subAB.y * subAB.y);
}// 计算三角形的周长
double triPer(Vector pointA, Vector pointB, Vector pointC)
{return distance(pointB, pointC) + distance(pointA, pointC) +distance(pointA, pointB);
}// 返回三角形面积, 向量叉积的二分之一的绝对值
double triArea(Vector vecA, Vector vecB, Vector vecC)
{return fabs(cross(sub(vecB, vecA), sub(vecC, vecA))) / 2.0;
}int main()
{Vector pointA;Vector pointB;Vector pointC;scanf("%lf %lf %lf %lf %lf %lf", &pointA.x, &pointA.y, &pointB.x, &pointB.y,&pointC.x, &pointC.y);double rest = triArea(pointA, pointB, pointC);// 判断平面三点是否可构成三角形, 即叉积不为零if (rest){printf("L = %.2lf, A = %.2lf", triPer(pointA, pointB, pointC), rest);}else{printf("Impossible");}return 0;
}

总结

近期在学OpenGL, 顺便学点图形学, 顺便也就学点线性代数, 这就是另外一个世界了.

2023-06-25 达芬奇去除白背景水印

录视频不小心整了个水印, 当时想了几个方法, 重录, ffmpeg命令搞一下, 一张一张幻灯片导成PNG然后一张一张换, 实在是太费劲了.

于是想到这点小玩意达芬奇这么专业的软件一定有办法, 试了试, 还真行


一、具体步骤

  1. 进入调色界面
  2. 将所有片段选中, 鼠标右键, 添加到当前群组
  3. 在节点区域, 选择片段前群组
  4. 在下方的调整区, 选择窗口, 四边形, 调整大小和位置, 将水印覆盖
  5. 调色区选一级校色条, 亮部的亮度拉满, 水印消失

具体步骤


总结

没有用到收费的功能, 但只能用于白底或黑底之上的水印, 不是智能去除.

2023-06-20 将Libreoffice PPT 文档转换为txt文字

有时候需要把ppt的文字内容抓出来, 想了一些办法, 没有成功, 后来发现直接用软件的内置功能即可:

文件: 在浏览器中预览

2023-05-19 C语言非流输入

一个有意思的问题c语言的输入输出问题, 网上很多答案, 总结一下.


一、windows平台

vs需要将getch()更改为_getch()

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>char chrArr[32];int main()
{int i = 0;while ((chrArr[i] = getch()) && (chrArr[i] != '\r')){++i;}char *num;int lhs = strtol(chrArr, &num, 10);int rhs = atoi(num);printf("%d %d %d", lhs, rhs, lhs + rhs);
}

二、linux平台

#include <stdio.h>
#include <stdlib.h>
#include <termio.h>
#include <stdbool.h>int getch(void)
{return getchar();
}void setio(bool bl)
{static struct termios tm, tm_old;if (bl){tcgetattr(0, &tm);tm_old = tm;cfmakeraw(&tm); // 更改终端设置为原始模式,该模式下所有的输入数据以字节为单位被处理tcsetattr(0, TCSANOW, &tm);}else{tcsetattr(0, TCSANOW, &tm_old);}
}char chrArr[32];int main()
{setio(true);int i = 0;while ((chrArr[i] = getch()) && (chrArr[i] != '\r')){++i;}setio(false);char *num;int lhs = strtol(chrArr, &num, 10);int rhs = atoi(num);printf("%d %d %d\n", lhs, rhs, lhs + rhs);
}

总结

vs要用 _getch(), mingw和clang用getch(), linux平台需要自己实现, 这不是标准库中的东西, 所以不可移植…

2023-05-11 字符与数组的运用小练习_C语言

一个问答题: 字符与数组的运用 , 考察知识点: scanf的使用, 字符串数组, 字符在C语言本质是整数, 循环, 分支.


一、代码

一道小题目, 考的知识点包括了C语言输入输出, 字符类的本质, 循环, 分支, 挺好的.

#include <stdio.h>
#include <string.h>char strArr[100][100];void encrypted(char *chr);int main()
{int index = 0;// INT DOUBLE FOR WHILE// RETURNwhile (scanf("%s", strArr[index]) != EOF){for (int i = 0; i != strlen(strArr[index]); i++){encrypted(strArr[index] + i);}index++;}for (int i = 0; i != index; i++){printf("%s\n", strArr[i]);}return 0;
}void encrypted(char *chr)
{switch (*chr){case 'A':*chr = 'N';break;case 'B':*chr = 'O';break;case 'C':*chr = 'P';break;case 'D':*chr = 'Q';break;case 'E':*chr = 'R';break;case 'F':*chr = 'S';break;case 'G':*chr = 'T';break;case 'H':*chr = 'U';break;case 'I':*chr = 'V';break;case 'J':*chr = 'W';break;case 'K':*chr = 'X';break;case 'L':*chr = 'Y';break;case 'M':*chr = 'Z';break;case 'N':*chr = 'A';break;case 'O':*chr = 'B';break;case 'P':*chr = 'C';break;case 'Q':*chr = 'D';break;case 'R':*chr = 'E';break;case 'S':*chr = 'F';break;case 'T':*chr = 'G';break;case 'U':*chr = 'H';break;case 'V':*chr = 'I';break;case 'W':*chr = 'J';break;case 'X':*chr = 'K';break;case 'Y':*chr = 'L';break;case 'Z':*chr = 'M';break;}
}

总结

出这道题的老师挺有水平.


2023-04-29 C语言二进制读写库

压缩算法需要二进制读写库, 根据算法第四版重构C语言版. 可进行逐位读写, 主要用于数据压缩.


一、代码

#ifndef BINSTDIO
#define BINSTDIO#include <assert.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#ifdef _WIN64
#include <fcntl.h>
#include <io.h>
#endif// 读流到缓冲区
void binIO_fillBuffer();// 比特流是否为空
bool binIO_isEmpty();// 读取1位数据并返回一个bool值
bool binIO_readBool(bool *bit);// 读取8位数据并返回一个char值
bool binIO_readChar(unsigned char *chr);// 读取r(1~8)位数据并返回一个char值
bool binIO_readCharBit(unsigned char *chr, int bitSize);// 读取int16值
bool binIO_readShort(uint16_t *num);// 读取r(1~BUFSIZE_X_2)位数据并返回一个int16值
bool binIO_readShortBit(uint16_t *num, int bitSize);// 读取int值
bool binIO_readInt(uint32_t *num);// 读取r(1~32)位数据并返回一个int值
bool binIO_readIntBit(uint32_t *num, int bitSize);// 读取int64
bool binIO_readInt64(uint64_t *num);// 读取r(1~32)位数据并返回一个int值
bool binIO_readInt64Bit(uint64_t *num, int bitSize);// 关闭比特流
void binIO_close();// 恢复流状态
void binIO_clear();// 写入指定的比特
void binIO_writeBool(bool bit);// 写入指定的8位字符
void binIO_writeChar(unsigned char chr);// 写入指定字符的r(1~8)位
void binIO_writeCharBit(unsigned char chr, int bitSize);// 写入int16值
void binIO_writeShort(uint16_t num);// 写入 int16 值, bitSize 在范围 [1, BUFSIZE_X_2]
void binIO_writeShortBit(uint16_t num, int bitSize);// 写入int值
void binIO_writeInt(uint32_t num);// 写入指定 int 的 bit

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/75691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

十八、MySQL添加外键?

1、外键 外键是用来让两张表的数据之间建立联系&#xff0c;从而保证数据的一致性和完整性。 注意&#xff0c;父表被关联的字段类型&#xff0c;必须和子表被关联的字段类型一致。 2、实际操作 &#xff08;1&#xff09;初始化两张表格&#xff1a; 子表&#xff1a; 父…

哪个矩阵系统管理最好用?如何同时管理1000个账号和发布视频?

软件图片素材来自于公众号&#xff1a;生财风暴 关注进行领取价值1000元的采集软件&#xff0c;和呆头鹅批量剪辑和矩阵管理系统演示 实体店老板如何用抖音进行推广&#xff1f; 【方式一&#xff1a;找网红达人拍视频帮忙推广店铺&#xff0c;但是成本收费相对于比较高 ​【方…

PHP 排序函数使用方法,按照字母排序等操作

详解PHP排序方法使用 一、sort() 函数 用于对数组单元从低到高进行排序。 //数组 $data array(D,F,A,C,B); //排序 sort($data); //输出排版标签 echo "<pre>"; //打印数据 print_r($data);die;输出结果&#xff1a; 二、rsort() 函数 用于对数组单元从高到…

保姆级-微信小程序开发教程

一&#xff0c;注册微信小程序 如果你还没有微信公众平台的账号&#xff0c;请先进入微信公众平台首页&#xff0c;点击 “立即注册” 按钮进行注册。注册的账号类型可以是订阅号、服务号、小程序以及企业微信&#xff0c;我们选择 “小程序” 即可。 接着填写账号信息&#x…

怎样获取字符串数组的长度_使用sizeof(array) / sizeof(array[0])

使用sizeof() C、C中没有提供直接获取数组长度的函数&#xff0c;对于存放字符串的字符数组提供了一个strlen函数获取长度&#xff0c;那么对于其他类型的数组如何获取他们的长度呢&#xff1f; 其中一种方法是使用sizeof(array) / sizeof(array[0]), 在C语言中习惯上在使用时…

如何将两台Mac显示器设置为单个屏幕配置

​能够在扩展模式下将两个或多个外部显示器连接到Mac是一种解放的屏幕体验&#xff0c;但当每个显示器仍然像独立显示器一样工作时&#xff0c;会导致沮丧。 在这里&#xff0c;我们向你展示如何通过对系统设置进行一些简单的更改&#xff0c;使两个扩展屏幕看起来像一个屏幕。…

【代码随想录day24】不同的二叉搜索树

题目 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;5示例 2&#xff1a; 输入&#xff1a;n 1 输出&#xf…

数据结构与算法基础-学习-32-选择排序之简单选择排序、堆排序

目录 一、简单选择排序基本思路 二、简单选择排序基本操作 三、简单选择排序算法思路 四、简单选择排序代码 1、SimpleSelectSortSentrySqQueue 五、简单选择排序算法分析 1、记录移动次数 2、记录比较次数 六、简单选择排序Linux环境编译测试 七、堆的定义 八、堆调…

A6120 Emerson 机箱地震振动监测器

A6120 Emerson 机箱地震振动监测器 艾默生过程管理公司宣布&#xff0c;PlantWeb数字工厂架构已经安装在化学工业CATCH(技术能力评估中心)培训中心&#xff0c;该中心位于北林肯郡格里姆斯比附近的Stallingborough。这座价值820万英镑的设施是为了满足行业对培训中心的需求而开…

教师如何私密发布成绩查询?

随着科技的不断发展&#xff0c;教育领域也逐渐引入了各种在线工具来提高教学效果和管理效率。其中&#xff0c;易查分作为一款功能强大的在线查询工具&#xff0c;帮助老师们更好的利用该工具进行成绩查询。 好消息&#xff01;博主给大家争取到的易查分福利&#xff0c;只需要…

C++中的红黑树

红黑树 搜索二叉树搜索二叉树的模拟实现平衡搜索二叉树(AVL Tree)平衡搜索二叉树的模拟实现红黑树(Red Black Tree)红黑树的模拟实现 红黑树的应用(Map 和 Set)Map和Set的封装 搜索二叉树 搜索二叉树的概念&#xff1a;二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&…

电脑文件批量重命名:高效操作技巧

随着时间的推移&#xff0c;我们积累的文件和文件夹数量越来越多&#xff0c;需要对它们进行合理的命名和管理&#xff0c;以便更方便地查找和利用。而文件批量重命名功能可以帮助我们更高效地管理文件夹。下面介绍五种方式&#xff0c;帮助你更好地利用文件批量重命名工具&…

leetcode刷题--栈与递归

文章目录 1. 682 棒球比赛2. 71 简化路径3. 388 文件的最长绝对路径4. 150 逆波兰表达式求值5. 227. 基本计算器II6. 224. 基本计算器7. 20. 有效的括号8. 636. 函数的独占时间9. 591. 标签验证器10. 32.最长有效括号12. 341. 扁平化嵌套列表迭代器13. 394.字符串解码 1. 682 棒…

算法之双指针题型:

双指针例题小总结&#xff1a; 力扣27&#xff1a; 移除元素 力扣题目链接 双指针分为&#xff1a; 快慢双指针&#xff1a;同一个起点&#xff0c;同向出发 相向双指针&#xff1a;从两端出发&#xff0c;方向相反&#xff0c;终会相遇 经典的双指针&#xff08;快慢双指…

消息队列理解

rocketMQ RocketMQ消息存储原理_码上得天下的博客-CSDN博客 领域模型概述 | RocketMQ kafka Kafka基本架构介绍-腾讯云开发者社区-腾讯云 看完这篇Kafka&#xff0c;你也许就会了Kafka_心的步伐的博客-CSDN博客 Apache Kafka

技术解码 | GB28181/SIP/SDP 协议--EasyGBS国标GB28181平台国标视频技术SDP解析

EasyGBS去年更换了新内核&#xff0c;新内核版本的平台性能更加稳定&#xff0c;我们也在不断对平台进行持续的功能优化和升级&#xff0c;始终保持EasyGBS平台在安防视频监控市场的技术先进性。EasyGBS拥有视频直播、录像存储、检索与回放、云台控制、告警上报、语音对讲、平台…

Tomcat服务的部署及配置优化

文章目录 1. Tomcat的相关介绍1.1 Tomcat简介1.2 Tomcat的核心组件1.2.1 Web容器1.2.2 Servlet容器1.2.3 JSP容器 1.3 Tomcat的功能组件1.3.1 connector连接器1.3.2 container容器1.3.2.1 子容器及其相关功能 1.4 主要作用1.5 Tmocat处理请求的过程 2. Tomcata服务部署2.1 安装…

VSCode自动分析代码的插件

今天来给大伙介绍一款非常好用的插件&#xff0c;它能够自动分析代码&#xff0c;并帮你完成代码的编写 效果如下图 首先我们用的是VSCode&#xff0c;&#xff08;免费随便下&#xff09; 找到扩展&#xff0c;搜索CodeGeeX&#xff0c;将它下载好&#xff0c;就可以实现了 到…

QVector 和 QMap

QVector_QMap QVector简介 头文件&#xff1a;#include<QVector> 模块&#xff1a; QT core 功能&#xff1a; QVector类是动态数组的模板类&#xff0c;顺序容器&#xff0c;它将自己的每一个对象存储在连续的内存中&#xff0c;可以使用索引号来快速访问它们 常用…

【MySQL系列】视图特性

「前言」文章内容大致是MySQL事务管理。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 视图1.1 视图概念1.2 创建视图1.3 修改互相影响1.4 删除视图1.5 视图规则和限制 视图 1.1 视图概念 视图是一个虚拟表&#xff0c;其内容由查询定义同真实的表一样…