试卷链接见迅雷2014C++研发笔试卷C。

1、下列运算符中,在C++语言中不能重载的是:

A.*    B.>=  C.::  D. delete

分析:在C++中,sizeof运算符,.成员运算符,.*成员指针运算符,::作用域解析运算符以及?:条件运算符不能被重载,因此答案选C。

2、下面关于多态性的描述,错误的是:

  • C++语言的多态性分为编译时的多态性和运行时的多态性
  • 编译时的多态性可通过函数重载实现
  • 运行时的多态性可通过模板和虚函数实现
  • 实现运行时多态性的机制称为动态绑定
分析:

A,正确,分编译时多态和运行时多态;
B,正确,编译时多态可以通过函数重载实现,具体表现在根据参数的个数和类型不同选择合适的同名函数;
C,错误,运行时多态通过虚函数实现,就是运行时根据对象类型自动选择正确的调用接口。模板属于编译时多态性,因为编译时自动根据模板生成模板函数;
D,正确,运行时多态是根据对象类型自动选择正确的调用函数,也叫动态绑定。
3、下面关于类和对象的描述中,错误的是:

  • 类就是C语言中的结构体类型,对象就是C语言中的结构体变量
  • 类和对象之间的关系是抽象和具体的关系
  • 对象是类的实例,一个对象必须属于一个已知的类
  • 类是具有共同行为的若干对象的统一描述体
分析:(1)C的结构体内不允许有函数存在,C++允许有内部成员函数,且允许该函数是虚函数。所以C的结构体是没有构造函数、析构函数、和this指针的。(2)C的结构体对内部成员变量的访问权限只能是public,而C++允许public 、protected、private三种。(3)C语言的结构体是不可以继承的,C++的结构体是可以从其他的结构体或者类继承过来的。以上三条都是表面的区别,实际区别就是面向过程和面向对象编程思路的区别:C的结构体只是把数据变量给包裹起来了,并不涉及算法。而C++是把数据变量及对这些数据变量的相关算法给封装起来, 并且给对这些数据和类不同的访问权限。
4、引用标准库时,下面的说法你认为哪个是正确的:

  • 语句#include “stdlib.h”是正确的,而且程序编译速度比#include <stdlib.h>要快
  • 语句#include <stdlib.h>是正确的,而且程序编译速度比#include “stdlib.h”要快语句#include <stdlib.h>和#include “stdlib.h”都是正确的,程序编译速度没有区别
  • 语句#include “stdlib.h”是错误的
分析:#inlcude<> 首先只搜索系统目录,不会搜索本地目录.比如你自己写一个头文件,你用#include <>会出错。

#include""首先搜索本地目录,如果本地目录没有才会搜索系统目录。可以把系统的文件放到当前目录下改成 "" 可以优先使用。综上所述,B是对的。
5、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为:

  • 0
  • 1
  • 2
  • 7

分析:逻辑与或者逻辑或的表达式,先是判断一边,若一边可以判断整个表达式为真假时,另一边不再执行。

做题时一定要注意。对于这题来讲,m=a>b后m=0,表达式为假,&&后半部分不会操作,因此n为初始值2。
6、不能作为重载函数的调用的依据是:

  • 参数个数
  • 参数类型
  • 函数类型
  • 函数名称

分析:函数重载是面向对象程序设计的多态性的实现,就是指同一个函数名对应着不同的函数实现,系统可根据参数的类型、个数来自动完成调用函数的最佳匹配。因此D选项是重载函数的判断依据,而且是第一依据:函数名必须相同。重载函数的参数至少要有一方面不同,表现如下:

(1)函数的参数类型和个数不同;
(2)函数参数的顺序不同。如:fun(double,int)和fun(int,double)就是两个不同的函数
注意:返回值没有区分度,因为在调用函数的时候你自己可以选择接收或丢弃返回值,编译器是无法区分你是要调用有相应返回值的函数然后丢弃返回值,还是要调用无返回值的函数。所以,返回值(函数类型)是无法区分函数的。

7、下列程序的输出结果为:
#include<iostream.h>
int func(int n)
{if(n<1)return 1;elsereturn n+func(n-1);return 0;
}
void main() {cout<< func(5) <<endl;
}
  • 0
  • 10
  • 15
  • 16
分析:这是一个求累加和的递归,注意最后f(0)=1,因此答案为D。
8、建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数)这3种构造函数的调用顺序为:

  • abc
  • acb
  • cab
  • cba
分析:执行派生类构造函数的顺序是:
(1)调用基类构造函数,对基类数据成员初始化;
(2)调用子对象构造函数,对子对象数据成员初始化;
(3)再执行派生类构造函数本身,对派生类数据成员初始化。
答案选A。
9、如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是:

  • 一元运算符
  • 二元运算符
  • 选项A)和选项B)都可能
  • 重载错误
分析:友元函数重载时,重载几目的运算符就有几个参数。成员函数重载时,因为有this指针的原因,所以参数个数要少一个。答案选D。
10、
#define F(X,Y)   (X)--, (Y)++, (X)*(Y);
…
int i, a = 3, b = 4;
for( i = 0; i<5; i++)F(a,b) ;
printf(“%d, %d”, a, b);</span>
输出结果是
  • 3, 4
  • 3, 5
  • -2, 5
  • -2, 9

分析:#define F(X,Y)   (X)--, (Y)++, (X)*(Y);  表示遇到F(X,Y)时,用(X)--, (Y)++, (X)*(Y)替换原内容,F(a,b)替换为(a)--, (b)++, (a)*(b),则每循环一次a--,b++;循环了5次,a变为-2,b变为9。故答案为D。
11、[不定项选择题]已知一段文本有1382个字符,使用了1382个字节进行存储,这段文本全部是由a、b、c、d、e这5个字符组成,a出现了354次,b出现了483次,c出现了227次,d出现了96次,e出现了232次,对这5个字符使用哈夫曼(Huffman)算法进行编码,则以下哪些说法正确()

  • 使用哈夫曼算法编码后,用编码值来存储这段文本将花费最少的存储空间
  • 使用哈夫曼算法进行编码,a、b、c、d、e这5个字符对应的编码值是唯一确定的
  • 使用哈夫曼算法进行编码,a、b、c、d、e这5个字符对应的编码值可以有多套,但每个字符编码的位(bit)数是确定的
  • b这个字符的哈夫曼编码值位数应该最短,d这个字符的哈夫曼编码值位数应该最长
分析:

A正确,Huffman树就是求最优解。可以有多套方案,但最终每套方案生成的编码长度都相同且都是最优解。
B错误,我们可以将左子树定为1右子树定为0也可以反之,不同的方案获得的编码值是不同的,但每个字符的编码长度是固定的。
C正确,不同的方案影响的只是通向节点的路径为0还是1,而不会影响Huffman树的层次结构
D正确,生成了Huffman树之后,我们就能看到,出现频率越高的节点越靠近根,深度越小即编码值尾数越短;出现频率越低的节点越远离根,深度越大即编码位数越长。

12、[不定项选择题]下面描述不正确的是()

  • while循环语句的循环体至少执行1次
  • do-while循环可以写成while循环的格式
  • continue语句可以出现在各种循环体中
  • break语句不可以出现在循环体内
分析:while(0)时不执行,break用于终止离它最近的循环语句,continue只能出现在for/while/do while循环内部,或嵌套在此类循环里的语句和块内部,不能在单独的switch中用continue。答案ACD。
13、[不定项选择题]下面模板声明中,哪些是非法的()

  • template<class Type>class C1{};
  • template<class T, U, class V>class C2{};
  • template<class C1, typename C2>class C3{};
  • template<typename myT, class myT>class C4{};
分析:答案BD,B选项的U参数没有指定类型, D选项的 2个形参名同名。

函数模板的格式:

template <class 形参名,class 形参名,......> 返回类型 函数名(参数列表)

{

函数体

}

类模板的格式为:

template<class   形参名 ,class 形参名,…>   class 类名

{ ... };

14、[不定项选择题]拷贝构造函数的特点是()

  • 该函数名同类名,也是一种构造函数,该函数返回自身引用
  • 该函数只有一个参数,是对某个对象的引用
  • 每个类都必须有一个拷贝初始化构造函数,如果类中没有说明拷贝构造函数,则编译器系统会自动生成一个缺省拷贝构造函数,作为该类的保护成员
  • 拷贝初始化构造函数的作用是将一个已知对象的数据成员值拷贝给正在创建的另一个同类的对象
分析:拷贝函数和构造函数没有返回值,A是错的。构造函数可以有多个参数,但是复制构造函数的参数必须是实例的引用,且只有一个。B是对的。C前面都是对的,但是默认复制构造函数可以在类或子类外使用,不是保护成员函数。D正确不解释。答案BD。
15、[不定项选择题]下列对函数double add(int a , int b)进行重载,正确的是()

  • int add(int a ,int b ,int c)
  • int add(double a , double b)
  • double add(double a , double b)
  • int add(int a , int b)
分析:override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。重写(覆盖)的规则如下:

 (1)重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.
 (2)重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。
 (3)重写的方法的返回值必须和被重写的方法的返回一致;
 (4)重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类;
 (5)被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。
 (6)静态方法不能被重写为非静态的方法(会编译出错)。
overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。重载的规则如下:
(1)在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样);
(2)不能通过访问权限、返回类型、抛出的异常进行重载;
(3)方法的异常类型和数目不会对重载造成影响。

16、[智力题]有一幢100层高的大楼,给你两个完全相同的玻璃围棋子。假设从某一层开始,丢下玻璃棋子就会破碎。那么怎么利用手中的两颗棋子,用一种什么样的最优策略,知道这个临界的层高呢?
分析:参考博客100层楼和两个玻璃球的问题。
17、[编程题]用c++写一个函数,如Foo(const char *str),打印出str的全排列,如abc的全排列:abc, acb, bca, dac, cab,cba
分析:参考博客全排列的一些总结。参考代码如下:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
void Foo(const char*str){string s=str;cout<<s<<endl;while(next_permutation(s.begin(),s.begin()+s.size())){cout<<s<<endl;}return ;
}
int main(){const char str[]="abc";Foo(str);return 0;
}

参考代码2:

#include<iostream>
using namespace std;
void Foo(char *str,char *begin)
{if(*begin == '\0') cout<<str<<endl;else  for(char* p = begin; *p != '\0'; p++) { swap(*begin,*p);Foo(str, begin+1); swap(*begin,*p);}
}
int main()
{char *str=new char[100];cin>>str;Foo(str,str);return 0;
}

18、[编程题]求出一字符串中最长的数字串。比如as123cdf1234f,返回1234,char* FindNumber(char * out,char *in)。
分析:参考博客在字符串中找出连续最长的数字串。

迅雷2014C++研发笔试卷C解题分析相关推荐

  1. 迅雷2014C++研发笔试卷C

    1 下列运算符中,在C++语言中不能重载的是: * >= :: delete 2 下面关于多态性的描述,错误的是: C++语言的多态性分为编译时的多态性和运行时的多态性 编译时的多态性可通过函数 ...

  2. 瓜子二手车2019秋招研发笔试卷1

    1.进行数据库提交操作时使用事务(Transaction)是为了? 提高效率 保证数据一致性 网络安全 归档数据文件 解析:事务是一组数据库操作集合,要么全做,要么不做. 2.关于编译原理,以下文法中 ...

  3. 人人网2015研发笔试卷C

    1 若12*25=311成立, 则用的是几进制? 7 8 9 11 2 某32位系统下, C++程序如下所示,sizeof 的值应为? char str[] = "http://www.re ...

  4. 【恒生公司2016研发工程师笔试卷选择题分析】

    static局部变量相关知识 静态变量在内存的静态存储区,静态数据一直占有着该存储区单元直到程序结束: 静态局部变量只声明一次,一旦申请内存成功,不再接受重复申请: 静态局部变量的作用域与一般局部变量 ...

  5. 数据分析真题日刷 | 网易2018校园招聘数据分析工程师笔试卷

    七月第一天,希望大家下半年都能「翻身」! 今日真题 网易2018校园招聘数据分析工程师笔试卷(来源:牛客网) 题型 客观题:单选20道:主观题:问答3道 完成时间 120分钟 牛客网评估难度系数 四颗 ...

  6. 蘑菇街2015校招 Java研发笔试题 详解,2015java

    蘑菇街2015校招 Java研发笔试题 详解,2015java 1. 对进程和线程描述正确的是( ) A.  父进程里的所有线程共享相同的地址空间,父进程的所有子进程共享相同的地址空间. B.  改变 ...

  7. 字节跳动2020秋招研发笔试题

    字节跳动秋招研发笔试题 最近在忙考研,高数复习完了,看了下数据结构和算法,然后对人生比较迷茫. 该不该放弃考研,又怕考不上面临找工作的问题,索性看了几家科技巨头的秋招试题,贴下来和大家分享下 基本都是 ...

  8. 计算机水平考试ppt试卷,计算机等级考试一级笔试卷库.ppt

    计算机等级考试一级笔试卷库 计算机等级考试一级笔试题库 全国计算机等级考试一级题库 1.微机中1K字节表示的二进制位数是( ).? A.1000 B.8x 1000 C.1024 D.8x1024?? ...

  9. 以下表示中 不能用作c语言常量的是0UL,C语言笔试卷.doc

    C语言笔试卷 C语言程序设计(07春) 选择题 21. 以下关于C语言源程序的叙述中,错误的是 (21) . 一个C源程序由若干个函数定义组成,其中必有且仅有一个名为main的函数定义 函数定义由函数 ...

最新文章

  1. 【大牛系列教学】java商城推荐算法
  2. Tomcat 7 Connector 精读(1)
  3. java z注释过滤_如何编写一个java程序来过滤所有注释行并只打印java编码行?
  4. 【POJ - 1942 】Paths on a Grid (组合数学,求组合数的无数种方法)
  5. UIKit Particle Systems in iOS 5 Tutorial ( 附雨的粒子效果 )
  6. 2014025675 《嵌入式系统程序设计》第七周学习总结
  7. android list布局,android-为具有不同项目布局的ListViews创建ViewHolders
  8. readlink()不能读取硬链接的目标
  9. CEC2018:动态多目标测试函数DF10~DF14的PS及PF(提供Matlab代码)
  10. Python实现网页自动截图
  11. 鼠标悬停,图片向四周放大效果
  12. VRP远程管理(华为设备telnet登录密码配置与测试环境搭建)——在物理机上创建回环网卡及eNSP模拟器与物理机实现连接通信
  13. 部分选主元的Doolittle分解
  14. 关于解决文件夹变成*.EXE可执行文件的问题
  15. 在线考试系统的性能需求分析
  16. 使用Rust开发编译系统(C以及Rust编译的过程)
  17. 目标检测(三)传统目标检测与识别的特征提取——基于HOG特征的目标检测原理
  18. CSDN超简单的上传gif动图方法
  19. uploadify上传图片
  20. Windows更新策略配置

热门文章

  1. imx6ull中断体系之GICV2
  2. ue4 改变枢轴位置_[UE4蓝图][Materials]虚幻4中可互动的雪地材质完整实现(一)
  3. Spring源码分析(二):底层架构核心概念解析
  4. 解决 adb.exe 停止工作小续
  5. win10计算机导航栏怎么删除,如何自定义导航栏?win10资源管理器导航栏删除多余选项的操作方法...
  6. LintCode 644. 镜像数字 JavaScript算法
  7. 激活函数的作用是什么
  8. Python学习手册 - 基础知识汇总(精简版)
  9. 攻防世界--no-strings-attached
  10. Ubuntu安装MySQL(RPM包安装)