还剩8页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
上海贝尔笔试题上海贝尔笔试题上海贝尔聘请程序员,笔试时通常都是考以下这些题目,有意应聘该公司的朋友们,要多加留意了,上海贝尔笔试题关于C语言的几个程序题
一、请填写BOOL,float,指针变量与〃零值’比较的if语句10分请写出BOOL flag与〃零值’比较的if语句3分标准答案ifflag if!flag如下写法均属不良风格,不得分if flag==TRUEif flag==1if flag==FALSEif flag==0请写出float x与〃零值’比较的if语句4分标准答案示例const floatEPSINON=
0.00001;if x=-EPSINON x=EPSINON不行将浮点变量用〃二二或〃!=与数字比较,应当设法转化成〃二或〃二此类更多相关的((笔试题)目)文章推举,大家敬请连续阅读电子(商务英语)笔试题厦新笔试题联合汽车笔试题文档内容到此结束,欢迎大家下载、修改、丰富并分享给更多有需要的人形式如下是错误的写法,不得分if x二二
0.0if x!=
0.0请写出char*p与〃零值’比较的if语句3分标准答案if p—NULLif p!=NULL如下写法均属不良风格,不得分if p-0if p!=0if pif!
二、以下为Windows NT下的32位C++程序,请计算sizeof的值10分char str[]=Hello;char*p=str;int n=10;请计算sizeof str=62分sizeofp=42分sizeofn=42分void Funcchar str
[100]请计算sizeofstr=42分void*p=malloc
(100);请计算sizeof(p)=4(2分)
三、简答题(25分)
1、头文件中的ifndef/define/endif干什么用?(5分)答防止该头文件被重复引用2ttinclude和ttinclude^filename,h5有什么区分?(5分)答对于#include,编译器从标准库路径开头搜寻filename,h对于#include filename,h,编译器从用户的工作路径开头搜寻filename,h
3、const有什么用途?(请至少说明两种)(5分)答
(1)可以定义const常量
(2)const可以修饰函数的参数、返回值,甚至函数的定义体被const修饰的东西都受到强制爱护,可以预防意外的变动,能提高程序的健壮性
4、在C++程序中调用被C编译器编译后的函数,为什么要加extern C(5分)答C++语言支持函数重载,C语言不支持函数重载函数被C++编译后在库中的名字与C语言的不同假设某个函数的原型为void foo(int x,int y);该函数被C编译器编译后在库中的名字为_f,而C++编译器则会产生像_foo_int_in t之类的名字C++供应了C连接交换指定符号extern来解决名字匹配问题
5、请简述以下两个for循环的优缺点5分for i=0;iN;i++if conditionDoSomethingO;elseDoOtherthing;if conditionfor i=0;iN;i++DoSomethingO;else fori=0;iN;i++DoOtherthing;优点程序简洁缺点多执行了N-1次规律推断,并且打断了循环〃流水线作业,使得编译器不能对循环进行优化处理,降低了效率优点循环的效率高缺点程序不简洁
四、有关内存的思索题每小题5分,共20分void GetMemorychar*p p=char*malloc100;}void Testvoidchar*str=NULL;GetMemorystr;strcpystr,hello world;printf str;请问运行Test函数会有什么样的结果?答程序崩溃由于GetMemory并不能传递动态内存,Test函数中的str始终都是NULLstrcpy str,hello world;将使程序崩溃char*GetMemoryvoidchar p[]=hello world;return p;}void Testvoidchar*str=NULL;str=GetMemory;printf str;}请问运行Test函数会有什么样的结果?答可能是乱码,资料共享平台《上海贝尔笔试题》https://.unjs o由于GetMemory返回的是指向〃栈内存’的指针,该指针的地址不是NULL,但其原现的内容已经被清除,新内容不行知void GetMemory2char**p,int num*p=char*mallocnum;}void Testvoidchar*str=NULL;GetMemorystr,100;strcpystr,hello;printf str;}请问运行Test函数会有什么样的结果?答1能够输出hello2内存泄漏void Testvoidchar*str=char*malloc100;strcpystr,hello;freestr;ifstr!=NULL{strcpystr,world;printf str;}}请问运行Test函数会有什么样的结果?答篡改动态内存区的内容,后果难以预料,特别危急由于free str;之后,str成为野指针,if str!=NULL语句不起作用
五、编写strcpy函数10分已知strcpy函数的原型是char*strcpychar*strDest,const char*strSrc;其中strDest是目的字符串,strSrc是源字符串1不调用C++/C的字符串库函数,请编写函数strcpychar*strcpy char*strDest,const char*strSrc;assert strDest!=NULL strSrc!=NULL;//2分char address=strDest;//2分while*strDest++=*strSrc++!=\0//2分NULL;return address;〃2分2strcpy能把strSrc的内容复制到strDest,为什么还要char*类型的返回值?答为了实现链式表达式〃2分例如int length=strlen strcpystrDest,“hello world;
六、编写类String的构造函数、析构函数和赋值函数25分已知类String的原型为class Stringpublic:String constchar*str=NULL;//一般构造函数String const String other;//拷贝构造函数Stringvoid;//析构函数〜String operate=const Stringother;//赋值函数private:char*m_data;//用于保存字符串};请编写String的上述4个函数标准答案//String的析构函数String::^Stringvoid〃3分delete[]mdata;//由于m_data是内部数据类型,也可以写成delete m data;//String的一般构造函数String::Stringconst char*str〃6分if str==NULL{m data=new char[l];//若能加NULL推断则更好*m_data=\0;else int length=strlenstr;m_data=new char[length+1];//若能加NULL推断则更好strcpym_data,str;}}//拷贝构造函数String::Stringconst Stringother〃3分int length=strlenother.m_data;m data=new char[length+1];//若能加NULL推断则更好strcpym_data,other.m_data;//赋值函数String String::operate=constStringother//13分//1检查自赋值〃4分if this二二otherreturn*this;//2释放原有的内存资源〃3分delete[]m_data;//3安排新的内存资源,并复制内容〃3分intlength=strlenother.m_data;mdata=new char[length+1];//若能加NULL推断则更好strcpym data,other.m_data;//4返回本对象的引用〃3分。