- 博客(60)
- 收藏
- 关注
原创 const引用形参
//形参为const引用,则可以接受右值、可转换成目标对象的类型对象,const对象进行调用//可以是用字符串字面值来调用函数f#include using namespace std;int f(const string &s){ return s.size();}int main(){ int i; cout ci
2012-12-09 21:02:37 390
原创 求两个数中的较大数
#include using namespace std;int max(int i,int j){ return i>j?i:j;}int main(){ int i,j; cin>>i>>j; cout cin>>j; return 0;}
2012-12-09 20:39:30 674
原创 统计连续出现次数最多的单词
#include#include#include #include #include using namespace std;//本程序优点:可以存储并列元素int main(){ vectorpairint,string> > max; //存储符合要求的单词 string currentStr,str; /
2012-12-09 19:54:58 624
原创 统计连续出现最多的单词(如何使用循环语句)
#include#include#include #include #include using namespace std;//本程序优点:可以存储并列元素int main(){ vectorpairint,string> > max; //存储符合要求的单词 string currentStr,str; /
2012-12-06 12:56:49 528
原创 友元
1、友元支持一个非成员函数访问一个类的私有成员。2、定义为非成员函数的类操作符重载需要用到友元机制3、友元虽然不是类的成员,但任然是类接口的组成部分4、友元可以授予函数、其他类的某些成员函数、其他类(整个类的成员函数)。友元对授予其友元关系的类的非公有成员的使用是通过该类型的对象进行点操作实现的5、友元声明和友元定义之间存在互相依赖关系:友元声明将已命名的类或者非成员函数引入到外围
2012-11-22 11:25:20 236
原创 Windows基本数据类型
typedef unsigned long DWORD;typedef int BOOL;typedef unsigned char BYTE;typedef float FLOAT;typedef unsigned int UINT;typedef struct tagMSG{ HWND hwnd;//h 是类型描述,表示句柄, Wnd 是变量对象描述,表示窗口
2012-11-17 22:48:22 292
原创 API与MFC
Windows 下程序设计必须借助API或者MFCAPI是用来控制Windows各个元素(窗口,工具栏、菜单)的外观和行为的一套预先定义的Windows函数MFC构架在WIN32 API函数基础之上,封装了Win32API、OLE API和ODBC API,把常用的API函数组合在一起构成为一个空间或者类库。MFC支持对底层API的直接调用
2012-11-16 23:04:07 336
转载 Platform SDK和Windows SDK
1、什么是什么是什么是什么是Windows SDK????Windows SDK是用来支持32位和64位Windows平台以及.NET框架编程模型的开发包。Windows SDK这个名字从Windows Vista开始使用,它包含以前Platform SDK中的所有内容,同时包含.NET框架的内容2、什么是什么是什么是什么是Platform SDK????Platform SDK(也简
2012-11-16 11:27:48 360
原创 WTL
WTL 是 Windows Template Library 的缩写,由微软的 ATL(Active Template Library) 小组开发,主要是基于 ATL 对 Win32 API 的封装。从 2.0 后,功能逐步完善,成为了一个完整的支持窗口的框架(windows framework)。 WTL 功能不如 MFC 完善,但是比 MFC 更小巧,不依赖 MFC 的 DLL
2012-11-16 11:01:33 202
原创 枚举类型
1、有时候需要这样的变量,该变量只取有限个离散值。2、这个时候可以定义枚举类型enum 类型名{取值列表};3、定义枚举类型变量:enum 类型名 变量名=一个取值;#includeint main(void){ enum weekday{sun,mon,tue,wed,thu,fri,sat}; enum weekday day=sun; p
2012-11-12 22:36:16 301
转载 C/C++细节(指针相关)
1、a和&a的区别://a是数组名,代表数组的首地址, a+1是一个元素地址//&a是数组的指针,&a+1此时该指针已经越界了#includeint main(void){ int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d, %d",*(a+5),*(ptr)); re
2012-11-10 19:35:33 411
转载 宏定义
1、#error的作用:测试宏是否存在编译程序时,只要遇到 #error 就会跳出一个编译错误,既然是编译错误,要它干嘛呢?其目的就是保证程序是按照你所设想的那样进行编译的。下面举个例子:程序中往往有很多的预处理指令#ifdef XXX...#else#endif当程序比较大时,往往有些宏定义是在外部指定的(如makefile),或是在系统头文件中指定的,当你不
2012-11-07 21:05:32 298
原创 顺序容器
1、容器类型的操作集合形成以下层次的结构:(1)一些操作适用于所有容器类型(涉及迭代器)(2)另外一些操作只适用于顺序容器(定义大小为n的容器)或者关联容器(3)有一些操作只适用于顺序或关联容器类型的一个子集2、使用一个容器复制给另一个容器时,必须符合类型高度匹配——容器类型相同,元素类型相同3、容器里面的元素必须支持复制和赋值操作(1)大多数内置复合类型可以作为容器的元素
2012-10-23 16:09:13 284
原创 C++入门
1、操作系统通过调用main函数来执行程序,main函数则执行组成自身的语句并返回一个值给操作系统2、main函数的返回值必须是int型3、每一种操作系统都有自己一套对于返回值类型的定义,main函数通常返回非零值表示出错,返回0表示成功运行完毕4、注释对不可以嵌套5、读入未知数目的输入while(std::cin>>value)在读入文件结束符或者错误读入之前,循环不会结束6
2012-10-23 11:34:06 225
原创 整型数据
1、数据在内存中以二进制形式存放,不同编译系统为变量分配的字节数不同2、数值以二进制补码的形式进行存放3、C语言整型变量空间分配原则:(通常int为一个机器字长)sizeof(long)>=sizeof(int)>=sizeof(short)4、特殊的整型常量:(1)-12345u(或者-12345U):将-12345转换为对应的补码形式,,然后按照无符号数形式存储(2)1
2012-10-18 10:07:09 336
原创 基本类型
1、常量在其作用域内不能被改变,也不能被赋值(它和变量存储在不同的存储段中)2、常量:整型常量、实型常量、字符型常量、符号常量(#define PRICE 100)3、变量名是一个地址4、C语言变量名由:字母或者下划线开头,其余位置可以用字母、下划线、数字
2012-10-18 09:47:41 246
原创 函数与指针
1、函数名即是函数的入口地址2、对指向函数的指针做算术运算是没有意义的3、设计指向函数的指针可以更好地实现结构化程序设计方法。编写对一类数据进行不同处理的函数,增加函数的灵活性,可以编写一个通用的函数来实现各种专用功能void process(int,int,int(*fun)(int,int)); 1、一个C程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。
2012-10-08 15:51:36 274
原创 数组与函数参数传递
1、形参数组并不占据实际内存空间,它仅仅是一个指针2、C语言自动将形参数组名作为指针变量处理3、可以认为有一个形参数组,它从实参数组哪里得到起始地址,因此与实参数组共用一段内存空间4、实参数组名是一个指针常量,而形参数组名是一个指针变量5、指向数组的指针int (*p)[4];为指向一维数组的指针变量,“【4】”表示所指向一维数组的列数。
2012-10-08 15:06:06 288
原创 冒泡排序
冒泡法的思路是通过对序列的n-1趟(n为序列长度)扫描,没趟从无序序列中“冒出”最值,使得无序序列的个数减少1,同时使得有序序列的个数增加1.for(j=1;jn;++j)//扫描n-1趟 for(i=0;in-j;++i)//每次扫描的范围 if(a[i]>a[i+1]){//交换位置 temp=a[i];
2012-10-04 23:28:42 285
原创 排序算法概述
内部排序:整个排序过程不需要访问外存便能完成内部排序原理:逐步扩大记录的有序序列的过程基于以上原理的几大类排序算法:(1)插入排序:将无序序列中的一个或者几个记录插入到有序序列中,从而增加有序子序列的长度(2)交换排序:通过交换无序序列中的记录,从而得到其中关键字最小或者最大的记录,并将它们加入到有序序列中(3)选择排序:从无序子序列中选择最大或者最小的记录,并将它们加入到有序
2012-09-25 15:16:30 261
原创 编译预处理
1、预处理命令不是语言本身的组成部分2、宏展开不做正确性检查3、宏定义不是语句,不以“;”结束4、可以嵌套宏定义5、宏定义不会占据内存空间6、宏定义不作用于程序中双引号内的字符串7、使用undef可以提前终止宏定义的作用域 1、文件包含可包含以下内容:符号常量定义、函数原型声明、结构体变量定义、全局变量定义、类型定义(typedef)2、文件包含可以嵌套3、
2012-09-24 16:33:00 414
原创 C语言变量作用域和生命周期
1、C语言不支持对形参变量的引用,也就是说,形参变量的作用域仅在于函数定义域内2、有的C语言编译器支持对变量不在函数开始的时候定义3、全局变量可以作为函数间通信的一个工具4、全局变量可以通过减少函数形参数,较少内存空间,较少传递数据的时间消耗5、动态变量的生命周期和其所在的汗水一样6、静态变量的生命周期为整个程序的运行过程7、静态变量在编译时赋初值,动态变量在函数调用时使用
2012-09-22 12:53:32 1488
原创 C语言运算符和结合性
先判别运算符的优先级,高优先级的运算符先进行运算;假如相邻的运算符优先级相同,则采用结合性进行判别1、结合性:只有单目,二目中的赋值,三目运算符的结合性是自右向左其他的都是自左向右2、优先级:第一优先级:圆方括号点箭头其他:单算移关系按位逻条赋
2012-09-20 21:24:38 578
原创 数据结构复习(输出二叉排序树部分元素)
编写递归算法,从大到小输出给定二叉排序树中所有关键字不小于x的数据元素。要求你的算法的时间复杂度为O(log2n+m),其中n为排序树中所含结点数,m为输出的关键字个数。实现下列函数:void OrderOut(BiTree t, KeyType x, void(*visit)(TElemType));/* Output is to use visit(t->data);
2012-05-10 19:44:57 1921
原创 数据结构复习(层次遍历)
编写按层次顺序(同一层自左至右)遍历二叉树的算法。要求实现下列函数:void LevelOrder(BiTree bt, char *ss);/* travel BiTree bt by level, Return result by ss. */二叉链表类型定义:typedef char TElemType; // 设二叉树的元素为char类型typedef stru
2012-05-06 21:33:48 1126
原创 数据结构复习(先序创建链表二叉树)
已知一棵二叉树的前序序列和中序序列分别存于两个一维数组中,试编写算法建立该二叉树的二叉链表。要求实现以下函数:void BuildBiTree(BiTree &bt, int ps, char *pre, int is, char *ino, int n);/* 当前要建立的子树bt的元素总数为n,*//* 元素
2012-05-06 21:30:00 2575
原创 数据结构复习(完全二叉树判定)
编写算法判别给定二叉树是否为完全二叉树。要求实现下列函数:Status CompleteBiTree(BiTree bt);/* judge if the binary tree whose root is bt *//* is a complete tree. */二叉链表类型定义:typedef struct BiTNode
2012-05-06 21:26:47 641
原创 数据结构复习(层次遍历法复制二叉树)
编写复制一棵二叉树的非递归算法。要求实现下列函数:void CopyBiTree(BiTree T, BiTree &TT);/* 基于层次遍历的非递归复制二叉链表 */二叉链表类型定义:typedef char TElemType; // 设二叉树的元素为char类型typedef struct BiTNode { TElemType data;
2012-05-05 13:09:13 893
原创 数据结构复习(求特定子树的高度)
④ 编写递归算法:求二叉树中以元素值为x的结点为根的子树的深度。要求实现下列函数:int Depthx(BiTree T, TElemType x);/* 求二叉树中以值为x的结点为根的子树深度 */二叉链表类型定义:typedef struct BiTNode { TElemType data; BiTNode *lchild, *rchild;
2012-05-04 15:00:18 880
原创 数据结构复习(交换左右子树)
编写递归算法,将二叉树中所有结点的左、右子树相互交换。要求实现下列函数:void Exchange(BiTree &bt);/* Exchange the left and right leaves of *//* bitree whose root node is bt */二叉链表类型定义:typedef struct BiTNode {
2012-05-03 14:54:35 1425
原创 数据结构复习笔记(递归先序遍历)
6.41③ 编写递归算法,在二叉树中求位于先序序列中第k个位置的结点的值。要求实现下列函数:TElemType PreOrder(BiTree bt, int k);/* bt is the root node of a binary linked list, *//* Preorder travel it and find the node whose *//* po
2012-05-01 12:18:26 1331
原创 C复习笔记(多维数组与指针)
二维数组名代表首行首地址,它是一个指针常量a【0】为一位数组名,它同样也是一个指针常量,对其进行sizeof操作得到一维数组所占空间的大小对指针变量进行sizeof操作得到的值是一样的,无论指针变量是行指针还是列指针然而对指针常量进行sizeof操作得到的值却是不一样的,它是其所代表的数组的整体存储空间大小在二位数组中,并不存在a【i】这样一个实际变量,它只是一种地址的计算方法
2012-05-01 09:48:37 226
原创 非递归后序遍历二叉树
void PostOrder(BiTree bt, void (*visit)(TElemType))/* 使用栈,非递归后序遍历二叉树bt, *//* 对每个结点的元素域data调用函数visit */{ Stack s; InitStack(s); SElemType selem; BiTree pb=bt; wh
2012-04-30 17:25:11 355
原创 选择排序
// 选择排序是从无序序列中找到最值的位置,然后将最值与下一个要确定的有序序列位置上的元素交换//根据排序位置找到确定的值。循环变下限//k相当一个指针,确定无序序列中极值的位置 for(i=0;in-1;++i){//i为当前要确定的有序序列位置 k=i;//记录默认最值 for(j=i+1;jn;++j){ if(
2012-04-30 15:27:01 318
原创 数据结构(非递归先序遍历)
试直接利用栈的基本操作写出先序遍历的非递归形式的算法(提示:不必按3.3.2节介绍的从递归到非递归的方法而直接写出非递归算法)。要求实现下列函数:void PreOrder(BiTree bt, void (*visit)(TElemType)); /* 使用栈,非递归先序遍历二叉树bt, *//* 对每个结点的元素域data调用函数visit */二叉链表类型定
2012-04-27 16:49:11 2058
原创 二叉树相似性
若已知两棵二叉树B1和B2皆为空,或者皆不空且B1的左、右子树和B2的左、右子树分别相似,则称二叉树B1和B2相似。试编写算法,判别给定两棵二叉树是否相似。要求实现下列函数:Status Similar(BiTree t1, BiTree t2);/* 判断两棵二叉树是否相似的递归算法 */二叉链表类型定义:typedef struct BiTNode {
2012-04-26 15:43:20 1168
原创 二叉树2
假定用两个一维数组L[1..n]和R[1..n]作为有n个结点的二叉树的存储结构, L[i]和R[i]分别指示结点i的左孩子和右孩子,0表示空。试写一个算法,先由L和R建立一维数组T[1..n],使T中第i(i=1,2,...,n)个分量指示结点i的双亲,然后判别结点u是否为结点v的子孙。要求实现以下函数:Status Dencend(Array1D L, Array1
2012-04-25 12:24:17 558
原创 指针
1、C语言适合编写系统软件的关键原因在于它支持指针的概念(而指针能够支持对内存的直接操作)2、编译阶段确定变量名和地址的对应关系(变量名包含地址信息和类型信息)3、直接访问:按变量名地址存取变量值的方式;间接访问:使用指针4、指针是地址,而指针变量时存放地址的地方5、TC下指针变量的长度为两个字节6、指针变量只能存放地址,不要将一个整数赋给一个指针变量7、(*pa)++等价
2012-04-25 11:58:22 246
原创 二叉树的顺序存储
假定用两个一维数组L[1..n]和R[1..n]作为有n个结点的二叉树的存储结构, L[i]和R[i]分别指示结点i的左孩子和右孩子,0表示空。试写一个算法判别结点u是否为结点v的子孙。要求实现以下函数:Status Dencendant(Array1D L,Array1D R,int n,int u,int v){ if(L[v]==0&&R[v]==0)
2012-04-24 15:01:00 556
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人