C/C++ 语言中的表达式求值
摘要:在此,首先向裘老师致敬!裘宗燕:C/C++语言中的表达式求值经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?”m=1;n=m+++m++;最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5:a = 4; cout << a++ << a;C++不是规定<<操作左结合吗?是C++书上写错了,还是这个系统的实现有问题?注:运行a = 4; cout << a++ << a;如在Visual c++ 6.0中,得到的是4和4;在Visual Studio中,得到的是4
阅读全文
posted @
2013-09-26 10:31
猿人谷
阅读(4448)
推荐(2) 编辑
迅雷2014校园招聘笔试题
摘要:原文地址:http://blog.csdn.net/hackbuteer1/article/details/11482103温馨提示:客观题和主观题得分都要超过一定标准,才能获得面试资格,如果一项得分很高,而另外一项得分很低,可能无法获得面试资格。一、单选题(20题,每题2分)1、有变量int i = 0; int a = i++; int b=++a; int c = a+b; 请问表达式 a?b:c 的值是()A、0 B、1 C、2 D、32、32位环境下,int *p=new int[10];请问sizeof(p)的值为()A、4 B、10...
阅读全文
posted @
2013-09-23 19:46
猿人谷
阅读(816)
推荐(0) 编辑
2013年小米校园招聘笔试题
摘要:原文地址:http://blog.csdn.net/hackbuteer1/article/details/8484974一、填空题(5分每题,一共8题)1、两个人A(速度为a)、B(速度为b)在一直路上相向而行。在A、B距离为s的时候,A放出一个鸽子C(速度为c),C飞到B后,立即掉头飞向A,遇到A在掉头飞向B......就这样在AB之间飞来飞去,直到A、B相遇,这期间鸽子共飞行路程为?答案是:s*c/(a+b)2、(he)的平方=she。h、e、s代表的数字?答案是:分别代表2、5、63、运算(93&-8)的结果为:884、将一个无序整数数组构造成一个最大堆,最差时间复杂度为:5、
阅读全文
posted @
2013-09-23 19:27
猿人谷
阅读(721)
推荐(0) 编辑
阿里巴巴集团2014秋季校园招聘笔试题
摘要:原文地址:http://blog.csdn.net/hackbuteer1/article/details/11931173第一部分 单选题(前10题,每题2分;后10题,每题3分,共50分,选对得满分,选错倒扣1分,不选得0分)1、假设把整数关键码K散列到有N个槽的散列表,以下哪些散列函数是好的散列函数()A、h(K)=K mod N;B、h(K)=1;C、h(K)=K/N;D: h(K)=(K+rand(N)) mod N, rand(N)返回一个0到N-1的整数2. 下面排序算法中,初始数据集的排列顺序对算法的性能无影响的是()A、堆排序 B、插入排序C、冒泡排序 D、快速排序3、...
阅读全文
posted @
2013-09-23 19:05
猿人谷
阅读(1139)
推荐(0) 编辑
2013豆瓣校园招聘研发类笔试题
摘要:2013豆瓣校园招聘研发类笔试题转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/112634431、将一个递归算法改为对应的非递归算法时,通常需要使用()A、优先队列 B、队列 C、循环队列 D、栈2、爸爸、妈妈、妹妹、小强,至少两个人同一生肖的概率是多少?A、41/96 B、55/96 C、72/128 D、90/1283、已知*p=NULL, *q=new char[100],sizeof(p) 和 sizeof(q)的值各为多少?A、4和100 B、4和4 C、不确定4、求以下程序的...
阅读全文
posted @
2013-09-23 19:05
猿人谷
阅读(389)
推荐(0) 编辑
[搜片神器]直接从DHT网络下载BT种子的方法
摘要:转自:http://www.cnblogs.com/miao31/p/3332819.htmlDHT抓取程序开源地址:https://github.com/h31h31/H31DHTDEMO数据处理程序开源地址:https://github.com/h31h31/H31DHTMgrDHT系列文章:1.[搜片神器] 之P2P中DHT网络爬虫原理2.[搜片神器]之DHT网络爬虫的代码实现方法3.[搜片神器]之DHT网络爬虫的C++程序初步开源-------------------------------------------------------------------------------
阅读全文
posted @
2013-09-22 14:40
猿人谷
阅读(10247)
推荐(0) 编辑
C++继承中的内存布局
摘要:今天在网上看到了一篇写得非常好的文章,是有关c++类继承内存布局的。看了之后获益良多,现在转在我自己的博客里面,作为以后复习之用。——谈VC++对象模型(美)简.格雷程化 译译者前言一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细节。对于使用VC++的程序员来说,还应该了解一些VC++对于C++的诠释。 Inside the C++ Object Model虽然是一本好书,然而,书的篇幅多一些,又和具体的VC++关系小一些。因此,从篇幅和内容来看,译者认为本文是深入理解C++对象模型比较好的一个出发点。这篇文章以前看到时就觉得很好,旧文重读,感觉理解得更多一些了,于是产
阅读全文
posted @
2013-09-22 14:32
猿人谷
阅读(2238)
推荐(3) 编辑
虚继承的内存模型分析
摘要:这里就先从以下几个点进行说明吧:虚继承和虚基类vs2010下的cl命令内存模型 虚继承和虚基类 虚继承:在继承定义中包含了virtual关键字的继承关系; 虚基类:在虚继承体系中的通过virtual继承而来的基类,需要注意的是:class CSubClass : public virtual CBase {}; 其中CBase称之为CSubClass的虚基类,而不是说CBase就是个虚基类,因为CBase还可以不不是虚继承体系中的基类。 vs2010下的cl命令 微软的VS2010提供了一个新的选项,给用户显示C++对象在内存中的布局。这个选项就是:[cpp] view plainco...
阅读全文
posted @
2013-09-22 10:37
猿人谷
阅读(1095)
推荐(0) 编辑
替换空格
摘要:题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。 看到这个题目,我们首先应该想到的是原来一个空格字符,替换之后变成'%'、'2'和'0'这3个字符,因此字符串会变长。如果是在原来的字符串上做替换,那么就有可能覆盖修改在该字符串后面的内存。如果是创建新的字符串并在新的字符串上做替换,那么我们可以自己分配足够多的内存。 在这里介绍一种时间复杂度为O(n)的解法。 我们可以先遍历一次字符串,这样就能统计出字符串中空格的总数,并可以由此计算出替换之后的字符串
阅读全文
posted @
2013-09-12 14:58
猿人谷
阅读(2705)
推荐(2) 编辑
set
摘要:转自:http://www.cnblogs.com/graphics/archive/2010/06/01/1749569.html简介set是一种随机存储的关联式容器,其关键词(key)和元素(value)是同一个值。set之中所有元素互不相同。set是通过二叉查找树来实现的。创建创建一个空的set 1: set s0 ;创建一个带大于比较器的set, 默认是小于比较器less 1: set> s1 ;用数组初始化一个set 1: int a[3] = {1, 2, 3} ; 2: set s2(a, a + 3) ;用拷贝构造函数初始化set 1: set s1 ; 2: se...
阅读全文
posted @
2013-09-11 11:36
猿人谷
阅读(713)
推荐(0) 编辑
容器set和multiset
摘要:一、set和multiset基础set和multiset会根据特定的排序准则,自动将元素进行排序。不同的是后者允许元素重复而前者不允许。需要包含头文件:#include set和multiset都是定义在std空间里的类模板:[cpp] view plaincopyprint?template,class_Alloc=allocator>classsettemplate, class _Alloc = allocator >class set[cpp] view plaincopyprint?template,class_Alloc=allocator>classmultis
阅读全文
posted @
2013-09-11 11:01
猿人谷
阅读(704)
推荐(0) 编辑
二分查找法的实现和应用汇总
摘要:来源:http://www.cnblogs.com/ider/archive/2012/04/01/binary_search.html在学习算法的过程中,我们除了要了解某个算法的基本原理、实现方式,更重要的一个环节是利用big-O理论来分析算法的复杂度。在时间复杂度和空间复杂度之间,我们又会更注重时间复杂度。时间复杂度按优劣排差不多集中在:O(1), O(log n), O(n), O(n log n), O(n2), O(nk), O(2n)到目前位置,似乎我学到的算法中,时间复杂度是O(log n),好像就数二分查找法,其他的诸如排序算法都是 O(n log n)或者O(n2)。但是也正
阅读全文
posted @
2013-09-10 22:03
猿人谷
阅读(1186)
推荐(0) 编辑
八皇后问题
摘要:主要包括全排列和回溯两类,其中全排列可以递归与非递归,回溯也可以递归与非递归。于是加一起有4种解法。#include #include using namespace std;template struct ArraySizeHelper {char _[N];};template ArraySizeHelper makeArraySizeHelper(T(&)[N]);#define ARRAY_SIZE(a) sizeof(makeArraySizeHelper(a))bool valid_permutation(const int *queen, int len){ bool .
阅读全文
posted @
2013-09-10 15:48
猿人谷
阅读(400)
推荐(0) 编辑
位运算
摘要:以后慢慢启用个人博客:http://www.yuanrengu.com 位运算 位运算是把数字用二进制表示之后,对每一位上0或者1的运算。 理解位运算的第一步是理解二进制。二进制是指数字的每一位都是0或者1.比如十进制的2转化为二进制之后就是10。在程序员的圈子里有一个流传了很久的笑话,说世界上有1
阅读全文
posted @
2013-09-09 22:36
猿人谷
阅读(4961)
推荐(4) 编辑
数据结构常见笔试题
摘要:反转一个无符号整数的比特位.Reverse the bits of an unsigned integer.For example, x is 0x00001234, then reverse(x) is 0x2C480000.static uint Reverse(uint x){ uint y = 0; for (int i = 0; i >= 1; } return y;}删除数组中的重复元素void remove_duplicate(int *a, int len){ int i = 0; int j = 0; for (j = 0; j 0 && key >
阅读全文
posted @
2013-09-09 16:27
猿人谷
阅读(1563)
推荐(0) 编辑
在O(1)时间删除链表结点
摘要:题目:给定链表的头指针和一个结点指针,在O(1)时间删除该结点。函数的声明如下:void DeleteNode(ListNode** pListHead, ListNode* pToBeDeleted);分析:这是一道广为流传的Google面试题,能有效考察我们的编程基本功,还能考察我们的反应速度,更重要的是,还能考察我们对时间复杂度的理解。注意函数的第一个参数pListHead是一个指向指针的指针。例如,当我们往一个空链表中插入一个结点时,新插入的结点就是链表的头指针。由于此时会改动头指针,因此必须把pHead参数设为指向指针的指针,否则出了这个函数pHead仍然是一个空指针。在链表中删除一
阅读全文
posted @
2013-09-09 11:48
猿人谷
阅读(785)
推荐(0) 编辑
总结---1
摘要:1.const与 #define有什么不同?答:C++中可以使用const定义常量,也可以用#define定义常量,但是前者比后者有更多的优点①const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只是进行字符替换,没有做类型安全检查,并且在字符替换中可能会产生意料不到的错误(边际效应)②有些集成化的调试工具可以对const常量进行调试,但是不能对宏进行调试即在C++中 const可以完全替换宏常量扩展:typedef和#define的区别:http://www.cnblogs.com/heyonggang/p/3199216.html2.头文件中的ifnd
阅读全文
posted @
2013-09-08 15:17
猿人谷
阅读(569)
推荐(0) 编辑
将一个数组中的奇元素全部移到数组的前半部分,即将奇偶元素分开
摘要:将一个数组中的奇元素全部移到数组的前半部分,即将奇偶元素分开?需要调整元素的顺序。先判断数组中的一个元素的奇偶性,如为奇数就往后移。如何判断一个元素的奇偶性?[cpp] view plaincopy//判断元素的奇偶性boolisEven(intdata){return((data&1)==0?true:false);}测试如下:[cpp] view plaincopy#include//判断元素的奇偶性boolisEven(intdata){return((data&1)==0?true:false);}intmain(){inti=3;if(isEven(i)){print
阅读全文
posted @
2013-09-08 15:02
猿人谷
阅读(1758)
推荐(0) 编辑
变量声明和定义的区别
摘要:我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:(望我的指点对你受益)变量的声明有两种情况:1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。2、另一种是不需要建立存储空间的。 例如:extern int a 其中变量a是在别的文件中定义的。前者是“定义性声明(defining declaration)”或者称为“定义(definition)”,而后者是“引用性声明(referncing declaration)”,从广义的角度来讲声明中包含着定
阅读全文
posted @
2013-09-06 17:14
猿人谷
阅读(477)
推荐(1) 编辑
C++笔试题
摘要:来源:http://www.nowamagic.net/librarys/veda/detail/5191. 以下三条输出语句分别输出什么?1charstr1[] ="abc";2charstr2[] ="abc";3constcharstr3[] ="abc";4constcharstr4[] ="abc";5constchar* str5 ="abc";6constchar* str6 ="abc";7cout > temp;5unsignedintconstsiz
阅读全文
posted @
2013-09-06 16:57
猿人谷
阅读(615)
推荐(0) 编辑
单链表反转的分析及实现
摘要:我先画一个单链表,这个单链表有4个元素。我的思路就是,每次把第二个元素提到最前面来。比如下面是第一次交换,我们先让头结点的next域指向结点a2,再让结点a1的next域指向结点a3,最后将结点a2的next域指向结点a1,就完成了第一次交换。第一次交换然后进行相同的交换将结点a3移动到结点a2的前面,然后再将结点a4移动到结点a3的前面就完成了反转。第二次交换第三次交换思路有了,那就可以写代码了。这里我们需要额外的两个工作指针来辅助交换。这个下面的步骤慢慢理解下,结合图片。注意结点之间的关系要先断再连。步骤:定义当前结点 current,初始值为首元结点,current = L->ne
阅读全文
posted @
2013-09-06 09:47
猿人谷
阅读(1578)
推荐(0) 编辑
map对象建立家族姓氏查询
摘要:题目:定义一个map对象,其元素的键是家族姓氏,而值是存储该家族孩子名字的vector对象。为这个map容器输入至少六个条目。通过基于家族姓氏的查询检测你的程序,查询应输出该家族所有孩子的名字。 1 //定义一个map对象,其元素的键是家族姓氏 2 //而值则是存储该家族孩子名字的vector对象 3 //进行基于家族姓氏的查询,输出该家族所有孩子的名字 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 10 int main()11 {12 map > children;13 string...
阅读全文
posted @
2013-09-04 14:36
猿人谷
阅读(631)
推荐(0) 编辑
单链表
摘要:线性表的链式表示和实现 线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以使不连续的)。因此,为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。这两部分信息组成数据元素ai的存储映像,称为结点。 结点包括两个域:其中存储数据元素信息的域称为数据域;存储直接后继存储位置的域称为指针域。指针域中存储的信息称做指针或链。n个结点(ai(1next是指向第i+1个数据元素(结点ai+1)的指针。换句话说,若p->data=ai
阅读全文
posted @
2013-09-03 08:39
猿人谷
阅读(1755)
推荐(2) 编辑
顺序线性表
摘要:线性表的顺序表示和实现线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素。线性表的第一个数据元素a1的存储位置,通常称作线性表的起始位置或基地址。只要确定了存储线性表的起始位置,线性表中任一数据元素都可随机存取,所以线性表的顺序存储结构是一种随机存取的存储结构。数组类型有随机存取的特性,因此通常都用数组来描述数据接哦故中的顺序存储结构。由于线性表的长度可变,且所需最大存储空间随问题不同而不同,在C语言中可用动态分配的一维数组,如下描述。/* 线性表的动态分配顺序存储结构 */#define LIST_INIT_SIZE 100 /* 线性存储空间的初始分配量 */#de..
阅读全文
posted @
2013-09-02 16:15
猿人谷
阅读(3005)
推荐(0) 编辑
C++类的静态成员详细讲解
摘要:在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即::。在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子来总结静态成员变量和成员函数使用规则,再给出一个实例来加深印象。希望阅读本文可以使读者对类的静态成员变量和成员函数有更为深刻的认识。第一个例子,通过类名调用静态成员函数和非静态成员函数[cpp] view plaincopyclass
阅读全文
posted @
2013-09-02 14:02
猿人谷
阅读(12351)
推荐(2) 编辑