程序员笔试:c语言

程序员笔试:c语言

ID:33925843

大小:358.55 KB

页数:45页

时间:2019-03-01

程序员笔试:c语言_第1页
程序员笔试:c语言_第2页
程序员笔试:c语言_第3页
程序员笔试:c语言_第4页
程序员笔试:c语言_第5页
资源描述:

《程序员笔试: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,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。