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