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. 全国计算机一级考试试题大题,2016年全国计算机一级考试试题汇集

    2016年全国计算机一级考试试题汇集 2016上半年的计算机开始明天就要开始了,同学们复习得怎么样了呢?下面yjbys小编为大家准备了最新一级计算考试试题,希望对大家有所帮助! 一.单选题练习 3.用 ...

  2. Java 面试题大集合,2019最新最常见面试题加答案

    原文地址:https://blog.csdn.net/zl1zl2zl3/article/details/88048480 又到一年跳槽季,课下不准备,面试徒伤悲. 本文汇总了常见面试题及面试技巧,让 ...

  3. c语言关于continue的题,10道c语言基础题1、C语言的跳转语句中,对于break和continue说法正确的是_______. A、contin...

    10道c语言基础题1.C语言的跳转语句中,对于break和continue说法正确的是_______. A.contin 10道c语言基础题 1.C语言的跳转语句中,对于break和continue说 ...

  4. 全国计算机一级考试试题大题,全国计算机等级考试一级考试练习(新大纲)试题及答案...

    一.选择题 1.在计算机领域中通常用MIPS来描述______. A.计算机的运算速度 B.计算机的可靠性 C.计算机的可运行性 D.计算机的可扩充性 2.微型计算机存储系统中,PROM是______ ...

  5. 360公司2016校园招聘笔试题大题一

    题意 大概是说,输入多行,每行一个数,然后分解成素数相乘的形式,并以7段数码管的显示方式打印. 示例 注意点 分解的时候,可能有超过9的素数因子,比如13,需要转换成1和3进行打印 代码 import ...

  6. c语言作业的搜题软件下载,C语言搜题神器下载-C语言搜题神器秒出答案下载 安卓版 v2.1.7- 游娱下载站...

    Tags: 学习 教育 C语言搜题神器是一款手机端在线学习平台,可以帮助用户提供海量技术题库外,还涵盖了求职面试经验和技术干货为你提供,让你C语言随时学习无忧.同时除去以上学习内容外,还可支持刷题和编 ...

  7. 408计算机组成原理大题方向,2019考研408计算机组成原理选择题及答案(36)

    2019考研408计算机组成原理选择题及答案(36) 2018-03-20 17:08 | 考研集训营 2019考研计算机的考生现阶段需要开始第一轮专业课备考啦!尤其是报考统考计算机(408代码)的学 ...

  8. c语言考试 程序填空题,计算机二级C语言程序填空题练习题

    计算机二级C语言程序填空题练习题 导语:为帮助同学们更好更有准备地复习计算机二级C语言,小编整理了计算机二级C语言程序填空题练习题,一起来测试一下吧: 程序填空题 下列给定程序中,函数fun的功能是: ...

  9. 北航c语言程序设计大一期末题库,北航2016C语言|程序设计题七

    七.程序设计题(本题15分) 字符串处理函数strmap(s1,s2)可以比较两个字符串的大小,其字符的大小是以ASCII码表上的顺序决定的.该函数首先将s1第一个字符值减去s2的第一个字符值,若相差 ...

  10. 【c语言训练】大,小写问题,【C语言训练】大、小写问题 (C语言代码)

    #include int main() { char c; while((c=getchar())&&!= '\n') { if(c>='A' && c<= ...

最新文章

  1. Winform窗体初始化Combox控件并模糊查找内容
  2. [InnoDB系列] -- SHOW INNODB STATUS 探秘
  3. 【Alertmanager】腾讯企业邮箱配置
  4. java cdi是什么意思_Java EE CDI的真正好处
  5. 如何给开源项目提过 PR 呢?其实很简单
  6. vue中如何使用vi-for限制遍历的条数?只查询前三条、查询4-6条怎么实现?
  7. 如何清理和维护计算机,电脑的优化与维护操作教程
  8. c语言的学生理系统,C语言学习系统的教程
  9. GenyMotion 配合 Android Studio 的安装
  10. 基于JAVASCRIPT操作XML的无刷新分页
  11. fiddler 查看接口响应时间
  12. win10和ubuntu双系统,切换优先启动
  13. Android关于libs,jniLibs库的基本使用说明及冲突解决
  14. 超级授权专业版 SuperSU Pro v2.68 简体中文版
  15. No property creategoryType found for type xxx! Did you mean ‘xxx‘?
  16. 智慧高速公路综合服务平台规划方案(附下载)
  17. [总结] 半监督学习方法: 协同训练类协同训练(Co-training)
  18. 跟我一起玩Win32开发
  19. MySQL备份系列--备份方案总结性梳理
  20. pytorch实现 minist 手写体分类任务

热门文章

  1. Web前端开发最常见的八种编程软件
  2. 在注册表里删除没用的服务
  3. Python3自然语言处理(2)——获得文本语料库和词汇资源
  4. Java词法分析器的设计与实现
  5. 数据库内外连接区别?
  6. 怎么更改文件类型/后缀?
  7. C# 根据EXCEL自动生成oracle建表语句
  8. Intellij IDEA 中使用 JUnit4 进行单元测试
  9. mac android手机录屏软件,Mac录屏软件推荐,比Quicktime好用!
  10. 改变音质效果,均衡器、cd播放器、数字解码器哪个更好?为什么?