贝尔的笔试题目范文

上传人:郭** 文档编号:116140272 上传时间:2019-11-16 格式:DOC 页数:13 大小:244.18KB
返回 下载 相关 举报
贝尔的笔试题目范文_第1页
第1页 / 共13页
贝尔的笔试题目范文_第2页
第2页 / 共13页
贝尔的笔试题目范文_第3页
第3页 / 共13页
贝尔的笔试题目范文_第4页
第4页 / 共13页
贝尔的笔试题目范文_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《贝尔的笔试题目范文》由会员分享,可在线阅读,更多相关《贝尔的笔试题目范文(13页珍藏版)》请在金锄头文库上搜索。

1、贝尔的笔试题目范文 一、请填写BOOL,float,指针变量与“零值”比较的if语句(10分) 请写出BOOLflag与“零值”比较的if语句(3分) 标准答案: if(flag) if(flag)如下写法均属不良风格不得分 if(flag=TRUE) if(flag=1) if(flag=FALSE) if(flag=0) 请写出floatx与“零值”比较的if语句(4分) 标准答案示例: constfloatEPSINON=0.00001; if(x=EPSINON)(x=”或“=”此类 形式 如下是错误的写法不得分 if(x=0.0) if(x=0.0) 请写出char*p与“零值”比较

2、的if语句(3分) 标准答案: if(p=NULL) if(p=NULL)如下写法均属不良风格不得分 if(p=0) if(p=0) if(p) if() 二、以下为WindowsNT下的32位C+程序请计算sizeof的值(10分) charstr=“Hello”; char*p=str; intn=10; 请计算 sizeof(str)=6(2分) sizeof(p)=4(2分) sizeof(n)=4(2分)voidFunc(charstr100) 请计算 sizeof(str)=4(2分) void*p=malloc(100); 请计算 sizeof(p)=4(2分) 三、简答题(25

3、分) 1、头文件中的ifndef/define/endif干什么用?(5分) 答:防止该头文件被重复引用 2、include?和include“filename.h”有什么区别?(5分) 答:对于include?编译器从标准库路径开始搜索filename.h 对于include“filename.h”编译器从用户的工作路径开始搜索filename.h 3、const有什么用途?(请至少说明两种)(5分) 答:(1)可以定义const常量 (2)const可以修饰函数的参数、返回值甚至函数的定义体被const修饰的东西都 受到 强制保护可以预防意外的变动能提高程序的健壮性 4、在C+程序中调用被

4、C编译器编译后的函数为什么要加extern“C”?(5分 ) 答:C+语言支持函数重载C语言不支持函数重载函数被C+编译后在库中的名字与 C语言 的不同假设某个函数的原型为:voidfoo(intx,inty); 该函数被C编译器编译后在库中的名字为foo而C+编译器则会产生像foointint 之类的 名字 C+提供了C连接交换指定符号extern“C”来解决名字匹配问题 5、请简述以下两个for循环的优缺点(5分) for(i=0;i if(condition) DoSomething(); else DoOtherthing(); if(condition) for(i=0;i DoSo

5、mething(); else for(i=0;i DoOtherthing(); 优点:程序简洁 缺点:多执行了N1次逻辑判断并且打断了循环“流水线”作业使得编译器不能 对循环进行优化处理降低了效率优点:循环的效率高 缺点:程序不简洁 四、有关内存的思考题(每小题5分共20分) voidGetMemory(char*p) p=(char*)malloc(100); voidTest(void) char*str=NULL; GetMemory(str); strcpy(str,helloworld); printf(str); 请问运行Test函数会有什么样的结果? 答:程序崩溃 因为Get

6、Memory并不能传递动态内存 Test函数中的str一直都是NULL strcpy(str,helloworld);将使程序崩溃 char*GetMemory(void) charp=helloworld; returnp; voidTest(void) char*str=NULL; str=GetMemory(); printf(str); 请问运行Test函数会有什么样的结果? 答:可能是乱码 因为GetMemory返回的是指向“栈内存”的指针该指针的地址不是NULL但其原现 的 内容已经被清除新内容不可知 voidGetMemory2(char*p,intnum) *p=(char*)

7、malloc(num); voidTest(void) char*str=NULL; GetMemory(str,100); strcpy(str,hello); printf(str); 请问运行Test函数会有什么样的结果? 答: (1)能够输出hello (2)内存泄漏 voidTest(void) char*str=(char*)malloc(100); strcpy(str,“hello”); free(str); if(str=NULL) strcpy(str,“world”); printf(str); 请问运行Test函数会有什么样的结果? 答:篡改动态内存区的内容后果难以预料

8、非常危险 因为free(str);之后str成为野指针 if(str=NULL)语句不起作用 五、编写strcpy函数(10分) 已知strcpy函数的原型是 char*strcpy(char*strDest,constchar*strSrc); 其中strDest是目的字符串strSrc是源字符串 (1)不调用C+/C的字符串库函数请编写函数strcpy char*strcpy(char*strDest,constchar*strSrc); assert(strDest=NULL)(strSrc=NULL);/2分 char*address=strDest;/2分 while(*strDes

9、t+=*strSrc+)=)/2分 NULL; returnaddress;/2分 (2)strcpy能把strSrc的内容复制到strDest为什么还要char*类型的返回值? 答:为了实现链式表达式/2分 例如intlength=strlen(strcpy(strDest,“helloworld”); 六、编写类String的构造函数、析构函数和赋值函数(25分) 已知类String的原型为: classString public: String(constchar*str=NULL);/普通构造函数 String(constStringother);/拷贝构造函数 String(void

10、);/析构函数 Stringoperate=(constStringother);/赋值函数 private: char*mdata;/用于保存字符串 ; 请编写String的上述4个函数 标准答案: /String的析构函数 String:String(void)/3分 deletemdata; /由于mdata是内部数据类型也可以写成deletemdata; /String的普通构造函数 String:String(constchar*str)/6分 if(str=NULL) mdata=newchar1;/若能加NULL判断则更好 *mdata=; else intlength=strl

11、en(str); mdata=newcharlength+1;/若能加NULL判断则更好 strcpy(mdata,str); /拷贝构造函数 String:String(constStringother)/3分 intlength=strlen(other.mdata); mdata=newcharlength+1;/若能加NULL判断则更好 strcpy(mdata,other.mdata); /赋值函数 StringString:operate=(constStringother)/13分 /(1)检查自赋值/4分 if(this=other) return*this; /(2)释放原有的内存资源/3分 deletemdata

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

当前位置:首页 > 办公文档 > 工作范文

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