
CC++笔试题
文章平均质量分 74
xdtongyuan
这个作者很懒,什么都没留下…
展开
-
typedef与typedef struct用法详解
typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性。本文下面将竭尽全力来揭示 typedef 强大功能以及如何避免一些常见的陷阱。1. 定义易于记忆的类型名typedef 使用最多的地方是创建易于记原创 2013-10-18 17:16:49 · 1371 阅读 · 0 评论 -
有点意思的C/C++问题及解答:1-5
问题1 :写一个交换两个数的宏方法1:可以用异或运算来做,如果是浮点数,这个方法就不行了[cpp] view plaincopyprint?#define _swap(a,b) { a=a^b; b=a^b;a=a^b; } 方法2:用加减法来做,可能会溢出[cpp] view plaincopyprint?#defin转载 2013-08-15 21:41:40 · 624 阅读 · 0 评论 -
编程之美 求数组中的最长递增子序列
如题,例如:存在数组 1,-1,2,-3,4,-5,6,-7 ,则最长的递增子序列是:1,2,4,6.法一: 蛮力法 [html] view plaincopyprint?int Lis(int* arr,int n) { int iCount=0;//记录子序列的个数 int tmp_count=0;转载 2013-08-15 21:29:08 · 550 阅读 · 0 评论 -
编程之美 数组循环移位
设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附件变量。比如abcd1234右移4位后为:1234abcd。法一: 挨个遍历,每个移动K位,复杂度[cpp] view plaincopyprint?RightShift(int* arr,int N, int K) {转载 2013-08-15 21:24:59 · 598 阅读 · 0 评论 -
编程之美 寻找数组中的最大值和最小值
寻找一个数组里的最大值和最小值法一: 分别遍历一遍,次数O(2*N);法二: 根据书上的讲述, 法三: 主要在法二的基础上改进,法二改变了原数组,法三主要是不改变原数组,定义两个变量MAX和MIN,分别保存最大值和最小值。法四: 分治法,这是重点。[cpp] view plaincopypr转载 2013-08-15 21:21:05 · 685 阅读 · 0 评论 -
编程之美 裴波那楔数列
给出如下递推式: 以上就是经典的Fibonacci数列,下面给出递推的解法: [cpp] view plaincopyprint?int Fibonacci(int n) { if(n return 0; else if(n==1) return 1; else转载 2013-08-15 21:12:34 · 678 阅读 · 0 评论 -
编程之美 寻找最大的K个数
有很多个无序数,我们姑且假定他们各不相等,怎么挑选出其中最大的若干个数呢? 如果这个数据量很大,比如1亿个,如果所存数据是浮点型呢?我们该怎么处理呢?分两部分,第一部分是我个人的解答,第二部分是书上的解答;第一部分: 1,如果这个问题里的数据都是整数,这个问题利用hash映射应该很简单,就是在开辟一个数组,把原数组里的数据map到新开辟的数组里,如:原数转载 2013-08-15 21:11:03 · 768 阅读 · 0 评论 -
编程之美 1的数目
给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有”1“的个数。 解法一:穷举法,遍历1到N的每一个数,计算其出现1的整数的个数;虽然笨,但是想不出其他方法就这样了; 解法二:分类讨论,分别讨论个位,十位和百位...上1能出现的次数。 假设这个数为abcd,则: d 为1时,出现1的数据的个数有abc个;转载 2013-08-15 21:07:06 · 610 阅读 · 0 评论 -
编程之美 寻找发帖“水王”
描述 直接拍照,懒得打字此题很容易转换为,在一个数组中,有一个数出现的次数超过了数组元素个数的一半,请找出这个元素。 方法一: 对数组排序进行排序,利用通常的排序方法,复杂度O(nlgn),再遍历一遍数组,找出那个元素,复杂度为O(n),空间复杂度O(1); 方法二: 空间换时间吧,在开辟一个数组,h转载 2013-08-15 21:01:23 · 630 阅读 · 0 评论 -
腾讯2009校园招聘(软件开发职位方向笔试题与答案)
软件开发职位方向笔试试题(A1卷) 考试时长:120分钟一、单项选择题。(每个选项3分,20个选项,共60分)1. 在一个单链表中,若p所指的结点不是最后结点,在p所指结点之后插进s所指结点,则应执行操纵( B )。A. s->next=p;p->next=sB. s->next=p->next;p->next=sC. s->ne转载 2013-08-15 19:46:10 · 789 阅读 · 0 评论 -
编程之美-不要被阶乘吓到
求N!的二进制表示中最低位1的位置。 最笨的莫过于对N!直接移位了,然后找到1的位置。[cpp] view plaincopyprint?#include using namespace std; const int N=6; int Factorial(int N) { if(N>1) { return N*F转载 2013-08-15 20:58:50 · 526 阅读 · 0 评论 -
有点意思的C/C++问题及解答:6-10
问题 6:非C++内建型别A 和B,在哪几种情况下B 能隐式转化为A? (1)class A { ...... }; class B : public A { ……} ; // B 公有继承自A,可以是间接继承的(2)class A { ...... }; class B { operator A() { return A::A(); } ......}; // B 实现了到A 的转载 2013-08-15 21:53:24 · 656 阅读 · 0 评论 -
有点意思的C/C++问题及解答:11-15
问题11:下面这个函数希望完成什么任务?[cpp] view plaincopyprint?int func(int x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx;转载 2013-08-15 21:56:55 · 851 阅读 · 0 评论 -
指针与数组的区别和联系
一.指针与数组的联系:指针与数组是C语言中很重要的两个概念,它们之间有着密切的关系,利用这种关系,可以增强处理数组的灵活性,加快运行速度,本文着重讨论指针与数组之间的联系及在编程中的应用。1.指针与数组的关系 当一个指针变量被初始化成数组名时,就说该指针变量指向了数组。如: char str[20], *ptr; ptr=str; ptr被置为数组str的第一个元素转载 2013-10-18 17:56:20 · 1082 阅读 · 0 评论 -
常见的预处理命令及功能
1.常见的预处理功能: 预处理器的主要作用就是把通过预处理的内建功能对一个资源进行等价替换,最常见的预处理有:文件包含,条件编译、布局控制和宏替换4种。 文件包含:#include 是一种最为常见的预处理,主要是做为文件的引用组合源程序正文。 条件编译:#if,#ifndef,#ifdef,#endif,#undef等也是比较常见的预处理,主要是进行编译时进行有选择的转载 2013-10-18 17:50:26 · 3040 阅读 · 0 评论 -
判断大小端
int i=1; char *p=(char *)&i; if(*p==1) printf("1"); else printf("2"); 大小端存储问题,如果小端方式中(i占至少两个字节的长度)则i所分配的内存最小地址那个字节中就存着1,其他字节是0.大端的话则1在i转载 2013-09-23 17:36:23 · 628 阅读 · 0 评论 -
经典面试笔试题
1 所有资料来自网络(主要是优快云),本人只是收集和转发。 2 所有问题解答(尤其是代码)只是参考,不保证正确。先发基本问题,再发编程问题..........想成为嵌入式程序员应知道的0x10个基本问题:预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #defi转载 2013-08-13 15:34:49 · 1023 阅读 · 0 评论 -
算法的时间复杂度和空间复杂度
一、常用的算法的时间复杂度和空间复杂度二、算法的时间复杂度和空间复杂度合称为算法的复杂度。1.时间复杂度(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句转载 2013-08-18 22:23:42 · 673 阅读 · 0 评论 -
C++经典面试题
1、int a=5,则 ++(a++)的值是()A、5 B、 6 C、7 D、逻辑错误a++返回的是一个临时变量,这里是右值,不能再前面++了2、下面的代码输出什么?(取地址运算符比+运算符的优先级要高)[cpp] view plaincopyint main(void) { int a[5] =转载 2013-08-17 21:55:07 · 583 阅读 · 0 评论 -
二分查找算法分析
二分查找算法的思想很简单,《编程珠玑》中的描述: 在一个包含t的数组内,二分查找通过对范围的跟综来解决问题。开始时,范围就是整个数组。通过将范围中间的元素与t比较并丢弃一半范围,范围就被缩小。这个过程一直持续,直到在t被发现,或者那个能够包含t的范围已成为空。 Donald Knuth在他的《Sorting and Searching》一书中指出,尽管第一个二分查找算法早在194转载 2013-08-15 22:30:02 · 618 阅读 · 0 评论 -
二分查找容易忽略的一个bug
对于二分查找算法,相信大家肯定不会陌生。算法从一个排好序的数组中找指定的元素,如果找到了返回该元素在数组中的索引,否则返回-1。下面给出了解法。[cpp] view plaincopyprint?//a为排好序的数组,n为数组的大小,x为指定元素 int binarySearch(int a[], int n, int x) { int left =转载 2013-08-15 22:23:15 · 773 阅读 · 1 评论 -
有点意思的C/C++问题及解答:21-25
问题21:判断C编译器是否支持嵌套注释。 解法:嵌套注释是指在/* */ 中出现/* ... */,定义这个式子: /*/*/0*/**/1 。如果编译器不支持嵌套注释,那么这个式子为0*1。如果支持嵌套注释,那么这个式子为1。摘自《C陷阱与缺陷》。 问题22:判断机器的大小端。 解法:用联合,先将其中的word赋值为0x12345678,然后打印转载 2013-08-15 22:14:40 · 576 阅读 · 0 评论 -
有点意思的C/C++问题及解答:16-20
问题16:在C++中定一个不能被继承的类 解法:容易想到的就是将这个类的构造函数和析构函数都设为私有的。这样继承的类就无法调用父类的构造函数和析构函数,编译时就会报错。但是不能被继承的类如何产生对象呢?可以利用静态函数,它与类的对象无关,可以直接通过类的作用域直接调用。[cpp] view plaincopyprint?class FinalClas转载 2013-08-15 22:09:02 · 560 阅读 · 0 评论 -
全面整理的C++面试题
1.是不是一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?virtual修饰符会被隐形继承的。private 也被集成,只事派生类没有访问权限而已。virtual可加可不加。子类的空间里有父类的所有变量(static除外)。同一个函数只存在一个实体(inline除外)。子类覆盖它的函数不加virtual ,也能实现多态。在子类的空间里,有父转载 2013-08-13 23:39:52 · 797 阅读 · 1 评论 -
Autodesk面试技术题解答
1. 在类的普通成员函数中调用虚函数,情况是怎么样的?(对象、引用、指针)多态, 事实上,这是 Template Method模式的关键 2. 关于成员变量初始化顺序,几个有依赖关系的成员变量要初始化,让写出构造函数。在初始化列表中,成员变量的初始化顺序是其在类中声明顺序,而非列表中的顺序。3. 写一个双链表。 Struct ListNode{转载 2013-08-13 15:19:36 · 712 阅读 · 0 评论 -
面试题 c++
求下面函数的返回值(微软)[cpp] view plaincopy{ int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999.转载 2013-08-13 16:21:55 · 610 阅读 · 0 评论 -
程序员笔试知识点整理
0、常考基础必知必会A. 排序:排序有几种,各种排序的比较,哪些排序是稳定的,快排的算法;B. 查找:哈希查找、二叉树查找、折半查找的对比,哈希映射和哈希表的区别?C. 链表和数组的区别,在什么情况下用链表什么情况下用数组?D. 栈和队列的区别?E. 多态,举例说明;overload和override的区别?F. 字符串有关的函数,比如让你写一个拷贝转载 2013-08-20 11:05:04 · 2027 阅读 · 0 评论 -
C/C++中几个宏的总结
有人视宏为洪水猛兽,甚至要求完全从C/C++中摒弃,有人则认为宏为至尊宝典,在逻辑代码中都大量使用。个人认为这是个仁者见仁智者见智的问题,摒弃就没必要了,看看宏在MFC和ATL中的一些经典应用,你会发现如果不使用宏来实现一些消息映射和对象映射神马的那将让“苦逼”程序员多花费多少宝贵的时间。当然也不能滥用,尤其是尽量不要在逻辑代码中使用,宏中的逻辑出问题后,调试时候的痛苦你就真的会发现原来程序员真的转载 2013-08-19 22:51:32 · 584 阅读 · 0 评论 -
C++面试资料之问答题集合(找工作复习)
1.在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?答:首先,extern是C/C++语言中表明函数和全局变量作用范围的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。extern "C"是连接申明(linkage declaration)转载 2013-08-19 22:38:03 · 775 阅读 · 0 评论 -
常见指针内存处理问题的详解
http://blog.youkuaiyun.com/tianmo2010/article/details/6785912常见的 指针,内存操作问题[cpp] view plaincopyvoid getMemory(char *p) { p = (char *)malloc(100); }转载 2013-08-19 21:56:20 · 698 阅读 · 0 评论 -
虚函数
虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行晚绑定,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。通常此类指针或引用都声明为基类的,它可以指向基类或派生类的对象。 多态指同一个方法根据其所属的不同对象可以有不同的行为(根据自己理解,不知这么说是否严谨)。 举个例子说明虚函数、多态、早绑定和晚绑定: 李氏两兄妹(转载 2013-08-19 21:36:28 · 690 阅读 · 0 评论 -
C++虚函数的原理及实现
虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用调用此类函数时,对其执行晚绑定,即通过指针(或引用)指向的类的类型信息来决定该函数是哪个类的。通常此类指针或引用都声明为基类的,它可以指向基类或派生类的对象。 多态指同一个方法根据其所属的不同对象可以有不同的行为(根据自己理解,不知这么说是否严谨)。 举个例子说明虚函数、多态、早绑定和晚绑定: 李氏两兄妹(转载 2013-08-19 20:11:55 · 681 阅读 · 0 评论 -
华为的一道题
看了别人的解法没有看懂,自己写的int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至 数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)// 0再前非零在后.cpp : Defines the entry原创 2013-06-27 14:31:09 · 960 阅读 · 0 评论 -
实现连续正整数之和为某个特定值【算法】
一个正整数有可能被表示成n(n>=2)连续正整数之和如:15=1+2+3+4+5;15=4+5+6;15=7+8;请编写程序,根据输入的正整数,找出符合这种要求的所有连续正整数序列,如没有则输出none输入:15输出:1 2 3 4 54 5 67 8输入:16输出:none[cpp] view plain转载 2013-06-24 21:59:08 · 896 阅读 · 0 评论 -
用堆栈实现十进制转换为二进制
#include #include #define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define OVERLOW -2#define ok 1#define error -1 typedef struct sqstack{ int *base; int *top; int max;}sqstac转载 2013-06-24 21:20:54 · 4638 阅读 · 0 评论 -
程序员笔试知识点整理
0、常考基础必知必会A. 排序:排序有几种,各种排序的比较,哪些排序是稳定的,快排的算法;B. 查找:哈希查找、二叉树查找、折半查找的对比,哈希映射和哈希表的区别?C. 链表和数组的区别,在什么情况下用链表什么情况下用数组?D. 栈和队列的区别?E. 多态,举例说明;overload和override的区别?F. 字符串有关的函数,比如让你写一个拷贝转载 2013-06-21 10:52:44 · 2283 阅读 · 0 评论 -
华为C语言笔试题集合
①华为笔试题搜集1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在转载 2013-08-19 19:53:36 · 1154 阅读 · 0 评论 -
路由器和交换机的区别
交换机是一种基于MAC(网卡的硬件地址)识别,能完成封装转发数据包功能的网络设备。交换机可以“学习”MAC地址,并把其存放在内部地址表中,通过在数据帧的始发者和目标接收者之间建立临时的交换路径,使数据帧直接由源地址到达目的地址。交换机主要是组成局域网,例如一个公司网络的搭建一般是使用交换机的,交换机不能转发数据包,也没有路由到目的地址.现在交换机也分为二层交换机和三层交换机,三层交换机具有转载 2013-08-19 22:17:44 · 543 阅读 · 0 评论 -
C语言面试题大汇总之华为面试题
1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: " 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 2、如何引用一个已经定义过的全局转载 2013-08-13 11:45:23 · 628 阅读 · 0 评论 -
define和inline 的区别
define:定义预编译时处理的宏; 只进行简单的字符替换,无类型检测typedef:定义类型别名 用于处理复杂类型 例: typedef int A; 则:A a; //定义a为intinline: 内联函数对编译器提出建议,是否进行宏替换,编译器有权拒绝 既为提出申请,不一定会成功 static一、产生背景引出原因:函数内转载 2013-08-20 21:09:22 · 660 阅读 · 0 评论