华为C笔试题
- 格式:doc
- 大小:54.02 KB
- 文档页数:14
(一) 初级题1. 什么是预编译,何时需要预编译:答:(1) 总是使用不经常改动的大型代码体(2) 程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。
在这种情况下,可以将所有包含文件预编译为一个预编译头<<预编译又称为预处理,是做些代码文本的替换工作处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等就是为编译做的预备工作的阶段主要处理#开始的预编译指令预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。
常见的预编译指令有:>>2. char * const pchar const * pconst char *p上述三个有什么区别?答:char * const p; //常量指针,p的值不可以修改char const * p;//指向常量的指针,指向的常量值不可以改const char *p;//和char const *p3.char str1[] = "abc";char str2[] = "abc";const char str3[] = "abc";const char str4[] = "abc";const char *str5 = "abc";const char *str6 = "abc";char *str7 = "abc";char *str8 = "abc";cout << ( str1 == str2 ) << endl;cout << ( str3 == str4 ) << endl;cout << ( str5 == str6 ) << endl;cout << ( str7 == str8 ) << endl;结果是:0 0 1 1str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。
1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别?1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。
7.什么函数不能声明为虚函数?constructor函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2)。
9.写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)10.Internet采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析協議)12.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。
写出C程序。
华为C/C++笔试题(附答案)1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)int a = 4;(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);a = ?答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;改后答案依次为9,10,10,112.某32位系统下, C++程序,请计算sizeof 的值(5分).char str[] = “http://ww /”char *p = str ;int n = 10;请计算sizeof (str ) = ?(1)sizeof ( p ) = ?(2)sizeof ( n ) = ?(3)void Foo ( char str[100]){请计算sizeof( str ) = ?(4)}void *p = malloc( 100 );请计算sizeof ( p ) = ?(5)答:(1)17 (2)4 (3) 4 (4)4 (5)43. 回答下面的问题. (4分)(1).头文件中的 ifndef/define/endif 干什么用?预处理答:防止头文件被重复引用(2). #i nclude 和#i nclude “filename.h” 有什么区别?答:前者用来包含开发环境提供的库头文件,后者用来包含自己编写的头文件。
(3).在C++ 程序中调用被 C 编译器编译后的函数,为什么要加extern “C”声明?答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。
由于编译后的名字不同,C++程序不能直接调用C 函数。
C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。
(4). switch()中不允许的数据类型是?答:实型4. 回答下面的问题(6分)(1).Void GetMemory(char **p, int num){*p = (char *)malloc(num);}void Test(void){char *str = NULL;GetMemory(&str, 100);strcpy(str, "hello");printf(str);}请问运行Test 函数会有什么样的结果?答:输出“hello”(2). void Test(void){char *str = (char *) malloc(100);strcpy(str, “hello”);free(str);if(str != NULL){strcpy(str, “world”);printf(str);}}请问运行Test 函数会有什么样的结果?答:输出“world”(3). char *GetMemory(void){char p[] = "hello world";return p;}void Test(void){char *str = NULL;str = GetMemory();printf(str);}请问运行Test 函数会有什么样的结果?答:无效的指针,输出不确定5. 编写strcat函数(6分)已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);其中strDest 是目的字符串,strSrc 是源字符串。
华为C++笔试题1. static 有什么用途?(请至少说明两种)1) 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内 (但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用2. 引用与指针有什么区别?1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3. 描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。
5. 什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6. 堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。
7. 什么函数不能声明为虚函数?constructor 函数不能声明为虚函数。
8. 冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2) 。
9. 写出float x 与“零值”比较的if 语句。
if(x>0.000001&&x<-0.000001)10.Internet 采用哪种网络协议?该协议的主要层次结构?Tcp/Ip 协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
11.Internet 物理地址和IP 地址转换采用什么协议?ARP (Address Resolution Protocol) (地址解析協議)12.IP 地址的编码分为哪俩部分?IP 地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
13.用户输入M,N 值,从 1 至N 开始顺序循环数数,每数到M 输出该数值,直至全部输出。
华为C/C++笔试题(附答案)1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)int a = 4;(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);a = ?答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;改后答案依次为9,10,10,112.某32位系统下, C++程序,请计算sizeof 的值(5分).char str[] = “.ibegroup./”char *p = str ;int n = 10;请计算sizeof (str ) = ?(1)sizeof ( p ) = ?(2)sizeof ( n ) = ?(3)void Foo ( char str[100]){请计算sizeof( str ) = ?(4)}void *p = malloc( 100 );请计算sizeof ( p ) = ?(5)答:(1)17 (2)4 (3) 4 (4)4 (5)43. 回答下面的问题. (4分)(1).头文件中的 ifndef/define/endif 干什么用?预处理答:防止头文件被重复引用(2). #i nclude 和#i nclude “filename.h” 有什么区别?答:前者用来包含开发环境提供的库头文件,后者用来包含自己编写的头文件。
(3).在C++ 程序中调用被 C 编译器编译后的函数,为什么要加extern “C”声明?答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。
由于编译后的名字不同,C++程序不能直接调用C 函数。
C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。
(4). switch()中不允许的数据类型是?答:实型4. 回答下面的问题(6分)(1).Void GetMemory(char **p, int num){*p = (char *)malloc(num);}void Test(void){char *str = NULL;GetMemory(&str, 100);strcpy(str, "hello");printf(str);}请问运行Test 函数会有什么样的结果?答:输出“hello”(2). void Test(void){char *str = (char *) malloc(100);strcpy(str, “hello”);free(str);if(str != NULL){strcpy(str, “world”);printf(str);}}请问运行Test 函数会有什么样的结果?答:输出“world”(3). char *GetMemory(void){char p[] = "hello world";return p;}void Test(void){char *str = NULL;str = GetMemory();printf(str);}请问运行Test 函数会有什么样的结果?答:无效的指针,输出不确定5. 编写strcat函数(6分)已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);其中strDest 是目的字符串,strSrc 是源字符串。
华为c 笔试题2017答案以下就是小编整理的华为c 笔试题2017答案,一起来看看吧!1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别?1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。
7.什么函数不能声明为虚函数?constructor函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n)。
9.写出float x 与“零值”比较的if语句。
if(x>0.000001&x<-0.000001)10.Internet采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析协议)12.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
华为C++笔试题准备去华为面试的小伙伴已经准备好了吗?下面是小编整理的华为C++笔试题,希望对你有帮助!华为C++笔试题【一】 1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用。
2.引用与指针有什么区别?1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。
7.什么函数不能声明为虚函数?constructor函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2)。
9.写出float x 与“零值”比较的if语句。
if(x>0.000001&x 10.Internet采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析协议)12.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
华为C笔试题文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-1.static有什么用途(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别如果有,是什么区别全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的没有回收垃圾资源。
7.什么函数不能声明为虚函数constructor函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么时间复杂度是O(n^2)。
9.写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)10.Internet采用哪种网络协议该协议的主要层次结构Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采用什么协议ARP (Address Resolution Protocol)(地址解析协议)12.IP地址的编码分为哪俩部分IP地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别?1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。
7.什么函数不能声明为虚函数?constructor函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2)。
9.写出float x 与“零值”比较的if语句。
if(x>&&x<采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析协议)地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。
写出C程序。
循环链表,用取余操作做14.不能做switch()的参数类型是:switch的参数不能为实型。
1. 以下三条输出语句分别输出什么?[C易]char str1[] = "abc";char str2[] = "abc";const char str3[] = "abc";const char str4[] = "abc";const char* str5 = "abc";const char* str6 = "abc";cout << boolalpha << ( str1==str2 ) << endl; class B : public A { ……} class B { operator A( ); } class A { A( const B& ); } A& operator= ( const A& ); 以下代码中的两个sizeof用法有问题吗?[C易]void UpperCase( char str[] ) 以下代码有什么问题?[C难]void char2Hex( char c ) 以下代码有什么问题?[C++易]struct Test{Test( int ) {}Test() {}void fun() {}};void main( void ){Test a(1);();Test b();();}6. 以下代码有什么问题?[C++易]cout << (true?1:"1") << endl;7. 以下代码能够编译通过吗,为什么?[C++易] unsigned int const size1 = 2;char str1[ size1 ];unsigned int temp = 0;cin >> temp;unsigned int const size2 = temp;char str2[ size2 ];8. 以下代码中的输出语句输出0吗,为什么?[C++易] struct CLS{int m_i;CLS( int I ) : m_i(i) {}CLS(){CLS(0);}};CLS obj;cout << << endl;9. C++中的空类,默认产生哪些类成员函数?[C++易]答:class Empty{public:Empty(); 以下两条输出语句分别输出什么?[C++难]float a = 1.0f;cout << (int)a << endl;cout << (int&)a << endl;cout << boolalpha << ( (int)a == (int&)a ) << endl; 0.0f以下反向遍历array数组的方法有什么错误?[STL易]vector array;( 1 );( 2 );( 3 );for( vector::size_type i=()-1; i>=0; --I ) 以下代码有什么问题?[STL 易]typedef vector IntArray;IntArray array;( 1 );( 2 );( 2 );( 3 );写一个函数,完成内存之间的拷贝。
1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别?1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。
7.什么函数不能声明为虚函数?constructor函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2)。
9.写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)10.Internet采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析協議)12.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。
写出C程序。
华为C++笔试题(最新最全)脚本执⾏失败问题1. 虚函数是可以内联的,这样就可以减少函数调⽤的开销,提⾼效率(错误)2. ⼀个类⾥可以同时存在参数和函数名都相同的虚函数与静态函数(错误)3. ⽗类的析构函数是⾮虚的,但是⼦类的析构函数是虚的,delete⼦类指针(指向该⼦类对象),会调⽤⽗类的析构函数(正确)//任何情况下删除⼦类都会调⽤到⽗类的析构函数4.对于下⾯的类CA,sizeof(CA) = _B_:A. 4B. 8C. 12D. 16class CA{public:CA();virtual ~CA(); //因为有虚函数,所以会有4个字节的虚表指针private:int m_iTime; //成员变量4个字节public:int GetTime();int SetTime(int iTime);};5.下⾯这段程序,打印结果是_A_:A. 1B. 2C. 3D. 以上都不对int g_iCount = 0;class CParent{public:CParent() {}~CParent() {g_iCount += 1;}};public:CSon() {}~CSon() {g_iCount += 2;}};main(){CParent* p = new CSon();delete p;std::cout << g_iCount << std::endl;}6.请问下⾯这段程序的输出结果是_A_:A. 2,1,B. 2,2,C. 1,1,D. 1,2,class CParent{public:CParent() {}virtual ~CParent() {}public:virtual void Print(){ std::cout << "1,"; };};class CSon : public CParent{public:CSon() {};virtual ~CSon() {};public:void Print(){ std::cout << "2,"; };};void Test2(CParent oParent){oParent.Print();}main(){CSon * p = new CSon();Test1(*p); //这⾥只是⼀个引⽤Test2(*p); //这⾥会在栈空间重新构造Cparent类对象 delete p; }7.请问下⾯这段程序的输出结果是_D_:A. 2,1,B. 2,2,C. 1,1,D. 1,2,class CParent{public:CParent() {}virtual ~CParent() {}public:void Print(){ std::cout << "1," ; };};class CSon : public CParent{public:CSon() {}virtual ~CSon() {}public:void Print(){ std::cout << "2,"; };};main(){CSon oSon;CParent * pParent = &oSon;pSon->Print();}8.请问下⾯这段程序的输出结果是_C_:A. 2,1,B. 2,2,C. 1,2,D. 1,1,class CParent{public:CParent() {Print();}virtual ~CParent() {}public:virtual void Print(){ std::cout << "1,"; } }; class CSon : public CParent{public:CSon() {Print();}virtual ~CSon() {}public:void Print(){ std::cout << "2,"; }};main(){CParent * pParent = new CSon(); delete pParent;}9.请问下⾯这段程序的输出结果是_D_:A. 2,2,B. 2,C. 输出结果不确定D. 以上都不对class CParent{virtual ~CParent() {}public:virtual void Print() = 0;};class CSon : public CParent{public:CSon() {Print();}virtual ~CSon() {}public:void Print(){ std::cout << "2,"; };};main(){CParent * pParent = new CSon();delete pParent;}10.请仔细阅读以下程序:class Base{public:virtual bool operator == (int iValue){std::cout << "I am Base class !" << std::endl; return true;}virtual ~Base(){}};class Derive: public Base{public:virtual bool operator == (int iValue)virtual ~Derive(){}};int main(){Derive derive;Base* pBase = &derive;Derive* pDerive = &derive;*pBase == 0;*pDerive == 0;return 0;}程序的输出结果是_B_:A、I am Base class !I am base class !B、I am Derive class !I am Derive class !C、I am base class !I am Derive class !D、I am Derive class !I am Base class !11.请仔细阅读以下程序:class Base{public:virtual void display(std::string strShow = "I am Base class !") { std::cout << strShow << std::endl; } virtual ~Base(){}};class Derive: public Base{public:virtual void display(std::string strShow = "I am Derive class !") { std::cout << strShow << std::endl; }Base* pBase = new Derive();Derive* pDerive = new Derive();pBase->display();pDerive->display();delete pBase;delete pDerive;return 0;}程序的输出结果是_C_:A、I am Base class !I am base class !B、I am Derive class !I am Derive class !C、I am base class !I am Derive class !D、I am Derive class !I am Base class !12.请仔细阅读以下程序:class Base{public:virtual void display() const{ std::cout << "I am Base class !" << std::endl; } virtual ~Base(){} };class Derive: public Base{public:virtual void display(){ std::cout << "I am Derive class !"<< std::endl; } virtual ~Derive(){} };int main()Derive* pDerive = new Derive();pBase->display();pDerive->display();delete pBase;delete pDerive;return 0;}程序的输出结果是_C_:A、I am Base class !I am base class !B、I am Derive class !I am Derive class !C、I am base class !I am Derive class !D、I am Derive class !I am Base class !13.在C++中,多态性存在于_B_:A、同⼀个类的多个同名函数之间B、⼦类继承层次中C、⽗类的多个同名函数之间D、以上都不是14.下⾯⿊体加粗的语句存在问题,请问下⾯的修改哪个是正确的?B class A{public:void Func();..};class B{private:bool Func() const;..public A,public B{...}; // class definition is unimportantC test;test.Func(); //look hereA.test.B::Func(); B.test.A::Func();C.B::test.Func(); D.A::test.Func();15.判断:⼦类可以访问⽗类保护成员,⼦类的友元类也可以通过⼦类对象去访问⽗类的保护成员。
脚本执行失败问题1. 虚函数是可以内联的,这样就可以减少函数调用的开销,提高效率(错误)2. 一个类里可以同时存在参数和函数名都相同的虚函数与静态函数(错误)3. 父类的析构函数是非虚的,但是子类的析构函数是虚的,delete子类指针(指向该子类对象),会调用父类的析构函数(正确)//任何情况下删除子类都会调用到父类的析构函数4.对于下面的类CA,sizeof(CA) = _B_:A. 4B. 8C. 12D. 16class CA{public:CA();virtual ~CA(); //因为有虚函数,所以会有4个字节的虚表指针private:int m_iTime; //成员变量4个字节public:int GetTime();int SetTime(int iTime);};5.下面这段程序,打印结果是_A_:A. 1B. 2C. 3D. 以上都不对int g_iCount = 0;class CParent{public:CParent() {}~CParent() {g_iCount += 1;}};class CSon : public CParent{public:CSon() {}~CSon() {g_iCount += 2;}};main(){CParent* p = new CSon();delete p;std::cout << g_iCount << std::endl;}6.请问下面这段程序的输出结果是_A_:A. 2,1,B. 2,2,C. 1,1,D. 1,2,class CParent{public:CParent() {}virtual ~CParent() {}public:virtual void Print(){ std::cout << "1,"; };};class CSon : public CParent{public:CSon() {};virtual ~CSon() {};public:void Print(){ std::cout << "2,"; };};void Test1(CParent& oParent){oParent.Print();}void Test2(CParent oParent){oParent.Print();}main(){CSon * p = new CSon();Test1(*p); //这里只是一个引用Test2(*p); //这里会在栈空间重新构造Cparent类对象 delete p;}7.请问下面这段程序的输出结果是_D_:A. 2,1,B. 2,2,C. 1,1,D. 1,2,class CParent{public:CParent() {}virtual ~CParent() {}public:void Print(){ std::cout << "1," ; };};class CSon : public CParent{public:CSon() {}virtual ~CSon() {}public:void Print(){ std::cout << "2,"; };};main(){CSon oSon;CParent * pParent = &oSon;CSon * pSon = &oSon;pParent->Print();pSon->Print();}8.请问下面这段程序的输出结果是_C_:A. 2,1,B. 2,2,C. 1,2,D. 1,1,class CParent{public:CParent() {Print();}virtual ~CParent() {}public:virtual void Print(){ std::cout << "1,"; } };class CSon : public CParent{public:CSon() {Print();}virtual ~CSon() {}public:void Print(){ std::cout << "2,"; }};main(){CParent * pParent = new CSon();delete pParent;}9.请问下面这段程序的输出结果是_D_:A. 2,2,B. 2,C. 输出结果不确定D. 以上都不对class CParent{public:CParent() {Print();}virtual ~CParent() {}public:virtual void Print() = 0;};class CSon : public CParent{public:CSon() {Print();}virtual ~CSon() {}public:void Print(){ std::cout << "2,"; };};main(){CParent * pParent = new CSon();delete pParent;}10.请仔细阅读以下程序:class Base{public:virtual bool operator == (int iValue){std::cout << "I am Base class !" << std::endl;return true;}virtual ~Base(){}};class Derive: public Base{public:virtual bool operator == (int iValue){std::cout << "I am Derive class !" << std::endl;return true;}virtual ~Derive(){}};int main(){Derive derive;Base* pBase = &derive;Derive* pDerive = &derive;*pBase == 0;*pDerive == 0;return 0;}程序的输出结果是_B_:A、I am Base class !I am base class !B、I am Derive class !I am Derive class !C、I am base class !I am Derive class !D、I am Derive class !I am Base class !11.请仔细阅读以下程序:class Base{public:virtual void display(std::string strShow = "I am Base class !") { std::cout << strShow << std::endl; }virtual ~Base(){}};class Derive: public Base{public:virtual void display(std::string strShow = "I am Derive class !") { std::cout << strShow << std::endl; }virtual ~Derive(){}};int main(){Base* pBase = new Derive();Derive* pDerive = new Derive();pBase->display();pDerive->display();delete pBase;delete pDerive;return 0;}程序的输出结果是_C_:A、I am Base class !I am base class !B、I am Derive class !I am Derive class !C、I am base class !I am Derive class !D、I am Derive class !I am Base class !12.请仔细阅读以下程序:class Base{public:virtual void display() const{ std::cout << "I am Base class !" << std::endl; } virtual ~Base(){}};class Derive: public Base{public:virtual void display(){ std::cout << "I am Derive class !"<< std::endl; } virtual ~Derive(){}};int main(){Base* pBase = new Derive();Derive* pDerive = new Derive();pBase->display();pDerive->display();delete pBase;delete pDerive;return 0;}程序的输出结果是_C_:A、I am Base class !I am base class !B、I am Derive class !I am Derive class !C、I am base class !I am Derive class !D、I am Derive class !I am Base class !13.在C++中,多态性存在于_B_:A、同一个类的多个同名函数之间B、子类继承层次中C、父类的多个同名函数之间D、以上都不是14.下面黑体加粗的语句存在问题,请问下面的修改哪个是正确的?Bclass A{public:void Func();..};class B{private:bool Func() const;..};class C:public A,public B{...}; // class definition is unimportantC test;test.Func(); //look hereA.test.B::Func(); B.test.A::Func();C.B::test.Func(); D.A::test.Func();15.判断:子类可以访问父类保护成员,子类的友元类也可以通过子类对象去访问父类的保护成员。
1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别?1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。
7.什么函数不能声明为虚函数?constructor函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2)。
9.写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)10.Internet采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析協議)12.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。
写出C程序。
1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别?1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。
7.什么函数不能声明为虚函数?constructor函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2)。
9.写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)10.Internet采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析协议)12.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。
写出C程序。
华为C/C++笔试题(附答案)1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)int a = 4;(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);a = ?答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;改后答案依次为9,10,10,112.某32位系统下, C++程序,请计算sizeof 的值(5分).char str[] = “http://ww /”char *p = str ;int n = 10;请计算sizeof (str ) = ?(1)sizeof ( p ) = ?(2)sizeof ( n ) = ?(3)void Foo ( char str[100]){请计算sizeof( str ) = ?(4)}void *p = malloc( 100 );请计算sizeof ( p ) = ?(5)答:(1)17 (2)4 (3) 4 (4)4 (5)43. 回答下面的问题. (4分)(1).头文件中的 ifndef/define/endif 干什么用?预处理答:防止头文件被重复引用(2). #i nclude 和#i nclude “filename.h” 有什么区别?答:前者用来包含开发环境提供的库头文件,后者用来包含自己编写的头文件。
(3).在C++ 程序中调用被 C 编译器编译后的函数,为什么要加extern “C”声明?答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。
由于编译后的名字不同,C++程序不能直接调用C 函数。
C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。
(4). switch()中不允许的数据类型是?答:实型4. 回答下面的问题(6分)(1).Void GetMemory(char **p, int num){*p = (char *)malloc(num);}void Test(void){char *str = NULL;GetMemory(&str, 100);strcpy(str, "hello");printf(str);}请问运行Test 函数会有什么样的结果?答:输出“hello”(2). void Test(void){char *str = (char *) malloc(100);strcpy(str, “hello”);free(str);if(str != NULL){strcpy(str, “world”);printf(str);}}请问运行Test 函数会有什么样的结果?答:输出“world”(3). char *GetMemory(void){char p[] = "hello world";return p;}void Test(void){char *str = NULL;str = GetMemory();printf(str);}请问运行Test 函数会有什么样的结果?答:无效的指针,输出不确定5. 编写strcat函数(6分)已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);其中strDest 是目的字符串,strSrc 是源字符串。
CC++笔试题系列二(华为招聘华为笔试题;C;C++;1.说出下面这个程序的运行结果,并简要叙述其理由:char buf1[10]="hello";char buf2[10]="hello";if (buf1==buf2)printf("equal!");else printf("not equal!");答:因为buf1,buf2分配了不同的内存块,而比较的是数组名,实际上是两个分别指向数组起始元素地址的指针。
2.指出下面这段程序中存在一些什么问题:int loop,a[5];int* p=a;for (loop=0;loop<5;loop++){ p++;*p=loop;}答:数组a[5]在创建时没有初始化,在for循环里也没有起到完全初始化数组的作用,而且对一块未知内存赋值。
在最后一轮循环结束时p指向了数组a[5]的最后一个元素的下一个地址。
string 系列char * strcpy( char *strDest, const char *strSrc ){assert( (strDest != NULL) && (strSrc != NULL) );char *address = strDest;while( (*strDest++ = * strSrc++) != ‘\0’ );return address;}char* strncpy(char* strdest, const char* strsrc, int n){assert((strdest != NULL) && (strsrc != NULL));char* address = strdest;while(n-- > 0)*strdest++ = *strsrc++;return address;}int strcmp(const char* str1, const char* str2){assert((str1 != NULL) && (str2 != NULL);int ret = 0;while (!(ret = (unsigned char*)*str1 - (unsigned char*)*str2) && (*str2)) {str1++;str2++;}if (ret > 0)ret = 1;else if (ret < 0)ret = -1;return ret;}int strlen(const char* str){assert(str != NULL);int len = 0;while ('\0' != *str++)len++;return len;}类string的构造函数string::string(const char* str){if(str == NULL){m_data = new char[1];*m_data = '\0';}else{int length = strlen(str);m_data = new char[str + 1];strcpy(m_data, str);}}string 的析构函数string::~string(){delete [] m_data;}string 的拷贝构造函数string ::string(const string& other){int len = strlen(other.m_data);m_data = new char[len + 1];strcpy(m_data, other.m_data);}string 的赋值函数string& string::operator=(const string& other) {if (this == &other)return *this;delete [] m_data;int len = strlen(other.m_data);m_data = new char[len + 1];strcpy(m_data, other.m_data);return *this;}不用任何局部和全局变量实现int strlen(char *a)int strlen(char *a) {if('\0' == *a)return 0;elsereturn 1 + strlen(a + 1);}1)sizeof相关系列问题2)const相关系列问题3)大量林锐书的习题,以及各种变种这三个几乎是每次必出现,下面的这些是程序相关题,很多都是以前有讨论过的1)求出相似度的算法.2)写出二分查找的代码.int binary_search(int* arr, int key, int n){int low = 0;int high = n - 1;int mid;while (low <= high){mid = (high + low) / 2;if (arr[mid] > k)high = mid - 1;else if (arr[mid] < k)low = mid + 1;elsereturn mid;}return -1;}3)写出在母串中查找子串出现次数的代码.*4)写出快速排序或者某种排序算法代码出现次数相当频繁5)写出查找从一个集合中输出所有子集合的算法.6)实现strcpy函数char* strcpy(char* dest, const char* src){assert((dest != NULL) && (src != NULL));char* address = dest;while ('\0' != (*dest++ = *src++));return address;}出现次数相当频繁7)实现strcmp函数int mystrcmp(const char* str1, const char* str2){assert((str1 != NULL) && (str2 != NULL));int ret = 0;while (!(ret = *(unsigned char*)str1 - *(unsigned char*)str2) && *str2) {str1++;str2++;}if (ret > 0)ret = 1;else if (ret < 0)ret = -1;return ret;}出现次数相当频繁8)将一个单链表逆序struct test{int number;double score;test* next;}void reverse(test*& head){test* pe = head;test* ps = head->next;while(ps != NULL){pe->next = ps->next;ps->next = head;head = ps;ps = pe->next;}}9)循环链表的节点对换和删除。
1.static有什么用途?(请至少说明两种)1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。
它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。
那就是,这个函数被限制在声明它的模块的本地范围内使用2.引用与指针有什么区别?1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
3) 不存在指向空值的引用,但是存在指向空值的指针。
3.描述实时系统的基本特性在特定时间内完成特定的任务,实时性与可靠性。
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?全局变量储存在静态数据库,局部变量在堆栈。
5.什么是平衡二叉树?左右子树都是平衡二叉树且左右子树的深度差值的绝对值不大于1。
6.堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。
7.什么函数不能声明为虚函数?constructor函数不能声明为虚函数。
8.冒泡排序算法的时间复杂度是什么?时间复杂度是O(n^2)。
9.写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)10.Internet采用哪种网络协议?该协议的主要层次结构?Tcp/Ip协议主要层次结构为:应用层/传输层/网络层/数据链路层/物理层。
11.Internet物理地址和IP地址转换采用什么协议?ARP (Address Resolution Protocol)(地址解析協議)12.IP地址的编码分为哪俩部分?IP地址由两部分组成,网络号和主机号。
不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
13.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。
写出C程序。
循环链表,用取余操作做14.不能做switch()的参数类型是:switch的参数不能为实型。
1. 以下三条输出语句分别输出什么?[C易]char str1[] = "abc";char str2[] = "abc";const char str3[] = "abc";const char str4[] = "abc";const char* str5 = "abc";const char* str6 = "abc";cout << boolalpha << ( str1==str2 ) << endl; // 输出什么?cout << boolalpha << ( str3==str4 ) << endl; // 输出什么?cout << boolalpha << ( str5==str6 ) << endl; // 输出什么?文章出自/2. 非C++内建型别A 和B,在哪几种情况下B能隐式转化为A?[C++中等] 答:a. class B : public A { ……} // B公有继承自A,可以是间接继承的b. class B { operator A( ); } // B实现了隐式转化为A的转化c. class A { A( const B& ); } // A实现了non-explicit的参数为B(可以有其他带默认值的参数)构造函数d. A& operator= ( const A& ); // 赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个3. 以下代码中的两个sizeof用法有问题吗?[C易]void UpperCase( char str[] ) // 将str 中的小写字母转换成大写字母{for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++I )if( 'a'<=str[i] && str[i]<='z' )str[i] -= ('a'-'A' );}char str[] = "aBcDe";cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;UpperCase( str );cout << str << endl;4. 以下代码有什么问题?[C难]void char2Hex( char c ) // 将字符以16进制表示{char ch = c/0x10 + '0'; if( ch > '9' ) ch += ('A'-'9'-1);char cl = c%0x10 + '0'; if( cl > '9' ) cl += ('A'-'9'-1);cout << ch << cl << ' ';}char str[] = "I love 中国";for( size_t i=0; i<strlen(str); ++I )char2Hex( str[i] );cout << endl;5. 以下代码有什么问题?[C++易]struct Test{Test( int ) {}Test() {}void fun() {}};void main( void ){Test a(1);a.fun();Test b();b.fun();}6. 以下代码有什么问题?[C++易]cout << (true?1:"1") << endl;7. 以下代码能够编译通过吗,为什么?[C++易] unsigned int const size1 = 2;char str1[ size1 ];unsigned int temp = 0;cin >> temp;unsigned int const size2 = temp;char str2[ size2 ];8. 以下代码中的输出语句输出0吗,为什么?[C++易] struct CLS{int m_i;CLS( int I ) : m_i(i) {}CLS(){CLS(0);}};CLS obj;cout << obj.m_i << endl;9. C++中的空类,默认产生哪些类成员函数?[C++易]答:class Empty{public:Empty(); // 缺省构造函数Empty( const Empty& ); // 拷贝构造函数~Empty(); // 析构函数Empty& operator=( const Empty& ); // 赋值运算符Empty* operator&(); // 取址运算符const Empty* operator&() const; // 取址运算符const};10. 以下两条输出语句分别输出什么?[C++难]float a = 1.0f;cout << (int)a << endl;cout << (int&)a << endl;cout << boolalpha << ( (int)a == (int&)a ) << endl; // 输出什么?Float b = 0.0f;cout << (int)b << endl;cout << (int&)b << endl;cout << boolalpha << ( (int)b == (int&)b ) << endl; // 输出什么?11. 以下反向遍历array数组的方法有什么错误?[STL易]vector array;array.push_back( 1 );array.push_back( 2 );array.push_back( 3 );for( vector::size_type i=array.size()-1; i>=0; --I ) // 反向遍历array数组{cout << array[i] << endl;}12. 以下代码有什么问题?[STL易]typedef vector IntArray;IntArray array;array.push_back( 1 );array.push_back( 2 );array.push_back( 2 );array.push_back( 3 );// 删除array数组中所有的2for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor ){if( 2 == *itor ) array.erase( itor );}13. 写一个函数,完成内存之间的拷贝。
[考虑问题是否全面]答:void* mymemcpy( void *dest, const void *src, size_t count ){char* pdest = static_cast<char*>( dest );const char* psrc = static_cast<const char*>( src );if( pdest>psrc && pdest<psrc+cout ) 能考虑到这种情况就行了{for( size_t i=count-1; i!=-1; --I )pdest[i] = psrc[i];}else{for( size_t i=0; i<count; ++I )pdest[i] = psrc[i];}return dest;}int main( void ){char str[] = "0123456789";mymemcpy( str+1, str+0, 9 );cout << str << endl;system( "Pause" );return 0;}本试题仅用于考查C++/C程序员的基本编程技能。