c语言常见笔试题及答案

c语言常见笔试题总结c语言笔试题(九) 2006-09-06 Tag: C语言 1. #include “stdio.h“ int main() {int a;int *p;p = *p = 0 x500;a = (int )(*(a = (int )(if(a == (int)p)printf(“equal !\n“);elseprintf(“not equal !\n“); } 请问本程序的输出显示是什么? 答案:输出显示为”equal!” 2. struct {signed int bit0:1;signed int bit1:1;signed int bit2:1;signed int bit3:1;signed int bit4:1;signed int bit5:1;signed int bit6:1;signed int bit7:1; }bits; 请问sizeof(bits)是否是正确的表达式? 请问语句bits mybits; 的定义是否正确?如果不正确,要如何修改上述的结构定义才能使 该语句正确?修改后的结构定义是否会影响sizeof(bits)的正确性?如果正确则该表达式 的值为多少?如果将上述的结构中int类型改为char类型,此时sizeof(bits)的大小为多 少? 答案:1)是正确的表达式,因为sizeof后面的内容可以是类型,也可以是变量。2)该语句的定义不正确,因为此时的bits为一个变量;应该这样修改结构的定义 typedef struct {signed int bit0:1;signed int bit1:1;signed int bit2:1;signed int bit3:1;signed int bit4:1;signed int bit5:1;signed int bit6:1;signed int bit7:1; }bits; 修改后sizeof(bits)表达式依然正确,其值为4;类型改为char后其值为1,注意该值是 在VC环境中的32位程序中得到的值,在不同的编译器其值有可能不同,因此在编程时不能 自己假定类似结构的大小。 3.struct bit{unsigned int a[0]:1,a[1]:1,a[2]:1….a[7]:1;}请问这种写法是否正确?为什么? 答案:不正确,位域中的变量不能是数组。 4. struct a { int x;char y;struct a z; struct a *p; }请问这种定义结构正确否? 如果有问题,问题在哪里? 答案:结构中不能对定义结构本身的非指针变量,如果编译器支持则会导致无限嵌套,因此 一般编译器都会认为struct a是未定义的类型,即使提前声明也不会有任何用处。 5. 什么是可重入函数?C语言中写可重入函数,应注意的事项? 答案:可重入函数是指能够被多个线程“同时”调用的函数,并且能保证函数结果的正确性 的函数。在编写可重入函数时通常要注意如下的一些问题: 尽量不要使用全局变量,静态变量,如果使用了应该注意对变量访问的互斥。通常可以根据 具体的情况采用:信号量机制,关调度机制,关中断机制等方式来保证函数的可重入性。 不要调用不可重入的函数,调用了不可重入的函数会使该函数也变为不可重入的函数。 注意对系统中的临界资源,互斥资源的访问方式,防止使函数成为不可重入的函数。 一般驱动程序都是不可重入的函数,因此在编写驱动程序时一定要注意重入的问题。 6. 简述stack frame 的含义。 答案:stack frame的中文译名为:栈框架,表示函数在栈空间的调用层次,以x86平台的 函数调用为例,通常一个函数编译成汇编程序,都有如下的结构: 其中的leave指令相当于:mov ebp,esp ;pop ebp 各个函数在栈空间的映象为:test1 函数 test2函数 test3函数因此在函数test3中,就可以根据这种栈框架的形式得到函数调用层次上的每个函数的基址 指针,当前栈指针,以及函数调用点等信息。 7. printf (“%d%d\n”,++n, power(2,n)); 其中power(2,n)为实现一定功能的函数 如 2^n 。请问这种表示方法有什么潜在的问题?答案:编译器的不同,对++n 和power(2,n)处理的先后顺序不一样,形成二义性,造成程 序的移植性差,因此最好把++n 写在printf函数外面,以消除二义性。 printf (s); 请问这样的语句有没有问题?(s为一指向有效字符串的指针)答案:没有%的话,可以这样表达,如果有%在s中的话,有意想不到的输出结果。9. 两段代码共存于一个文件,编译时有选择的编译其中的一部分,请问如何实现? 答案:有两种简单的办法可以实现: 在源码中使用条件编译语句,然后在程序文件中定义宏的形式来选择需 要的编译代码。 在源码中使用条件编译语句,然后在编译命令的命令中加入宏定义命令 来实现选择编译。 10.数据结构指针传给函数,函数能访问数据单元,但不能修改实际的内容,如何实现? 答案:定义为指向常量的指针,这样指针所指的数据结构中的内容就不会被改变。如:const 类型 *p 或 类型 const *p 11. 在头文件中定义静态变量,可能产生什么问题? 答案:在使用了该头文件的每个c程序文件中都单独存在一个该静态变量,这样造成空间的 浪费并且很容易引起错误。因此建议不要在头文件中定义任何变量。 12.malloc()与 calloc()的区别? 答案:1)参数上的区别 malloc (size_t size); calloc (size_t n , size_t size); malloc分配一块size大小的内存块,而calloc分配一个n*size大小的内存块2)返回内存块的状态不同 malloc分配的内存块没有被清零,而calloc分配的内存块是清了零的。但是建议在使用内 存时,如果需要初始化,则最好自己按照需要来进行初试化,不要依赖函数的实现说明。 13.寄存器变量可不可以访问其地址?可否是全局变量?在什么场合使用寄存器变量? 答案:这些问题都与编译器的实现有关,建议不要声明全局变量为寄存器变量,即使是局部 变量都最好不要声明其为寄存器变量,现在的编译器在优化时都会较为合理的安排寄存器变 量的使用,而人为的安排有时会造成优化的低效。 14.“\n“ \n 的区别? 答案:前者是一个字符串并且以’/0’结束,而后者只是一个简单的字符。 15.包含预定义头文件 和“ “的区别? 答案:只在指定的目录里寻找被包含文件;“ “先在当前目录下查找 ,再在指定目录下 查找;通常方式用于系统的头文件,而一般用户的头文件用“ “的方式。 16.strunt S_A{int a[10];};void f(){int i;strunt S_A *s_ptr;for (i=0,i<10,i++)

C语言一般考点笔试,c语言常见笔试题及答案相关推荐

  1. java字符串笔试题_五道Java常见笔试题及答案汇总

    1.String和StringBuffer的区别? 答:Java平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据.这个String类提供了数 ...

  2. c语言编程题笔试 博客,【笔试题】C语言:模拟实现strncmp

    [函数原型]int strncmp ( const char * str1, const char * str2, size_t num ); [返回值] 若str1与str2的前n个字符相同,则返回 ...

  3. java web 笔试 题_JavaWeb综合笔试题(带答案).doc

    1.(选择一项) 1 A: B: C: D:2.(选择一项) A: B: C: D: 3.(选择一项) A: B: C: D:4.(选择一项) 4A: B: C: D:5.(选择一项) 5 A: B: ...

  4. Java基础学习总结(74)——Java常见笔试题及答案汇总

    1. 下面哪些是合法的标识符?(ABE )--标识符 A. $persons B. TwoUsers C. *point D. this E. _endline 2. 下面程序运行的结果是( D )- ...

  5. c语言二级考试基础知识,2018年计算机二级考试《C语言》考点:C语言基础知识...

    2017年计算机等级考试已经结束,出国留学网为考生们整理了2018年计算机二级考试<C语言>考点,希望能帮到大家,想了解更多资讯,请关注我们,小编会第一时间更新哦. 2018年计算机二级考 ...

  6. c语言中void f1(),c语言常见笔试题f1ryiedy.doc

    c语言常见笔试题f1ryiedy c语言常见笔试题总结 [1 使用宏] 1.1 #ifdef NDEBUG #define TRACE(S) S #else #define TRACE(S) prin ...

  7. c语言错误 xef代表什么,C语言(次)笔试题含答案【DOC精选】.doc

    C语言(次)笔试题含答案[DOC精选] 第二十二次等级考试 二级(C与C++语言) 笔 试 试 卷 时间: 2005年4月16日 上午 9:00-11:00 第一部分 软件技术基础 (共15分) 一. ...

  8. 【Mysql笔试】-常见笔试题汇总

    Mysql常见笔试题汇总 基础知识 排序的规则? 函数的分类?经常使用的函数? 分组查询注意条件? limit使用方法? 创建表时有什么约束条件? mysql常见数据类型? 增加删除修改表结构 常见约 ...

  9. 嵌入式linux工程师 考试,嵌入式Linux工程师常见笔试题.doc

    嵌入式Linux工程师常见笔试题.doc 这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的. 从 ...

最新文章

  1. OpenCL产业开发链
  2. mvp架构 java_GitHub - AnthonyCoder/MvpForJava: 一个可直接快速引入的 Java 版本的模块化 MVP 框架...
  3. SQLSERVER单表CRUD通用方法
  4. Java异常处理实验原理_Java异常处理原理与原则
  5. Net Core下使用RabbitMQ比较完备两种方案(虽然代码有点惨淡,不过我会完善)
  6. Java实训项目3:GUI学生信息管理系统 - 涉及知识点
  7. CentOS7 基于http服务搭建本地yum仓库
  8. hibernate入门学习(更新中)
  9. python查看网络连接_python – 检查网络连接
  10. linux diff 补丁,Linux中diff、补丁的用法及介绍
  11. 命令行Terminal增加proxy开关
  12. 安装包制作工具 SetupFactory使用 详解
  13. 【Get深一度】信号处理(三)——3db带宽
  14. 终身受用的十大经典理论
  15. 去年我国出生率跌破1%,有什么影响?
  16. 2020移动apn接入点哪个快_手机WiFi网速度太慢?教你一招网速翻倍好用,比5G还快...
  17. 江兴华老师在武汉讲座
  18. 2023考研常识知识之五类数学有哪些区别
  19. PHPExcel 操作
  20. 一种windows下简单的USB摄像头图像获取方式

热门文章

  1. 2.8 mm / 4 mm / 6 mm / 8 mm 焦距的镜头分别能监控多大范围?
  2. 白帽专访丨大家好,我们是渊龙Sec安全团队
  3. win10找回图片查看器
  4. 世界公认的健康水果大排名!第一名居然是……
  5. C语言---函数介绍详解
  6. 我开发了一款软件,完成了舔狗的绝地反杀(代码开源)!
  7. python面试题搜集
  8. 远程监控系统中关于TP-Link路由器的设置方法
  9. CRM下午茶(九)-老客户挽回
  10. C++ 设计模式 适配器模式(中英翻译, Win-Linux翻译)