c语言经典笔试题

上传人:郭** 文档编号:117165798 上传时间:2019-11-18 格式:DOC 页数:10 大小:160.18KB
返回 下载 相关 举报
c语言经典笔试题_第1页
第1页 / 共10页
c语言经典笔试题_第2页
第2页 / 共10页
c语言经典笔试题_第3页
第3页 / 共10页
c语言经典笔试题_第4页
第4页 / 共10页
c语言经典笔试题_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《c语言经典笔试题》由会员分享,可在线阅读,更多相关《c语言经典笔试题(10页珍藏版)》请在金锄头文库上搜索。

1、c语言经典笔试题 引导语:C语言是一种计算机程序设计语言它既具有高级语言的特点又具有汇编语言的特点以下是小编整理的c语言经典笔试题欢迎参考阅读 1.用预处理指令define声明一个常数用以;defineSECONDSPERYEAR(;2.写一个“标准”宏MIN这个宏输入两个参数并;defineMIN(A,B)(A)=;4.嵌入式系统中经常要用到无限循环你样用C;这个问题用几个解决方案;while(1);一些程序员更喜欢如下方案:;for(;);第三个方案是用goto; 1.用预处理指令define声明一个常数用以表明1年中有多少秒(忽略闰年问题) defineSECONDSPERYEAR(60

2、*60*24*365)UL 2.写一个“标准”宏MIN这个宏输入两个参数并返回较小的一个 defineMIN(A,B)(A)=(B)(A):(B) 4.嵌入式系统中经常要用到无限循环你样用C编写死循环呢 这个问题用几个解决方案我首选的方案是: while(1) 一些程序员更喜欢如下方案: for(;) 第三个方案是用goto Loop: . gotoLoop; 5.用变量a给出下面的定义 a)一个整型数(Aninteger) b)一个指向整型数的指针(Apointertoaninteger) c)一个指向指针的的指针它指向的指针是指向一个整型数(Apointertoapointertoanin

3、teger)d)一个有10个整型数的数组(Anarrayof10integers) e)一个有10个指针的数组该指针是指向一个整型数的(Anarrayof10pointerstointegers) f)一个指向有10个整型数数组的指针(Apointertoanarrayof10integers) g)一个指向函数的指针该函数有一个整型参数并返回一个整型数(Apointertoafunctionthattakesanintegerasanargumentandreturnsaninteger) h)一个有10个指针的数组该指针指向一个函数该函数有一个整型参数并返回一个整型数(Anarrayoft

4、enpointerstofunctionsthattakeanintegerargumentandreturnaninteger) 答案是: a)inta;/Aninteger b)int*a;/Apointertoaninteger c)int*a;/Apointertoapointertoaninteger d)inta10;/Anarrayof10integers e)int*a10;/Anarrayof10pointerstointegers f)int(*a)10;/Apointertoanarrayof10integers g)int(*a)(int);/Apointertoafu

5、nctionathattakesanintegerargumentandreturnsaninteger h)int(*a10)(int);/Anarrayof10pointerstofunctionsthattakeanintegerargumentandreturnaninteger 6.关键字static的作用 这个简单的问题很少有人能回答完全在C语言中关键字static有三个明显的作用: 1).在函数体一个被声明为静态的变量在这一函数被调用过程中维持其值不变 2).在模块内(但在函数体外)一个被声明为静态的变量可以被模块内所用函数访问但不能被模块外其它函数访问它是一个本地的全局变量 3

6、).在模块内一个被声明为静态的函数只可被这一模块内的其它函数调用那就是这个函数被限制在声明它的模块的本地范围内使用 7关键字const含意 constinta; intconsta; constint*a; int*consta; intconst*aconst; 前两个的作用是一样a是一个常整型数第三个意味着a是一个指向常整型数的指针(也就是整型数是不可修改的但指针可以)第四个意思a是一个指向整型数的常指针(也就是说指针指向的整型数是可以修改的但指针是不可修改的)最后一个意味着a是一个指向常整型数的常指针(也就是说指针指向的整型数是不可修改的同时指针也是不可修改的)如果应试者能正确回答这些问

7、题那么他就给我留下了一个好印象 8.关键字volatile有什么含意并给出三个不同的例子 一个定义为volatile的变量是说这变量可能会被意想不到地改变这样编译器就不会去假设这个变量的值了精确地说就是优化器在用到这个变量时必须每次都小心地重新读取这个变量的值而不是使用保存在寄存器里的备份下面是volatile变量的几个例子: 1).并行设备的硬件寄存器(如:状态寄存器) 2).一个中断服务子程序中会访问到的非自动变量(Nonautomaticvariables) 3).多线程应用中被几个任务共享的变量 1).一个参数既可以是const还可以是volatile解释为什么 2).一个指针可以是v

8、olatile解释为什么 3).下面的函数有什么错误: intsquare(volatileint*ptr) return*ptr*ptr; Ptr内容可能被修改无法保证两次取得同一个值应该先取出值放入一个变量中然后通过这个变量来计算 9.嵌入式系统总是要用户对变量或寄存器进行位操作给定一个整型变量a写两段代码第一个设置a的bit3第二个清除a的bit3在以上两个操作中要保持其它位不变 defineBIT3(0x16)puts(6):puts(6 13.评价下面的代码片断: unsignedintzero=0; unsignedintpzero=0xFFFF; /*1splementofzer

9、o*/ 14.尽管不像非嵌入式计算机那么常见嵌入式系统还是有从堆(heap)中动态分配内存的过程的那么嵌入式系统中动态分配内存可能发生的问题 主要有三种类型:内存泄露、内存碎片和内存崩溃内存崩溃是内存使用最严重的结果主要原因有数组访问越界、写已经释放的内存、指针计算错误、访问堆栈地址越界等等碎片收集的问题变量的持行时间等等 下面的代码片段的输出为什么 if(ptr=(char*)malloc(0)=NULL) puts(Gotanullpointer); else puts(Gotavalidpointer); 该代码的输出是“Gotavalidpointer” 15.Typedef在C语言中

10、频繁用以声明一个已经存在的数据类型的同义字也可以用预处理器做类似的事例如思考一下下面的例子: definedPSstructs* typedefstructs*tPS; 答案是:typedef更好思考下面的例子: dPSp1,p2; tPSp3,p4; 第一个扩展为 structs*p1,p2; 上面的代码定义p1为一个指向结构的指p2为一个实际的结构这也许不是你想要的第二个例子正确地定义了p3和p4两个指针 16.C语言同意一些令人震惊的结构,下面的结构是合法的如果是它做些什么 inta=5,b=7,c; c=a+b; 上面的代码被处理成: c=a+b; 因此,这段代码持行后a=6,b=7,

11、c=12 17.找错题 试题1: voidtest1() charstring10; char*str1=0432156789; strcpy(string,str1); 试题2: voidtest2() charstring10,str110; inti; for(i=0;i10;i+) str1i=a; strcpy(string,str1); 试题3: voidtest3(char*str1) charstring10; if(strlen(str1)=10) strcpy(string,str1); 解答: 试题1字符串str1需要11个字节才能存放下(包括末尾的?0?)而string只有10个字节的空间strcpy会导致数组越界; 对试题2如果面试者指出字符数组str1不能在数组内结束可以给3分;如果面试者指出strcpy(string,str1)调用使得从str1内

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号