欢迎来到天天文库
浏览记录
ID:21740391
大小:47.50 KB
页数:9页
时间:2018-10-24
《1-c++贝尔笔试题和答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
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<=EPSINON)
2、不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。如下是错误的写法,不得分。 if(x==0.0) if(x!=0.0) 请写出char*p与“零值”比较的if语句。(3分) 标准答案: if(p==NULL)if(p!=NULL)如下写法均属不良风格,不得分。 if(p==0) if(p!=0) if(p) if(!p) 二、以下为WindowsNT下的32位C++程序,请计算sizeof的值(10分) charstr[]=“Hello”; char*p=str; intn=10
3、; 请计算 sizeof(str)=6(2分) sizeof(p)=4(2分)sizeof(n)=4(2分)voidFunc(charstr[100]) { 请计算 sizeof(str)=4(2分) } void*p=malloc(100); 请计算 sizeof(p)=4(2分) 三、简答题(25分) 1、头文件中的ifndef/define/endif干什么用?(5分) 答:防止该头文件被重复引用。 2、#include?和#include“filename.h”有什么区别?(5分) 答:对于#include
4、?,编译器从标准库路径开始搜索filename.h 对于#include“filename.h”,编译器从用户的工作路径开始搜索filename.h 3、const有什么用途?(请至少说明两种)(5分) 答:(1)可以定义const常量 (2)const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。 4、在C++程序中调用被C编译器编译后的函数,为什么要加extern“C”?(5分) 答:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库
5、中的名字与C语言的不同。假设某个函数的原型为:voidfoo(intx,inty);该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。C++提供了C连接交换指定符号extern“C”来解决名字匹配问题。 5、请简述以下两个for循环的优缺点(5分) for(i=0;i<N;i++) { if(condition) DoSomething(); else DoOtherthing(); } if(condition) { for(i=0;i<N;i++) DoSome
6、thing(); } else { for(i=0;i<N;i++) DoOtherthing(); } 优点:程序简洁 缺点:多执行了N-1次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。优点:循环的效率高 缺点:程序不简洁 四、有关内存的思考题(每小题5分,共20分) voidGetMemory(char*p) { p=(char*)malloc(100); } voidTest(void) { char*str=NULL; GetMemory(str); str
7、cpy(str,"helloworld"); printf(str); } 请问运行Test函数会有什么样的结果? 答:程序崩溃。 因为GetMemory并不能传递动态内存, Test函数中的str一直都是NULL。 strcpy(str,"helloworld");将使程序崩溃。 char*GetMemory(void) { charp[]="helloworld"; returnp; } voidTest(void) { char*str=NULL; str=GetMemory(); printf(str)
8、; } 请问运行Test函数会有什么样的结果? 答:可能是乱码。 因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是NULL
此文档下载收益归作者所有