
C/C++
hhmy77
计算机研究生在读,公众号:code路漫漫
展开
-
c++实现文本单词查找
文章目录代码运行效果文本测试数据代码cpp primer上面第12章的练习,自己实现了一下#include <set>#include <map>#include <string>#include <cctype>#include <vector>#include <sstream>#include <...原创 2020-02-18 21:17:12 · 3692 阅读 · 1 评论 -
C中的struct,union,Bit Filed以及内存对齐
文章目录介绍struct字节对齐再次探讨struct的内存占用不使用反汇编计算占用空间Bit Filedunion参考资料介绍之前我们在这篇文章中提到了如何判断计算机的大小端,里面涉及到了union,这篇文章仔细讲一下这三种结构体的区别。我的实验平台是x86_64的Ubuntustruct这是我们平时用的最多的结构体了,随手写出一个结构体#include<stdio.h>...原创 2020-01-30 14:45:43 · 3586 阅读 · 1 评论 -
写一个程序判断当前机器的字节序是大端还是小端
文章目录解答解答本文涉及到计算机字节的大小端表示,union和struct所占用内存空间大小的判断,还有内存对齐等知识假设有一个int变量的值是0x01000002,它在内存中的起始位置是0x00000000那么大端字节序的存储结构是这样的,上面一行是地址,下面一行是值小端字节序的存储结构是这样的也就是,当计算机采用小端字节序的时候,要从低地址往高地址读才能读出正确的值0x0100...原创 2020-01-30 12:34:58 · 1352 阅读 · 0 评论 -
Linux下C编译的步骤
文章目录概览步骤预处理生成汇编代码生成目标文件生成可执行文件ELF文件概览图片来自LinuxC变成一站式学习其中main.s是main.c对应的汇编代码,main.o是目标文件,a.out是可执行文件。可以看到图中每种文件都有相应的指令来生成a.out可执行文件。我们以main.c为例,依次生成main.s,main.o.a.out步骤我们先编写一个简单的.c文件,保存为main.c文...原创 2020-01-19 13:37:11 · 606 阅读 · 0 评论 -
如何查找出或判断某个数的倍数
最直观的方法其实最直观的方法,就是如果x对i取余得0,表示x能由i整除,所以x就是i的倍数if(x%i==0) printf("%d是i的倍数\n",x)但是我们这里肯定要讲别的方法欧几里得假如某个数是x的倍数,那么x就是两数之间的最大公约数,那么我们很容易想到欧几里得递归求最大公因数的方法那我们根据这条性质求出x的倍数int func(int a,int b){ retur...原创 2020-01-16 17:16:11 · 9247 阅读 · 2 评论 -
力扣 190. 颠倒二进制位
题目链接 https://leetcode-cn.com/problems/reverse-bits/submissions/预备知识首先uint32_t的来源是typedef unsigned int uint32_t; ,是无符号整型,四个Byte然后C++里面还有一个数据类型叫bitset,在头文件bitset 中,每个元素仅占一个bit的空间-详细用法https://www....原创 2020-01-16 14:18:37 · 271 阅读 · 0 评论 -
C中的隐式转换和溢出问题
文章目录Integer Promotion有不对的地方请指出Integer Promotion先判断下面几个程序的运行结果,如果你都能得出正确答案,那这篇文章就不用看了????提示:unsigned char 的范围是0~255unsigned short 的范围是0~65535short的范围是-32768~32767unsigned char c1=256;printf("%...原创 2020-01-15 17:09:38 · 1959 阅读 · 0 评论 -
leetcode 98. 验证二叉搜索树
题目初次尝试思路很简单,就是对树中的每个节点判断它是否符合二叉搜索树的定义class Solution {public: bool isValidBST(TreeNode* root) { if(!root)return true; if(!root->left&&!root->right)return true; ...原创 2020-01-08 17:56:33 · 110 阅读 · 0 评论 -
二叉树迭代(非递归)遍历方法
文章目录结构定义思路前序迭代方法一 通用方法方法二中序迭代方法一 通用方法后序迭代方法一 通用方法方法二颜色标记法所有方法都可以在力扣上验证前序题目链接中序题目链接后序题目链接这里只写出我会的方法,有更好的方法可以补充????结构定义 // Definition for a binary tree node. struct TreeNode { int val; Tr...原创 2020-01-05 13:57:29 · 480 阅读 · 0 评论 -
c++输出全排列函数
#include<iostream> #include<cstdio> #include<string>#include<map>#include<algorithm> using namespace std; int main() { int n; cin >> n; while(n--) { ...原创 2018-11-17 22:13:53 · 1275 阅读 · 1 评论 -
C/C++两个版本实现单链表
文章目录前言代码功能c++版c版本前言在devc++上面基本上没有使用c++的库,但是使用了初始化,重载,bool类型等c++有但是c没有的语法,代码只有保存.cpp文件才能编译通过,而保存.c文件的话编译会报无数多个语法的错,代码逻辑上是没有问题的。感觉习惯写c++了直接写c的话还是很麻烦代码功能功能一览1.头插法建表1.1直接读输入建表1.2从文件中读路径建表2.尾插法建表 ...原创 2019-04-12 12:33:11 · 298 阅读 · 0 评论 -
函数传值,传指针,传引用,传指针引用到底有什么不同
牢记所有操作都在内存空间中进行指针和引用最大的区别,指针是开辟了一块内存空间,实实在在存在的,寻得到,而引用是给原有的内存空间起一个别名。对计算机来说变量只不过是一堆地址和该地址的值。先来看没有函数的写法#include<stdio.h>int main(){ //内存:1.地址,2.值 //内存中开辟一块空间,这个空间值为1 int a=1; //开辟一块空间存...原创 2019-04-09 12:03:29 · 2132 阅读 · 4 评论 -
argc, argv 到底是干啥用的?
文章目录前言分析初探类型文件IO多个文件IO前言在旧版本的IDE中新建一个C/C++源文件,你可能会看到这种样子的main函数int main(int argc,char* argv[]){ return 0;}上面这个argc,argv到底有什么用呢?分析初探类型先看argv,可以理解成它是一个string数组(char数组可以理解成一个string,为了方便叙述都用str...原创 2019-06-06 23:15:05 · 7822 阅读 · 0 评论 -
QT聊天机器人(百度语音+青云客API)
文章目录效果前期准备设计功能原创 2019-07-04 16:24:03 · 7596 阅读 · 7 评论 -
C extern static修饰变量的作用域
文章目录externstaticexternextern用来声明外部变量,具体看代码编写两个.c文件t_1.c文件代码如下#include<stdio.h>int i=5;void print(){ printf("hello,world!\n");}t_2.c文件代码如下#include<stdio.h>extern int i;exte...原创 2019-08-28 19:54:46 · 420 阅读 · 0 评论 -
C 与char*有关的指针
简单却容易疏忽的错误指向字符串常量的指针 char* p="asd";//p指向"asd",此时"asd"是字符串常量,p->"asd"//也就是说p仅仅指向这个字符串,只能打印出里面的内容,不能修改字符串里面的值char* p="asd";printf("%s\n",p); //打印asdprintf("%c",*p);//打印a*p=‘A'; //报错,此时不能修改值...原创 2019-08-31 20:33:04 · 1241 阅读 · 0 评论 -
C 变长参数表
对应TCPL137页类似于printf scanf等函数,C语言提供了变长参数表,它可以读入不限长度的参数并处理首先看一个简单的demo吧,func函数将读入的字符串输出到屏幕上 #include<stdio.h> #include<string.h> #include<stdarg.h> void func(char* fmt,...) { ...原创 2019-09-01 19:43:11 · 156 阅读 · 0 评论 -
C++处理有道单词导出单词本
有道单词本导出为txt文件后是这样子的,可以看到每个单词之间没有分开,而且还有的单词意思注释写了两次下图是排序完成后的结果代码如下,使用的话更改一下目录即可,排序之后的单词可以用word打开,这个时候就不会有多余的空行出现了,然后用word处理一下就可以愉快的背单词了。1600多行的文件c++0.18秒就搞定了,恐怖如斯~~#include<iostream>#includ...原创 2019-09-14 22:55:31 · 627 阅读 · 0 评论 -
Devc++安装教程
安装和使用教程默认就好点I Agree还是默认就好修改自己想要的安装路径,最好不要带有中文安装完成后,取消勾选Run Dev-C++5.11选项打开你的安装路径,找到devcppPortable.exe,点击运行选择想要的语言默认安装即可,安装完成后以后都用devcppPortable.exe打开编译器ctrl+n新建一个.cpp文件,cpp向下兼容c所以你可以使用...原创 2019-09-21 23:16:18 · 23038 阅读 · 1 评论 -
C scanf读入longlong型数据的问题
codeup上很水的题目,但是第一次提交报错了 http://codeup.cn/problem.php?cid=100000575&pid=1 检查了一下输入为符号的情况,发现用longlong型直接用%d读入的话会不识别负号,用cin或者%lld就没问题#include<cstdio>#include<iostream>using namespac...原创 2018-09-05 19:26:41 · 31335 阅读 · 1 评论 -
二叉树的创建搜索以及遍历,简单易懂
包括了前中后递归和迭代写法,以及层序遍历分组输出,还有搜索修改子串,求深度节点数叶子节点数有时间再写一个二叉搜索树的版本,然后再把这个版本写好看点#include<bits/stdc++.h>using namespace std; //前 中 后序 层序遍历二叉树 创建,搜索修改二叉树 struct TreeNode{ char val; TreeNode* left;...原创 2018-11-09 16:14:34 · 267 阅读 · 0 评论 -
LeetCode 链表翻转相关(24 25)
思路链表反转这种题,上个星期我还是不会做的,但是自从学会了前插法,写起来就游刃有余的。下面介绍下前插法新建一个空节点作为反转链表的表头将待反转链表的头结点取出,用一个指针指向头结点的下一个结点,然后将头结点指向新链表的表头新链表的指针指向插入的头结点,待反转链表的表头为之前存放的旧结点的next结点重复上述操作,直到反转链表全部插入到新链表中返回新链表的头结点即可这样看着不好理解...原创 2018-10-23 20:21:55 · 228 阅读 · 0 评论 -
求组合数C(n,m)的几种方法 递归打表,公式变形
下面只是简单的方法,根据不同题目要进行适当的修改#include&lt;cstdio&gt;typedef long long LL;//组合数的计算 // n!//----- //m!(n-m)!//由于数据非常容易溢出,所以采用一律采用longlong来存储数据。//(不管哪种方法大概都会在n&gt;62,m&gt;31的情况下溢出,不同的方法n和m略有差别//方法一:...原创 2018-09-19 22:30:38 · 6989 阅读 · 1 评论 -
简单的大数模板
简单的大数模板,包含加减乘除,注意,下面的函数都没有考虑首位为’-'的情况,所以要根据题目来修改#include&lt;cstdio&gt;#include&lt;string.h&gt;#include&lt;algorithm&gt;using namespace std;struct bign{ int d[1000]; int len; bign() { m原创 2018-09-19 21:51:44 · 140 阅读 · 0 评论 -
科学计数法的两道题
问题 A: 字符串处理 http://codeup.cn/problem.php?cid=100000598&pid=01024 科学计数法 (20 分) https://pintia.cn/problsets/994805260223102976/problems/994805297229447168我对这种题目处理都很头痛,因为要处理‘E’,‘e’,’-’,’.'等字符。问题A我...原创 2018-09-23 14:47:05 · 1065 阅读 · 0 评论 -
算法中有关进制转换的运算
[TOC] 因为自己这方面比较薄弱,然后最近又学到了几个方法,所以在这里总结一下处理进制转换题目的方法。1.将10进制的数转换为任意进制的数//y为10进制数,d为任意进制int y=11,d=2;int ans[40],index=0;do{ ans[num++]=y%d; y=y/d;}while(y);//输出for(int i=num-1;...原创 2018-09-05 20:46:47 · 191 阅读 · 0 评论 -
LeetCode 206. Reverse Linked List 初次接触链表反转
第一次接触到链表反转的题目,写起来懵懵懂懂的,用了最笨的方法每次遍历到最后的结点,然后把它添加到答案链表里面,这样做是可以,但是速度很慢(720ms和最快的4ms差了180倍!)然后我又想了另一个方法,先遍历链表,然后将值存放到数组中,再从后到前取出数组的值依次建立一个新链表返回,但是这样并没有快多少方法一看了一下别人的解答,用的方法是新建一个空节点作为答案链表用一个first指针和s...原创 2018-10-11 17:08:02 · 121 阅读 · 0 评论 -
CodeUp中关于vector的两道题目
文章目录问题 A: Course List for Student (25)题目描述输入输出样例输入样例输出问题 B: Student List for Course (25)题目描述输入输出样例输入样例输出两道题大同小异 直接写在一起了问题 A: Course List for Student (25)问题 B: Student List for Course (25)题目链接 http...原创 2018-09-22 14:56:42 · 741 阅读 · 0 评论 -
LeetCode 双指针判断环路
学而时习之 不亦说乎!今天又学到了一点新的东西,那就是双指针,一般常见于判断数组或链表有没有换路或者重复数,之前脑子里一直没有这种概念,碰到这种题目直接用遍历加hash,或者是取巧一点改变元素的值,但是这样即使能AC,但是心里也觉得没有学到新的东西,刚好又写到了双指针的题目,一口气把它们做完,明了多了!思路想象两个跑步者以不同的速度在一条跑道上跑步,如果是跑道是环形,那么根据生活经验来猜测他...原创 2018-10-19 20:57:51 · 611 阅读 · 0 评论 -
[c++] 迭代器的一些测试(迭代器二分)
#include<iostream>#include<cstdio>#include<string>#include<vector>#include<cmath>#include<limits.h>#include<set>#include<algorithm> #inc原创 2018-10-16 20:48:57 · 278 阅读 · 1 评论 -
LeetCode 112. 路径总和
这道题一看就是用DFS,但是无奈自己写不出,想不到怎么返回上一层,实际上当左和右都不存在的时候也就是遍历到叶子节点的时候自然会返回上一层了下面这是我看了别人的解法后添加了自己的理解/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * ...原创 2018-10-16 19:57:15 · 164 阅读 · 0 评论 -
LeetCode532. 数组中的K-diff数对
总觉得在哪里写过类似的题。。但是想不起来了!本蠢逼第一时间想到了双重循环,o(n^2)的时间复杂度。。算了然后看别人的思路,学到了一个新的方法,就是在map中find auto it2=hash.find(k+it->first); if(it2!=hash.end()) ans++;简单的两行代码,就能找到符合要求的key值,妈妈再也不用担心的我时间复杂度代码clas...原创 2018-10-18 21:43:08 · 222 阅读 · 0 评论 -
c++ unique()函数,用来给vector去重
链接 https://blog.youkuaiyun.com/qq_29344757/article/details/73744556原创 2018-09-29 20:28:12 · 4332 阅读 · 0 评论 -
40. 组合总和 II 坑爹的输出
链接https://leetcode-cn.com/problems/combination-sum-ii/description/本来以为输出一定要严格按照标准答案的顺序,没想到只要对应上就行了,这里搞了好久。还有就是学到了一个为vector去重的方法: vector<vector<int>>::iterator iter=unique(ans.begin(),an...原创 2018-09-29 20:26:30 · 216 阅读 · 0 评论 -
LeetCode89.Gray Code 格雷编码
这道题看起来很简单,实际上要求你【每一次编码的变换不能超过1位】,所以不能直接改变编码的状态,否则答案即使对了也会因为答案位置不对而不通过。愚蠢的我看到这种题目当然想用字符串遍历n遍的方法推出答案。实际上我在写的过程中隐隐约约的想到了应该用位运算的知识,因为每次code的变换都是左移右移一位,这不刚好符合<<与>>的要求吗,但是由于自己这方面知识薄弱,还是没有用这种方法。...原创 2018-10-12 20:30:14 · 396 阅读 · 0 评论