
C++/C 语法技巧
文章平均质量分 65
稚枭天卓
manu
展开
-
数据结构基础 之 树与二叉树 各种遍历、思想与实现
本文首先阐述树的基本概念与特点,二叉树的基本概念与特点;然后,给出二叉树的代码实现,包括二叉树的创建、三序遍历+层序遍历、深度求解、平衡二叉树判断源码、层次遍历二叉树,最后将给出常见OJ树题目的实现思想。原创 2015-07-05 20:40:50 · 2226 阅读 · 5 评论 -
C++ 之 main函数的调用与被调用
main函数能调用自身吗?其他函数能调用main函数么?下面先看一段有意思的程序,一个简洁有趣的打印菱形的程序。[cpp] view plaincopyint line = 1; int main() { printf("%*s\n",7-(line>4?line-4:4-line),原创 2015-09-03 22:08:44 · 9570 阅读 · 1 评论 -
C++ 之 Vector(容器)初始化高维数组
使用C++标准模版库(STL)中的Vector(向量)可以实现变长数组,实现二维数组,高维数组。下面给出代码实现。#include#includeusing namespace std;int main(){int len;cin>>len;vector array(len);//声明变长数组for(int i=0;iarray[i]=i;coutr原创 2015-08-19 11:08:21 · 6209 阅读 · 0 评论 -
C 语言 运算符表
运算符按照优先级由上向下依次减小,在同一行的运算符具有相同优先级。第二行是所有的一元运算符。运算符解释结合方式() [] -> .括号(函数等),数组,两种结构成员访问由左向右! ~ ++ -- + - * & (类型) sizeof否定,按位否定,增量,减量,正负号,间原创 2015-07-19 15:35:23 · 821 阅读 · 0 评论 -
C++ 浮点数的存储结构
浮点数 存储结构IEEE的标准,浮点数的定义如下符号位指数位小数部分指数偏移量单精度浮点数1 位[31]8位 [30-23]23位 [22-00]127双精度浮点数1 位[63]11 位[62-52]52 位[51-00]1023我们以单精度浮点数来说明:符号位,表述原创 2015-09-01 21:17:48 · 1318 阅读 · 0 评论 -
C 语言 之 如何实现一个malloc
任何一个用过或学过C的人对malloc都不会陌生。大家都知道malloc可以分配一段连续的内存空间,并且在不再使用时可以通过free释放掉。但是,许多程序员对malloc背后的事情并不熟悉,许多人甚至把malloc当做操作系统所提供的系统调用或C的关键字。实际上,malloc只是C的标准库中提供的一个普通函数,而且实现malloc的基本思想并不复杂,任何一个对C和操作系统有些许了解的程序员都可以很容易理解。这篇文章通过实现一个简单的malloc来描述malloc背后的机制。当然与现有C的标准库实现(例如g原创 2015-08-30 21:22:20 · 1173 阅读 · 0 评论 -
C++ scanf("%d\n",&mynum) 会产生什么结果
scanf("%d\n",&mynum)输入两次才能得到结果,那么 scanf 搭配空白符,如:空格、制表符、换页符、换行符,即,回车,为什么会是这种结果呢?阐释如下。原创 2015-03-03 22:21:22 · 1012 阅读 · 0 评论 -
C/C++ scanf 函数中%s 和%c 的简单区别
首先声明:在键盘中敲入字符后,字符会首先保存在键盘缓冲区中供scanf函数读取(scanf,getchar等函数是读取缓冲区,getch函数是读取的控制台信息,即为直接从键盘读取)。另外特别注意键盘上敲入回车实际为“\r\n”,但存储到缓冲区时候会舍弃‘\r’而只存储\n.例如我们敲入字符“12345回车”,缓冲区内存储的为“12345\n”.文章中“_”代表空格代码:ch原创 2015-08-18 09:29:16 · 9876 阅读 · 3 评论 -
C++ 一道简单的题目引发的思考
引言昨晚一时兴起,我脑子就问自己下面的代码会输出什么,也不知道我脑子为什么有这个代码模型,只是模糊的有些印象:#include #include int main(int argc,char** argv){ int i=3,j; j=(i++)+(i++)+(++i); printf("i = %d, j = %d\n",i,j);原创 2015-04-18 09:23:54 · 739 阅读 · 0 评论 -
C++ 各种基本数据类型 详细说明
C/C++ 各种基本数据类型 详细说明原创 2015-07-22 14:29:31 · 3949 阅读 · 0 评论 -
C++ 不使用库函数 字符串与整型 转换
本文首先 针对 字符串的 格式输入函数 讲解 一个注意事项。其次 ,讲解 如何 处理 字符串转换为 整型常量的 实现。最终, 文章将给出 整型常量 变为 字符串的实现 源代码。原创 2015-03-03 22:03:46 · 2602 阅读 · 0 评论 -
C++ cin系列与get系列 函数 实现 用例 浅析
本文详细介绍以下6个函数的具体用法,1、cin;2、cin.get();3、cin.getline();4、getline();5、gets();6、getchar()。原创 2015-07-07 22:56:25 · 883 阅读 · 0 评论 -
C++ 不用临时变量交换两个变量的值——函数对象
本文给出不使用中间变量交换两个变量值得源码方法。原创 2015-07-19 15:13:23 · 2264 阅读 · 0 评论 -
C++ HOJ 求解二叉树的宽度(队列实现)
我们可以把二叉树中每层的节点依次放入一个队列中。设置一个变量width用于存储树的宽度。每一层的节点入队时计算该层节点的数目,如果该层次节点的数目大于width的值,那么把该层次节点的数目赋给width.如此,对二叉树按层遍历一遍之后width中保存的就是该二叉树的宽度。原创 2015-07-07 21:36:37 · 1868 阅读 · 0 评论 -
C++ HOJ 合唱队
本文首先给出合唱队问题的描述,而后给出四个实现思路,最后给出C++实现。原创 2015-06-29 09:50:59 · 1690 阅读 · 0 评论 -
C++ LOL OJ 计算火车停站方案
我们都知道,火车沿途会经过各种大大小小的站,火车在可能会跳过某些站不停靠,但是肯定不会连续跳过两站及以上。假设沿途一共会有m个站台(火车起初停靠在第一站),一共有多少种不同的停站方案——使用斐波那契数列是很好选择,本文在树结构上给出新的求解思路,详述如下。原创 2015-07-15 15:36:57 · 1576 阅读 · 0 评论 -
数据结构基础 图的遍历(一) 之 DFS
本文从三个方面着手介绍深度优先遍历,首先,详述图的遍历、深度优先遍历等相关概念;然后,给出深度优先遍历图例示例分析;最后,给出遍历算法思想与代码实现。原创 2015-07-11 16:10:48 · 2769 阅读 · 1 评论 -
C++ 字典排序 原理与实现
本文拟首先给出字典序的定义,字典序的物理含义;然后,介绍字典序的代码实现思想;最终,给出字典序的代码实现。原创 2015-07-03 12:03:29 · 15673 阅读 · 1 评论 -
C++ 中 malloc/free 与 new/delete 浅析
new/delete 通常来说是操作符,就是"+","-"一样,malloc/free 是 C++/C 语言的标准库函数 —— 本质区别。本文主要从以下5各方面比较、分析 malloc/free,new/delete 的区别 。 1.自动地分配所需空间。2.自动返回指针类型。3.初始化不同。4.源码实现不同。5.常见问题为什么有了new不剔除malloc。原创 2015-04-08 21:43:23 · 6584 阅读 · 0 评论 -
C++ 之 浮点数的大小比较
本文首先 将 介绍 浮点数 的 存储结构 以及 (int&) 操作 含义。其次,介绍 常规 浮点数比较 方法。最后 本文,将采用 (int&) 转换为 整型 数据 ,直接比较 转换为的 整形数据 的 大小。原创 2015-04-08 21:46:26 · 15912 阅读 · 3 评论 -
C/C++ 之 left operand must be l-value 错误提示总结
编译器:vc6.0语言:c/c++= : left operand must be l-value 到底是什么错误?解释:赋值号(‘=’)左边的操作数必须是一个左值。通俗的说:左值就是可以改变的值的变量。发生这个错误的原因是你把常量(或不可改变值的变量)放到了赋值号的左边。例如:int a[3]; a++;//这里就相当于a=a+1;注意原创 2016-02-29 10:34:19 · 82114 阅读 · 3 评论 -
C/C++ 之 异常处理机制核心观点
C++异常处理机制核心观点: 0. 如果使用普通的处理方式:ASSERT, return等已经足够简洁明了,请不要使用异常处理机制。 1. 比C的setjump, longjump优秀。 2. 可以处理任意类型的异常。 你可以人为地抛出任何类型的对象作为异常。 throw 100;原创 2016-03-21 21:01:51 · 883 阅读 · 1 评论 -
C++ 移位运算与进制转换 浅析
本文首先讲述两种循环移位的概念,并针对有符号与无符号数举例。最后,给出数制变换机制的示意图。原创 2015-06-27 16:46:36 · 2419 阅读 · 0 评论 -
C++ 使用数组 初始化 Vector
vector 的初始化常常需要一个元素一个元素的 push_back 到 vector 之中,这样赋值很琐碎也为测试用例的完善带来了很大的负担。为了不用一个元素与个元素的 push_back 到 vector 之中,本文拟采用指针赋值的方式,一次性操作以实现数组对 vector 的初始化,相见代码如下。#include #include using name原创 2015-08-02 16:11:56 · 6879 阅读 · 0 评论 -
SYDZ 和为 S 的连续正数序列
问题描述:输出给定数字的连续数字形式,例:15 表示为1+2+3+4+5,4+5+6,7+8 。算法思想:连续的数字形式有上界和下界,上下界连续数字和小于给定数字则上界自增、大于给定数字则下界前移。源码实现:#include using namespace std;void FindSum(int num){ if(num<3) return; int原创 2015-09-07 22:08:51 · 684 阅读 · 0 评论 -
LeetCode 之 Course Schedule I(图-广搜)
LeetCode 之 Course Schedule I,给出图结构的构造函数,分析拓扑排序原理,并最终给出LeetCode 之 Course Schedule I的源码AC实现原创 2015-05-13 09:35:41 · 841 阅读 · 0 评论 -
C/C++ 浮点数转化为 2,8,10,16 进制的数
#include#includevoid f1(int m, int n) { //转整数部分 if(m) { f1(m/n,n); if(n<10) cout<<m%n; else m%n>=10? cout<<char(m%n-10+'A') : cout<<m%n; }}void f2(double m, int n) { //转小数部分 whi原创 2016-03-10 16:43:32 · 4345 阅读 · 0 评论 -
C/C++ 之 char*,const char*和string 三者转换
1. const char*和string的转换(1) const char*转换为 string,直接赋值即可。const char* tmp = "tsinghua".string s = tmp;(2) string转换为const char*,利用c_str()string s = "tsinghua";const char*tmp = s.原创 2015-10-27 23:17:12 · 1220 阅读 · 0 评论 -
C/C++ 之 _splitpath 获取文件路径
在C++环境下,获取文件路径、文件盘符、文件扩展名和文件名方法详细代码如下:#include #include int main() { char* str = "F:\\wfpdm\\Come_Go.txt"; char drive[_MAX_DRIVE]; char dir[_MAX_DIR]; char fname[_原创 2015-10-27 21:55:20 · 3388 阅读 · 0 评论 -
C++ 之 extern 小结
1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。2 问题:extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:extern char *a; 请问,这样可原创 2015-09-07 20:15:36 · 798 阅读 · 0 评论 -
数据结构基础 图的遍历(二) 之 BFS
本文从三个方面着手介绍广度优先遍历,首先,详述图的广度优先遍历等相关概念;然后,给出广度优先遍历图例示例分析;最后,给出遍历算法思想与代码实现。原创 2015-07-11 16:57:12 · 1318 阅读 · 0 评论 -
C++ 深拷贝 与 浅拷贝
本文分三部分阐释深拷贝于浅拷贝,着眼点主要还是在深拷贝。第一部分讲述为什么会有拷贝,即对象之间的复制。第二部分讲述为什么会有深拷贝于浅拷贝,即类成员存在资源分配。第三部分阐释深拷贝于浅拷贝的定义与使用方式,即是否自定义拷贝函数。原创 2015-06-01 22:33:37 · 2104 阅读 · 0 评论 -
C++ static 静态成员变量 和 静态成员函数
static 静态 成员 变量 和 静态 成员 函数。原创 2015-06-08 16:07:09 · 1693 阅读 · 0 评论 -
C++ 怎么取整形数组的长度
本文主要讨论两个小点,怎样获取主函数中整形数组的长度;自定义函数输入参数为整型数组,怎么得到该数组长度。原创 2015-07-08 11:51:45 · 12323 阅读 · 1 评论 -
C++ HOJ 猴子分桃
本文给出两种实现猴子分桃子的算法思想,并附上C++源码实现。原创 2015-07-09 18:58:10 · 3981 阅读 · 1 评论 -
C++ STL模板与容器 知识 初学 小结 ( 一 )
C++的泛型编程编程范型的一种,实现泛型编程的方法是模板。最后,笔者在本文最末给出栈的模版实现。原创 2015-03-18 11:48:16 · 927 阅读 · 0 评论 -
C++ HOJ 二阶魔方
OJ 二阶魔方这道题目,是很基础的一个实现,不需要太多思想和算法,实现较为简单,主要问题在于在于函数比较冗长。注意细节,ji能给出正确结论。可以在自定义函数中通过switch ... case 语句实现 魔方旋转。原创 2015-07-09 19:40:17 · 2977 阅读 · 0 评论 -
C++ 虚函数与纯虚函数 浅析
在虚函数与纯虚函数的学习中,要求理解虚函数与纯虚函数的定义,了解虚函数与纯虚函数在实例化上的差异,掌握两者在实现上的必要性,熟悉纯虚函数在子类与孙类的函数类型。本文即针对上述问题展开阐述。原创 2015-07-25 22:06:08 · 1181 阅读 · 0 评论 -
C++ STL模板与容器 知识 初学 小结 ( 三 )
了解三种基本的容器类,以及它们的基本使用方法。原创 2015-03-27 11:14:40 · 854 阅读 · 0 评论 -
C++ STL模板与容器 知识 初学 小结 ( 二 )
内联函数要求掌握4个知识点,内联函数的目的,及为什么会有内联函数;内联函数的定义与使用;内联函数与宏的比较;内联模板的定义与使用。原创 2015-03-27 10:58:39 · 706 阅读 · 0 评论