
C/C++面试
文章平均质量分 60
zz198808
这个作者很懒,什么都没留下…
展开
-
私有IP
随着IP网络的发展,为了节省可分配的注册IP地址,有一些地址被拿出来用于私有IP地址,以下不属于私有IP地址范围的是(C)(私网IP地址:10.0.0.0- 10.255.255.255;172.16.0.0 - 172.31.255.255;192.168.0.0-192.168.255.255。故选C)A、10.6.207.84原创 2012-04-23 21:58:51 · 608 阅读 · 0 评论 -
Sizeof与Strlen的区别
.strlen的结果要在运行的时候才能计算出来,时用来计算字符串的长度,不是类型占内存的大小,strlen的内部是一个循环计算字符串的长度,知道'\0'为止先看程序:// SizeofAndStrlen.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;int _tmain原创 2012-04-23 21:40:01 · 491 阅读 · 0 评论 -
寻找一个数组中最小的两个数
// FindMixAdndMix2.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;void findMinAndMix2(int a[],int n,int* s1,int* s2){ int min1,min2; if(a[0]<a[1]) { min原创 2012-05-03 21:39:20 · 3076 阅读 · 1 评论 -
快速排序算法
今天终于搞定了快速排序算法,汗。。。a:3 8 7 1 2 5 6 4 //以第一个元素为主元 2 8 7 1 5 6 4 b:2 7 1 8 5 6 4 c:2 1 7 8 5 6 4 d:2 1 7原创 2012-05-05 10:03:38 · 522 阅读 · 0 评论 -
写程序的一些技巧总结
一个数组中有两个数相加等于15,要求找出这两个数①如果这个数组中的数字是无序的,那么就必须要循环遍历两遍②如果这个数组中的数字是有序的,那么就采用下面的两头夹逼的方法 for (int i=0,j=n-1;i { if ((a[i]+a[j])==sum) { *first=a[i]; *second=a[j]; return true;原创 2012-05-05 15:42:20 · 371 阅读 · 0 评论 -
希尔排序
希尔排序其实是对直接插入排序的一种改进代码:// ShellSort.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include //希尔排序其实就是改进的插入排序void SheelSort(int a[],int n){ int d,i,j,x; d=n/2; while(d>=1)//循环增量为1时结束原创 2012-05-05 13:53:40 · 384 阅读 · 0 评论 -
编程之美--寻找满足条件的两个数 .
方法一:直接两层循环(O(N*N))// Find_Sum.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include void find_sum(int a[],int n ,int sum,int *first,int* second){ int num1,num2; for(int i=0;i<n;i++)原创 2012-05-05 15:33:25 · 456 阅读 · 0 评论 -
直接插入排序
// InsertSort.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includevoid InsertSort(int a[],int n){ int i,j; int temp; for (i=1;i<n;i++) { temp=a[i];//取出第一个准备插入的数字 for(j=i-1;j>=原创 2012-05-05 11:21:12 · 379 阅读 · 0 评论 -
for循环执行过程
for(表达式 1;表达式 2;表达式 3) {循环体;}1.执行表达式12.执行表达式23.执行循环体4.执行表达式35.执行表达式26.执行循环体7.执行表达式3……原创 2012-05-05 13:12:30 · 482 阅读 · 0 评论 -
Bit-map详解
作者:小桥流水,redfox66,July。前言 本博客内曾经整理过有关海量数据处理的10道面试题(十道海量数据处理面试题与十个方法大总结),此次除了重复了之前的10道面试题之后,重新多整理了7道。仅作各位参考,不作它用。 同时,程序员编程艺术系列将重新开始创作,第十一章以后的部分题目来源将取自下文中的17道海量数据处理的面试题。因为,我们觉得,下文的每一道面试题都原创 2012-05-06 15:34:33 · 1034 阅读 · 0 评论 -
N!末尾有多少个0
其实就是找1,2,3,4,5...25总共可以分解为多少个5 int FindFive(int n){int result=0;for (int i=1;i{if (i%5==0){result++;}}return result;} 这个是错误的,因为25其实相乘的话那么就贡献了2个5.下面是正确的:// FindZero.cp原创 2012-05-06 18:55:10 · 524 阅读 · 0 评论 -
数据库中删除一个表示drop还是delete呢?
drop删除时连表数据和表结构都会删掉,delete的话只删除表数据。原创 2012-05-05 22:49:32 · 456 阅读 · 0 评论 -
N!末尾有多少个0?
其实就是找1,2,3,4,5...25总共可以分解为多少个5 int FindFive(int n){int result=0;for (int i=1;i{if (i%5==0){result++;}}return result;} 这个是错误的,因为25其实相乘的话那么就贡献了2个5.下面是正确的:// FindZero.原创 2012-05-06 18:54:29 · 454 阅读 · 0 评论 -
关于移位的问题
int a=2; a=a>>1; printf("%d",a);那么输出结果是1,int a=2; a=a>>2printf("%d",a);那么输出结果是0 int a=2; a>>2; printf("%d",a);这样的话由于没有改变a所以输出还是2原创 2012-05-06 21:15:05 · 348 阅读 · 0 评论 -
华为面试题:怎么判断链表中是否有环?????
定义两个指针,一前一后,同时移动,前面的移动比后面的慢,如果是循环的则后面的肯定会追上前面的思路就是弄两个指针,开始指向不同的链表不同的位置,然后1个指针移动间隔是1,一个指针移动间隔是2,如果快的能追上慢的,那说明就有环了。就如何两个人绕圈跑步,速度不一样,如果速度快的能追上慢的,那说明跑道是环型的。 bool CircleInList(Link* pHead原创 2012-05-07 18:11:31 · 614 阅读 · 0 评论 -
strstr的作用
函数原型是char *strstr(char *str1,char *str2);作用是找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)原创 2012-05-07 20:35:38 · 624 阅读 · 0 评论 -
malloc/free与new/delete的区别
相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不原创 2012-05-07 21:18:41 · 612 阅读 · 0 评论 -
寻找水王
1. 可以假设帖子的第一个ID是次数最大的,用candidate记录,次数用nTimes记录。2. 遍历下一个ID,如果跟candidate一样,nTimes++,否则,遇到一个挑战,则nTimes--,如果nTimes == 0,下一步就要重复第一步了。3.遍历结束,nTimes>0的那个candidate就是水王ID,他是获胜者。[cpp] view plainco原创 2012-05-07 21:54:21 · 8073 阅读 · 0 评论 -
【链表】将一个链表反转
typedef struct linknode{ int data; struct linknode *next;}node; //将一个链表逆置node *reverse(node *head){ if ( head == NULL || head->next == NULL ) { return head;原创 2012-05-07 21:56:27 · 468 阅读 · 0 评论 -
数组循环移位(编程之美)
编程之美上面提供了很好的思路,那么我就用代码实现,我这个代码实现可以循环左移和循环右移 // Perverse.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include void Reverse(char a[],int begin,int end){ for (;begin<end;begin++,end--) {原创 2012-05-06 16:41:22 · 1026 阅读 · 0 评论 -
关于基本类型变量占有字节问题 面试有用
int的长度由处理器(16位,32位,64位)和比哪一期决定。首先从处理器来讲 :16位处理器中的int 占有16位 即2个字节 32位处理器中int占有32位 即4个字节 64位处理器中int占有64位 即8个字节附录:数据类型特别是int相关的类型在原创 2012-04-23 20:42:11 · 473 阅读 · 0 评论 -
结构体对齐那点事
这里我引入结构体对齐的概念,也可以说是内存对齐了。为什么要内存对齐呢,就是方便CPU寻址了,具体原因大家要参考计算机体系结构了。先看一个内存对齐的例子: struct example1{ char a; double b; long l;}; struct example2{原创 2012-04-23 21:21:26 · 565 阅读 · 0 评论 -
KMP算法
bool equals(char *p,int i,int j) //判断p[0...j-1]与p[i-j...i-1]是否相等 { int k=0; int s=i-j; for(;k<=j-1&&s<=i-1;k++,s++) { if(p[k]!=p[s]) return false; } return true; }原创 2012-05-08 21:47:04 · 559 阅读 · 0 评论 -
一道俩个字符串是否包含的问题
1.采用遍历的方式bool CompareSting(string LongStr,string ShortStr){ int i=0,j=0; for (i=0;i<ShortStr.length();i++) { for (j=0;j<LongStr.length();j++) { if(ShortStr[i]==LongStr[j]) bre原创 2012-05-08 20:01:33 · 448 阅读 · 0 评论 -
KMP算法
去判断两个字符串是否包含很好原创 2012-05-08 20:28:30 · 537 阅读 · 0 评论 -
事务的操作
1.什么叫做事务的操作?对数据库的一张表进行操作,同时要对另一张表进行操作,如何实现?答:将操作多个表的操作放入到事务中进行处理原创 2012-05-27 15:38:07 · 418 阅读 · 0 评论 -
二叉树的常见问题及其解决程序(一)
1.二叉树三种周游(traversal)方式:3.如何判断一棵二叉树是否是平衡二叉树4.设计一个算法,找出二叉树上任意两个节点的最近共同父结点,复杂度如果是O(n2)则不得分。5.如何不用递归实现二叉树的前序/后序/中序遍历?6.在二叉树中找出和为某一值的所有路径(注意是到叶子节点)7.怎样编写一个程序,把一个有序整数数组放到二叉树中?8.判断整数序列是不是二叉搜索树的后序原创 2012-05-27 15:40:57 · 1408 阅读 · 0 评论 -
现场编写类似strcmp的函数(二)
(一)strcmp函数 strcmp函数是比较两个字符串的大小,返回比较的结果。一般形式是: i=strcmp(字符串,字符串); 其中,字符串1、字符串2均可为字符串常量或变量;i 是用于存放比较结果的整型变量。比较结果是这样规定的: ①字符串1小于字符串2,strcmp函数返回一个负值;②字符串1等于字符串2,s原创 2012-05-27 10:22:05 · 1317 阅读 · 0 评论 -
数对之差的最大值[算法]
题目:在数组中,数字减去它右边的数字得到一个数对之差。求所有数对之差的最大值。例如在数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11,是16减去5的结果。分析:看到这个题目,很多人的第一反应是找到这个数组的最大值和最小值,然后觉得最大值减去最小值就是最终的结果。这种思路忽略了题目中很重要的一点:数对之差是一个数字减去它右边的数字。由于我们无法保证最大值一定位于原创 2012-05-27 18:10:44 · 802 阅读 · 0 评论 -
现场编写类似strstr/strcpy/strpbrk的函数
1.strstrint strstr(char *string, char *substring) { if (string == NULL || substring == NULL) return -1; int lenstr = strlen(string);原创 2012-05-24 19:06:22 · 630 阅读 · 0 评论 -
微软笔试题目(一)
1.微软笔试题:快速求取一个整数的7倍乘法相对比较慢,所以快速的方法就是将这个乘法转换成加减法和移位操作。可以将此整数先左移三位(×8)然后再减去原值:X int _tmain(int argc, _TCHAR* argv[]){ //快速求取一个整数的7倍 int x=3; x=x x=x-3*2; cout system("pause"); retu原创 2012-05-27 13:32:30 · 688 阅读 · 0 评论 -
约瑟夫问题的链表解法
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。// Count3Out.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #inclu原创 2012-05-10 20:20:00 · 793 阅读 · 0 评论 -
3种方法求解斐波那契数列
题目:定义Fibonacci数列如下:分析1:看到斐波那契数列几乎所有的程序员在第一时间的反应都是“递归”,没错了,作为和汉诺塔一样的经典递归问题,我们几乎毫不犹豫就可以写出如下的代码: #include #include using namespace std; long Fibonacci(unsigned int n) { if(n =原创 2012-05-30 20:52:12 · 1023 阅读 · 0 评论 -
从尾到头输出链表
题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;};分析:这是一道很有意思的面试题。该题以及它的变体经常出现在各大公司的面试、笔试题中。看到这道题后,第一反应是从头到尾输出比较简单。于是很自然地想到把链表中链接结点的原创 2012-05-30 21:27:36 · 726 阅读 · 0 评论 -
如何判断一个二叉树是否是平衡的?
平衡二叉树,又称AVL树。它或者是一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的高度之差之差的绝对值不超过1。问题:判断一个二叉排序树是否是平衡二叉树这里是二叉排序树的定义解决方案:根据平衡二叉树的定义,如果任意节点的左右子树的深度相差不超过1,那这棵树就是平衡二叉树。首先编写一个计算二叉树深度的函数,利用递归实现。templatesta原创 2012-05-31 20:18:26 · 4697 阅读 · 0 评论 -
程序员面试题精选100题(11)-求二元查找树的镜像[数据结构]
题目:输入一颗二元查找树,将该树转换为它的镜像,即在转换后的二元查找树中,左子树的结点都大于右子树的结点。用递归和循环两种方法完成树的镜像转换。例如输入: 8 / \ 6 10 /\ /\5 7 9 11输出: 8 / \ 10 6 /\ /\11 9 7原创 2012-05-31 21:44:58 · 1096 阅读 · 0 评论 -
二元查找树的后序遍历结果[数据结构]
题目:输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。例如输入5、7、6、9、11、10、8,由于这一整数序列是如下树的后序遍历结果: 8 / \ 6 10 / \ / \ 5 7 9 11因此返回true。如果输入7、4、6、5,没有哪棵原创 2012-05-31 21:47:47 · 610 阅读 · 0 评论 -
把二元查找树转变成排序的双向链表[数据结构]
题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 比如将二元查找树 10 / \原创 2012-05-31 21:52:01 · 518 阅读 · 0 评论 -
输入一颗二元查找树,将该树转换为它的镜像,
题目:输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点。 用递归和循环两种方法完成树的镜像转换。 例如输入: 8 / \ 6 10 / \ / \ 5 7 9 11 输出: 8 / \ 10 6 / \ / \ 11 9 7 5 具体实现代码如原创 2012-05-31 20:39:50 · 814 阅读 · 0 评论 -
求二叉树的深度
题目:输入一棵二元树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。例如:输入二元树: 10 / \原创 2012-05-31 21:30:33 · 16060 阅读 · 2 评论