华为c++面试题及答案

上传人:lil****ar 文档编号:288322373 上传时间:2022-05-05 格式:DOC 页数:19 大小:46KB
返回 下载 相关 举报
华为c++面试题及答案_第1页
第1页 / 共19页
华为c++面试题及答案_第2页
第2页 / 共19页
华为c++面试题及答案_第3页
第3页 / 共19页
华为c++面试题及答案_第4页
第4页 / 共19页
华为c++面试题及答案_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《华为c++面试题及答案》由会员分享,可在线阅读,更多相关《华为c++面试题及答案(19页珍藏版)》请在金锄头文库上搜索。

1、华为面试题1一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)请写出 BOOL flag 与“零值”比较的 if 语句。(3分)标准答案:请写出 float x 与“零值”比较的 if 语句。(4分)const float EPSINON = 0.00001;if (x = - EPSINON) & (x =”或“=”此类形式。请写出 char *p 与“零值”比较的 if 语句。(3分)标准答案: if (p = NULL) if (p != NULL)二、以下为Windows NT下的32位C+程序,请计算sizeof的值(10分) char str

2、= “Hello” ; char *p = str ; int n = 10;请计算sizeof (str ) = 6 (2分)sizeof ( p ) = 4 (2分)sizeof ( n ) = 4 (2分)void Func ( char str100)请计算sizeof( str ) = 4 (2分)void *p = malloc( 100 );请计算sizeof ( p ) = 4 (2分)三、简答题(25分)1、头文件中的 ifndef/define/endif 干什么用?(5分)答:防止该头文件被重复引用。2、i nclude 和 i nclude “filename.h” 有

3、什么区别?(5分)答:对于i nclude ,编译器从标准库路径开始搜索 filename.h 对于i nclude “filename.h” ,编译器从用户的工作路径开始搜索 filename.h3、const 有什么用途?(请至少说明两种)(5分)答:(1)可以定义 const 常量 (2)const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。4、在C+ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”? (5分)答:C+语言支持函数重载,C语言不支持函数重载。函数被C+编译后在库中的名字与

4、C语言的不同。假设某个函数的原型为: void foo(int x, int y);该函数被C编译器编译后在库中的名字为_foo,而C+编译器则会产生像_foo_int_int之类的名字。C+提供了C连接交换指定符号extern“C”来解决名字匹配问题。5、请简述以下两个for循环的优缺点(5分)for (i=0; ii+)if (condition) DoSomething();else DoOtherthing();if (condition)for (i=0; ii+) DoSomething();else for (i=0; ii+) DoOtherthing();优点:程序简洁缺点:

5、多执行了N-1次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。优点:循环的效率高缺点:程序不简洁c语言常见笔试题关键词:笔试题int Strcmp(char *str1, char *str2) int i=0; int b=0; while(str1i|str2i) if(str1istr2i) b=1;break; else if(str1istr2i) b=-1;break; i+; return b;1.说出下面这个程序的运行结果,并简要叙述其理由:char buf110=hello;char buf210=hello;if (buf1=buf2

6、)printf(equal!);else printf(not equal!);因为buf1,buf2分配了不同的内存块,而比较的是数组名,实际上是两个分别指向数组起始元素地址的指针。2.指出下面这段程序中存在一些什么问题:int loop,a5;int* p=a;for (loop=0;loop 0) *strdest+ = *strsrc+; return address;int strcmp(const char* str1, const char* str2) assert(str1 != NULL) & (str2 != NULL); int ret = 0; while (!(re

7、t = (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

8、 char1; *m_data = 0; else int length = strlen(str); m_data = new charstr + 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 charlen + 1; strcpy(m_data, other.m_data);string 的赋值函数string& st

9、ring:operator=(const string& other) if (this = &other) return *this; delete m_data; int len = strlen(other.m_data); m_data = new charlen + 1; strcpy(m_data, other.m_data); return *this;不用任何局部和全局变量实现int strlen(char *a)int strlen(char *a) if(0 = *a) return 0; else return 1 + strlen(a + 1);1)sizeof相关系列

10、问题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 k) high = mid - 1; else if (arrmid k) low = mid + 1; else return 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* st

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号