程序员语言面试题.pptx
《程序员语言面试题.pptx》由会员分享,可在线阅读,更多相关《程序员语言面试题.pptx(110页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、100条经典C语言笔试题目n题目来源:题目来源:1、中兴、华为、慧通、英华达、微软亚洲技术中心等中外企业面试、中兴、华为、慧通、英华达、微软亚洲技术中心等中外企业面试题目;题目;2、C语言面试宝典语言面试宝典(林锐林锐高质量编程第三版高质量编程第三版)。n说明:说明:1、部分、部分C语言面试题中可能会参杂部分和语言面试题中可能会参杂部分和C+相关的知识,为了保相关的知识,为了保持题目的灵活性故保留,但选题最终还是会以持题目的灵活性故保留,但选题最终还是会以C语言题目为主体;语言题目为主体;2、以上公司的面试题目已成为国内中小型企业公司出题模板;、以上公司的面试题目已成为国内中小型企业公司出题模
2、板;3、由于本人的能力有限加上时间仓促,本课件肯定存在不足之处,、由于本人的能力有限加上时间仓促,本课件肯定存在不足之处,恳请各位同学批评指正。恳请各位同学批评指正。第第1页页/共共110页页100条经典C语言笔试题目n题目类型题目类型基本数据类型的考察基本数据类型的考察(1-4)数组、指针、内存、结构体常考点数组、指针、内存、结构体常考点(5-28)宏、头文件、关键字的考察宏、头文件、关键字的考察(29-54)程序阅读、改错程序阅读、改错(55-75)编程练习编程练习(76-100)第第2页页/共共110页页100条经典C语言笔试题目n1、请填写、请填写bool,float,指针变量指针变量
3、与与“零值零值”比较的比较的if语句。语句。提示:这里提示:这里“零值零值”可以是可以是0,0.0,FALSE或者或者“空指针空指针”。例。例如如int变量变量n与与“零值零值”比较的比较的if语句为:语句为:if(n=0)if(n!=0)以此类推。以此类推。第第3页页/共共110页页100条经典C语言笔试题目n(1)请写出)请写出boolflag与与“零值零值”比较的比较的if语句:语句:【标准答案标准答案】if(flag)if(!flag)第第4页页/共共110页页100条经典C语言笔试题目n(2)请写出)请写出floatx与与“零值零值”比较的比较的if语句:语句:【标准答案标准答案】c
4、onstfloatEPSINON=0.00001;if(x=-EPSINON)&(x=”或或“0&b0&(*ca|*cb)|(a0&ba|*cb);第第27页页/共共110页页100条经典C语言笔试题目n22、关于内存的思考题(、关于内存的思考题(1)你能看出有什么问题?)你能看出有什么问题?第第28页页/共共110页页100条经典C语言笔试题目n23、关于内存的思考题(、关于内存的思考题(2)你能看出有什么问题?)你能看出有什么问题?第第29页页/共共110页页100条经典C语言笔试题目n25、关于内存的思考题(、关于内存的思考题(3)你能看出有什么问题?)你能看出有什么问题?第第30页页/
5、共共110页页100条经典C语言笔试题目n26、关于内存的思考题(、关于内存的思考题(4)你能看出有什么问题?)你能看出有什么问题?第第31页页/共共110页页100条经典C语言笔试题目n27、关键字关键字volatile有什么含意有什么含意?并给出三个不同的例子。并给出三个不同的例子。【参考答案参考答案】一个定义为一个定义为volatile的变量是说这变量可能会被意想的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取地说就是,优化器在用到这个变量时
6、必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:变量的几个例子:1).并行设备的硬件寄存器(如:状态寄存器)并行设备的硬件寄存器(如:状态寄存器)2).一个中断服务子程序中会访问到的非自动变量一个中断服务子程序中会访问到的非自动变量(Non-automaticvariables)3).多线程应用中被几个任务共享的变量多线程应用中被几个任务共享的变量第第32页页/共共110页页100条经典C语言笔试题目n28、嵌入式系统经常具有要求程序员去访问某特定的内存位置的、嵌入式系统经常具有要求
7、程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为特点。在某工程中,要求设置一绝对地址为0 x67a9的整型变量的的整型变量的值为值为0 xaa66。编译器是一个纯粹的。编译器是一个纯粹的ANSI编译器。写代码去完成编译器。写代码去完成这一任务。这一任务。【参考答案参考答案】这一问题测试你是否知道为了访问一绝对地址把一个这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(整型数强制转换(typecast)为一指针是合法的。这一问题的实)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:现方式随着个人风格不同而不同。典型的类似代码如下:i
8、nt*ptr;ptr=(int*)0 x67a9;*ptr=0 xaa55;第第33页页/共共110页页100条经典C语言笔试题目n29、头文件中的、头文件中的ifndef/define/endif干什么用?干什么用?【标准答案标准答案】防止该头文件被重复引用。防止该头文件被重复引用。第第34页页/共共110页页100条经典C语言笔试题目n30、#include和和#include“filename.h”有什有什么区别?么区别?【标准答案标准答案】对于对于#include,编译器从标准库路径,编译器从标准库路径开始搜索开始搜索filename.h;对于对于#include“filename.h
9、”,编译器从用户的工作路径开始搜索,编译器从用户的工作路径开始搜索filename.h。第第35页页/共共110页页100条经典C语言笔试题目n31、const有什么用途?(请至少说明两种)有什么用途?(请至少说明两种)【标准答案标准答案】:(1)可以定义)可以定义const常量常量(2)const可以修饰函数的参数、返回值,甚至函数的定义体。被可以修饰函数的参数、返回值,甚至函数的定义体。被const修修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。健壮性。第第36页页/共共110页页100条经典C语言笔试题目n32、
10、static有什么用途?(请至少说明两种)有什么用途?(请至少说明两种)【标准答案标准答案】1.限制变量限制变量的作用域(的作用域(static全局变量);全局变量);2.设置变量的存储域(设置变量的存储域(static局部变量)。局部变量)。第第37页页/共共110页页100条经典C语言笔试题目n33、堆栈溢出一般是由什么原因导致的?、堆栈溢出一般是由什么原因导致的?【标准答案标准答案】没有回收垃圾资源。没有回收垃圾资源。第第38页页/共共110页页100条经典C语言笔试题目n34、如何引用一个已经定义过的全局变量?、如何引用一个已经定义过的全局变量?【标准答案标准答案】可以用引用头文件的方
11、式,也可以用可以用引用头文件的方式,也可以用extern关键字,关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变量,如果用引用头文件方式来引用某个在头文件中声明的全局变量,假定你将那个变量写错了,那么在编译期间会报错,如果你用假定你将那个变量写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。会报错,而在连接期间报错。第第39页页/共共110页页100条经典C语言笔试题目n35、全局变量可不可以定义在可被多个、全局变量可不可以定义在可被多个.C文件包含的头文件
12、中?文件包含的头文件中?为什么?为什么?【标准答案标准答案】可以,在不同的可以,在不同的C文件中以文件中以static形式来声明同名全局形式来声明同名全局变量。可以在不同的变量。可以在不同的C文件中声明同名的全局变量,前提是其中文件中声明同名的全局变量,前提是其中只能有一个只能有一个C文件中对此变量赋初值,此时连接不会出错。文件中对此变量赋初值,此时连接不会出错。第第40页页/共共110页页100条经典C语言笔试题目n36、队列和栈有什么区别?、队列和栈有什么区别?【标准答案标准答案】队列先进先出,栈后进先出。队列先进先出,栈后进先出。第第41页页/共共110页页100条经典C语言笔试题目n3
13、7、Heap与与stack的差别。的差别。【标准答案标准答案】Heap是堆,是堆,stack是栈。是栈。Stack的空间由操作系统自动分配的空间由操作系统自动分配/释放,释放,Heap上的空间手动分配上的空间手动分配/释放。释放。Stack空间有限,空间有限,Heap是很大的自由存储区是很大的自由存储区C中的中的malloc函数分配的内存空间即在堆上函数分配的内存空间即在堆上,C+中对应的是中对应的是new操作符。操作符。程序在编译期对变量和函数分配内存都在栈上进行程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过且程序运行过程中函数调用时参数的传递也在栈上进行。程中函数调用时参数的传
14、递也在栈上进行。第第42页页/共共110页页100条经典C语言笔试题目n38、用宏定义写出、用宏定义写出swap(x,y),即交换两数。),即交换两数。【标准答案标准答案】#defineswap(x,y)(x)=(x)+(y);(y)=(x)(y);(x)=(x)(y);第第43页页/共共110页页100条经典C语言笔试题目n39、写一个、写一个“标准标准”宏,这个宏输入两个参数并返回较小的一个。宏,这个宏输入两个参数并返回较小的一个。【标准答案标准答案】#defineMin(X,Y)(X)(Y)?(Y):(X)/结尾没有结尾没有;第第44页页/共共110页页100条经典C语言笔试题目n40、
15、带参宏与带参函数的区别、带参宏与带参函数的区别(至少说出至少说出5点点)?【标准答案标准答案】带参宏带参函数处理时间处理时间编译时编译时运行时运行时参数类型参数类型无无需定义需定义程序长度程序长度变长变长不变不变占用存储空间占用存储空间否否是是运行时间运行时间不占运行时间不占运行时间调用和返回时占调用和返回时占第第45页页/共共110页页100条经典C语言笔试题目n41、关键字、关键字volatile有什么含意?有什么含意?【标准答案标准答案】提示编译器对象的值可能在编译器未监测到的情况下提示编译器对象的值可能在编译器未监测到的情况下改变。改变。第第46页页/共共110页页100条经典C语言笔
16、试题目n42、intmain()intx=3;printf(%d,x);return1;问函数既然不会被其它函数调用,为什么要返回问函数既然不会被其它函数调用,为什么要返回1?【标准答案标准答案】mian中,中,c标准认为标准认为0表示成功,非表示成功,非0表示错误。具体表示错误。具体的值是某种具体出错信息。的值是某种具体出错信息。第第47页页/共共110页页100条经典C语言笔试题目n43、已知一个数组、已知一个数组table,用一个宏定义,求出数据的元素个数。,用一个宏定义,求出数据的元素个数。【标准答案标准答案】#defineNTBL(table)(sizeof(table)/sizeo
17、f(table0)第第48页页/共共110页页100条经典C语言笔试题目n44、A.c和和B.c两个两个c文件中使用了两个相同名字的文件中使用了两个相同名字的static变量变量,编编译的时候会不会有问题译的时候会不会有问题?这两个这两个static变量会保存到哪里(栈还是变量会保存到哪里(栈还是堆或者其他的)堆或者其他的)?【标准答案标准答案】static的全局变量,表明这个变量仅在本模块中有意的全局变量,表明这个变量仅在本模块中有意义,不会影响其他模块。义,不会影响其他模块。他们都放在静态数据区,但是编译器对他们的命名是不同的。他们都放在静态数据区,但是编译器对他们的命名是不同的。如果要使
18、变量在其他模块也有意义的话,需要使用如果要使变量在其他模块也有意义的话,需要使用extern关键字。关键字。第第49页页/共共110页页100条经典C语言笔试题目n45、static全局变量与普通的全局变量有什么区别?全局变量与普通的全局变量有什么区别?【标准答案标准答案】static全局变量只初使化一次,防止在其他文件单元全局变量只初使化一次,防止在其他文件单元中被引用中被引用;第第50页页/共共110页页100条经典C语言笔试题目n46、static局部变量和普通局部变量有什么区别局部变量和普通局部变量有什么区别【标准答案标准答案】static局部变量只被初始化一次,下一次依据上一次局部变
19、量只被初始化一次,下一次依据上一次结果值;结果值;第第51页页/共共110页页100条经典C语言笔试题目n47、static函数与普通函数有什么区别?函数与普通函数有什么区别?【标准答案标准答案】static函数在内存中只有一份,普通函数在每个被调函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝用中维持一份拷贝第第52页页/共共110页页100条经典C语言笔试题目n关于关于45-47的参考文章的参考文章全局变量全局变量(外部变量外部变量)的说明之前再冠以的说明之前再冠以static static 就构成了静态的全局变量。就构成了静态的全局变量。全局变量本身就是静态存储方式,全局变量本身
20、就是静态存储方式,静态全局变量当然也是静态存储方式。静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能在同一源程序的其它源文件中不能使用它。由于静
21、态全局变量的作用域局限于一个源文件内,只能为该源使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。文件内的函数公用,因此可以避免在其它源文件中引起错误。从以上分析可以看出,从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,作用域,限制了它的使用范围。限制了它的使用范围。staticstatic函数与普通函数作用域不同。仅在本文件。只在当前源文件中
22、使函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数用的函数应该说明为内部函数(static)(static),内部函数应该在当前源文件中,内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。中说明,要使用这些函数的源文件要包含这个头文件。第第53页页/共共110页页100条经典C语言笔试题目n48、程序的局部变量存在于、程序的局部变量存在于_中,全局变量存在于中,全局变量存在于_中,动中,动态申请数据存在于态申请数据
23、存在于_中。中。【标准答案标准答案】程序的局部变量存在于程序的局部变量存在于栈栈(stack)中,全局变量存在于中,全局变量存在于静态数据区静态数据区中,动态申请数据存在于中,动态申请数据存在于堆(堆(heap)中。中。第第54页页/共共110页页100条经典C语言笔试题目n49、什么是预编译,何时需要预编译:、什么是预编译,何时需要预编译:【标准答案标准答案】、总是使用不经常改动的大型代码体。、总是使用不经常改动的大型代码体。、程序由多个模块组成,所有模块都使用一组标准的包含文件、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译和相
24、同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。为一个预编译头。第第55页页/共共110页页100条经典C语言笔试题目n50、用两个栈实现一个队列的功能?要求给出算法和思路!、用两个栈实现一个队列的功能?要求给出算法和思路!【参考答案参考答案】设设2个栈为个栈为A,B,一开始均为空一开始均为空.入队入队:将新元素将新元素push入栈入栈A;出队出队:(1)判断栈判断栈B是否为空;是否为空;(2)如果不为空,则将栈如果不为空,则将栈A中所有元素依次中所有元素依次pop出并出并push到栈到栈B;(3)将栈将栈B的栈顶元素的栈顶元素pop出;出;第第56页页/共共110页页10
25、0条经典C语言笔试题目n51、对于一个频繁使用的短小函数、对于一个频繁使用的短小函数,在在C语言中应用什么实现语言中应用什么实现,在在C+中应用什么实现中应用什么实现?【标准答案标准答案】c用宏定义,用宏定义,c+用用inline第第57页页/共共110页页100条经典C语言笔试题目n52、1.用预处理指令用预处理指令#define声明一个常数,用以表明声明一个常数,用以表明1年中有年中有多少秒(忽略闰年问题)多少秒(忽略闰年问题)【参考答案参考答案】#defineSECONDS_PER_YEAR(60*60*24*365)UL第第58页页/共共110页页100条经典C语言笔试题目n53、Ty
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序员 语言 试题
限制150内