网站大量收购闲置独家精品文档,联系QQ:2885784924

C++ 程序设计员面试试题.docxVIP

C++ 程序设计员面试试题.docx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共29页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

C/C++程序设计员面试试题

C/C++程序设计员面试试题1

1.找错题

试题1:

voidtest1()

{

charstring[10];

char*str1=;

strcpy(string,str1);

}

试题2:

voidtest2()

{

charstring[10],str1[10];

inti;

for(i=0;i

{

str1=a;

}

strcpy(string,str1);

}

2.内功题

试题1:分别给出BOOL,int,float,指针变量与“零值”比较的if语句(假设变量名为var)

【解答】

BOOL型变量:if(!var)

int型变量:if(var==0)

float型变量:

constfloatEPSINON=0.00001;

if((_=-EPSINON)(_

指针变量:if(var==NULL)

【剖析】

考查对0值判断的“内功”,BOOL型变量的0判断完全可以写成if(var==0),而int型变量也可以写成if(!var),指针变量的判断也可以写成if(!var),上述写法虽然程序都能正确运行,但是未能清晰地表达程序的意思。

一般的,如果想让if判断一个变量的“真”、“假”,应直接使用if(var)、if(!var),表明其为“逻辑”判断;如果用if判断一个数值型变量(short、int、long等),应该用if(var==0),表明是与0进行“数值”上的比较;而判断指针则适宜用if(var==NULL),这是一种很好的编程习惯。

浮点型变量并不精确,所以不可将float变量用“==”或“!=”与数字比较,应该设法转化成“=”或“

试题2:以下为WindowsNT下的32位C++程序,请计算sizeof的值

voidFunc(charstr[100])

{

sizeof(str)=?

}

void*p=malloc(100);

sizeof(p)=?

【解答】

sizeof(str)=4

sizeof(p)=4

【剖析】

Func(charstr[100])函数中数组名作为函数形参时,在函数体内,数组名失去了本身的内涵,仅仅只是一个指针;在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。

数组名的本质如下:

(1)数组名指代一种数据结构,这种数据结构就是数组;

例如:

charstr[10];

cout

输出结果为10,str指代数据结构char[10]。

(2)数组名可以转换为指向其指代实体的指针,而且是一个指针常量,不能作自增、自减等操作,不能被修改;

charstr[10];

str++;//编译出错,提示str不是左值

(3)数组名作为函数形参时,沦为普通指针。

WindowsNT32位平台下,指针的长度(占用内存的大小)为4字节,故sizeof(str)、sizeof(p)都为4。

试题3:写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。另外,当你写下面的代码时会发生什么事?

least=MIN(*p++,b);

解答:

#defineMIN(A,B)((A)

MIN(*p++,b)会产生宏的副作用

剖析:

这个面试题主要考查面试者对宏定义的使用,宏定义可以实现类似于函数的功能,但是它终归不是函数,而宏定义中括弧中的“参数”也不是真的参数,在宏展开的时候对“参数”进行的是一对一的替换。

程序员对宏定义的使用要非常小心,特别要注意两个问题:

(1)谨慎地将宏定义中的“参数”和整个宏用用括弧括起来。所以,严格地讲,下述解答:

#defineMIN(A,B)(A)

#defineMIN(A,B)(A

都应判0分;

(2)防止宏的副作用。

宏定义#defineMIN(A,B)((A)

((*p++)

这个表达式会产生副作用,指针p会作三次++自增操作。

除此之外,另一个应该判0分的解答是:

#defineMIN(A,B)((A)

这个解答在宏定义的后面加“;”,显示编写者对宏的概念模糊不清,只能被无情地判0分并被面试官淘汰。

试题4:为什么标准头文件都有类似以下的结构?

#ifndef__INCv_Worksh

#define__INCv_Wor

文档评论(0)

WorkReport + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档