




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言测试题 参考答案(110题每题9分,1116题每题10分,共计150分。请在答题纸上注明姓名及开始、结束时间)1. 举例说明关键字static、const和volatile尽可能多的作用。static关键字至少有下列几个作用:1). 函数体内static变量的作用范围为该函数体,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;2). 在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;3). 在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;const关键字至少有下列几个作用:1). 欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;2). 对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;3). 在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;volatile关键字至少有下列几个作用:一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1). 并行设备的硬件寄存器(如:状态寄存器);2). 一个中断服务子程序中会访问到的非自动变量;3). 多线程应用中被几个任务共享的变量;2. 请描述内存的分配方式及其区别,并编写一个函数为整型二维数组动态申请内存。1). 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。2). 在栈上分配。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元 自动被释放。栈内存分配运算内置于处理器的指令集。3). 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc申请任意多少的内存,程序员自己负责在何时用free释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。int get_2d_mem (int *array2D, int rows, int columns)int i;if (*array2D = (int*)malloc(rows * sizeof(int*) = NULL)return -1; /* not enough memory. */if (*array2D)0 = (int* )malloc(rows * columns * sizeof(int ) = NULL)return -1; /* not enough memory. */for (i=1 ; inext,并随后删除原next指向的节点。6. 在不使用第三个变量的情况下,用宏定义写出SWAP(x, y)。#define SWAP(x, y)x = x + y;y = x - y;x = x - y;方法二:#define SWAP(x, y)x = y;y = x;x = y;7. 用宏定义实现32位整数x是否为2的若干次幂的判断。#define IS_POWER2(x) (x & (x - 1) ? 0 : 1)8. 写一个宏定义MAX(a, b),这个宏输入两个参数并返回较大的一个。#define MAX(a, b) (a) (b) ? (a) : (b)9. 下面(左侧部分)是一程序片段,请问:如果不使用条件判断,应如何优化这段代码?int func(int x) int count = 0;while (x != 0) countx +;x = x & (x - 1);return count; . .BOOL a;int x, m;. .if (a) x = m + 1;else x = m 2;. .第9题 程序片段 第10题 函数func优化的代码为:x = a*(m + 1) + (!a)*(m 2)10. 请分析上面右侧函数func的功能,并给出当参数x=9999时该函数的返回值。这是一个统计x的二进制数值中有多少个1的函数,用这种方法来求1的个数是很效率很高的,不必去一 个一个地移位,循环次数也比较少。当x=9999时,有:9999 = 9*1024512256159*1024 中含有1的个数为2;512中含有1的个数为1;256中含有1的个数为1;15中含有1的个数为4;故共有1的个数为 8,结果为8。11. 请写一个函数返回1 + 2 + 3 + + n的值(假定结果不会超过长整型变量的范围)。int sum( int n )return (1L + n) * n / 2;12. 请分别使用递归和非递归2种方法,各编写一个函数,使其返回斐波拉契数列第n项的值。(注:斐波拉契数列前面几项的数值为:1, 1, 2, 3, 5, 8, .)使用递归方法的函数:int funct(int n)if (n=0) return 1;if (n=1) return 1;retrurn funct(n-1) + funct(n-2);不使用递归方法的函数:int funct(int n)int a=0;int b=1;int c, i;if (n=0)c=1;else if (n=1)c=1;elsefor (i=2; i=n; i+)c=a+b;a=b;b=c;return c;13. 请编写函数unsigned int intvert(unsigned int x, int p, int n),该函数的返回值是对整型参数x的部分比特位进行取反操作的结果,其中参数p为起始转换位,参数n为需要转换的长度。假设起始点在右边,如x=0b0001 0001, p=4, n=3, 则返回值为0b0110 0001。unsigned int intvert(unsigned int x,int p,int n)unsigned int _t = 0;unsigned int _a = 1;int i;for (i = 0; i n; i+) _t |= _a;_a = _a 1;_t = _t p;x = _t;return x;14. 请写一个函数,若处理器是big_endian的,则返回0;若是little_endian的,则返回1。采用Little-endian模式的CPU对操作数的存放方式,是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。int is_little_endian()union w inta;charb; c;c.a = 1;return (c.b = 1);15. 请写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来的字符串是”abcdefghi”,如果n=2,则移位后为”hiabcdefg”。方法一:void loop_move(char *str, int steps)int n = strlen( str ) - steps;char tmpMAX_LEN;strcpy(tmp, str + n);strcpy(tmp + steps, str);*(tmp + strlen(str) = 0;strcpy(str, tmp);方法二:void loop_move(char *str, int steps)int n = strlen( str ) - steps;char tmpMAX_LEN;memcpy(tmp, str + n, steps);memcpy(str + steps, str, n);memcpy(str, tmp, steps);16. 请写一个函数,实现内存之间的拷贝。实现时,不可调用库函数及任何第3方的函数,函数原型为:void* memcpy(void * dest, const void *src, unsigned int count);void* memcpy(void *dest, const void *src, unsigned int count)char* pdest = static_cast( d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年从线上数据看宠物品牌竞争格局和618战况-解数咨询
- 2025年特岗教师招聘面试初中数学专业基础知识解析与预测题
- 2025年热切割技术入门与提高模拟题集
- 良性前列腺增生的护理查房1
- 新解读《GB-T 36763-2018电磁屏蔽用硫化橡胶通 用技术要求》
- 陕西省安康市2024-2025学年高一下学期7月期末物理试题(含答案)
- 新解读《GB-T 35865-2018粮油检验 稻谷整精米率测定 图像分析法》
- 用电和消防知识培训课件报道
- 生物安全知识培训课件制药厂
- 2025年小学数学毕业升学考试易错题型精讲模拟试卷
- 护理副高职称答辩5分钟简述范文
- 幼小衔接资料合集汇总
- GB/T 42195-2022老年人能力评估规范
- GB/T 4909.4-2009裸电线试验方法第4部分:扭转试验
- GB/T 15155-1994滤波器用压电陶瓷材料通用技术条件
- 复变函数与积分变换全套课件
- 做一名优秀教师课件
- 企业标准编写模板
- 商场开荒保洁计划书
- DBJ 53-T-46-2012 云南省城镇道路及夜景照明工程施工验收规程
- 西方文明史(第五版)英文版全书ppt完整版课件整本书电子教案最全教学教程
评论
0/150
提交评论