




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Technology for Easy Living 32位嵌入式平台(软件方向)实习生笔试题学校: 日期: 姓名: C1. 以下为WinNT下的32位C+程序,请计算sizeof的值。(5分)char str = “Hello” ;char *p = str ;int n = 10;请计算sizeof (str ) = 6 sizeof ( p ) = 4 sizeof ( n ) = 4 void Func ( char str100)请计算 sizeof( str ) = 4 void *p = malloc( 100 );请计算sizeof ( p ) = 4 C2. 头文件中经常看到类似于下面的定义,请问这些预处理指令的作用是?(4分)#ifndef_LCD_DRIVER_H_#define_LCD_DRIVER_H_/write your header here#endif答:防止重复定义C3. 已知strcpy函数的函数原型是:char *strcpy(char *strDest, const char *strSrc)。其中,strDest是目的字符串,strSrc是源字符串。(15分)(1)不调用C+/C的字符串库函数,请编写函数strcpy答:char *strcpy(char *strDest, const char *strSrc)char *s = strDest;if(strDest = NULL) | (strSrc = NULL)return NULL;while(*strDest+ = *strSrc+) != 0);return s;(2)strcpy能把strSrc的内容复制到strDest,为什么还要char *类型的返回值? 答:为了实现链式表达式,如:int length = strlen( strcpy( strDest, “hello world”) );C4. 请简述下面两个for循环的优缺点(8分)for (i=0; iN; i+)if (condition)DoSomething();elseDoOtherthing();if (condition)for (i=0; iN; i+)DoSomething();elsefor (i=0; iN; i+)DoOtherthing();优点:程序简洁缺点:多执行了N-1次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对程序进行优化,降低了效率优点:循环的效率高缺点:程序不简洁C5. 下面程序中有一处语法错误和一处逻辑错误,请分别指出(直接在程序中标出)。(8分)/ 程序功能:搜索字符串中的非数字字符,并将非数字字符打印出来#include #define SIZE 10;/ 语法错误,多一个分号bool IsNumber(char ch)return( (ch = 0) );int main(void)char cSIZE = 12345y789;int i;bool Result;for(i = 0; i _fun, main=_main。但是C+中函数名与得到的汇编代号有比较大的差别。如:由于函数重载,函数名一样,但汇编代号绝对不能一样。为了区分,编译器会把函数名和参数类型合在一起作为汇编代号,这样就解决了重载问题。具体如何把函数名和参数类型合在一起,要看编译器的帮助说明了。这样一来,如果C+调用C,如fun(),则调用名就不是C的翻译结果_fun,而是带有参数信息的一个名字,因此就不能调用到fun(),为了解决这个问题,加上extern C表示该函数的调用规则是C的规则,则调用时就不使用C+规则的带有参数信息的名字,而是_fun,从而达到调用C函数的目的。C7. 已知一个函数原型:int foo(struct type_t1 a, struct type_t2 *b),请定义一个指向该原型函数的指针类型,并用这个新定义的类型声明一个元素个数为SIZE的指针数组。(10分)答:typedef int FOO_FUNC(struct type_t1 a, struct type_t2 *b);FOO_FUNC *fooSIZE;H1.什么是堆栈,简述为什么需要堆栈?(5分)答:堆栈是CPU用来临时存储信息的一段读/写存储区(RAM)。由于寄存器数量有限所以需要堆栈。H2. 什么叫流水线深度(pipeline depth),流水线技术的优缺点是什么?(5分)答:某个时刻正在处理的指令数取决于流水线阶段的数目,通常叫流水线深度。优点:流水线技术使CPU可同时执行多条指令,加快执行速度。缺点:1、跳转指令太多会降低程序效率 2、执行速度受限于流水线中最慢的阶段O1. 简要叙述你熟悉或接触过的一款嵌入式OS的调度方式,并简述该调度方式的特点。(10分)答:O2. 用信号量实现生产消费过程。假设等待信号量用wait(),释放信号量用signals(),创建进程用parbegin(.)。(15)答:const int sizeofbuffer = /*缓冲区的大小*/semaphore s = 1;/*访问缓冲区的控制信号量*/semaphore n = 0;/*生产的数量*/semaphore e = sizeofbuffer;/*缓冲区的大小生产的数量容量*/void producer()while(true)produce(); wait(e);wait(s);append();singal(s);signal(n);void consumer() while(true) wait(n); wait(s); take(); signal(s); signal(e); consume(); void main() parbegin(producer,consumer);以上程序如果singal(s)和signal(n)被互换,不会影响程序,因为无论任何情况,消费者在继续进行之前必须等待在两个信号量上等待但是如果wait(n)和wait(s)被颠倒,这时会产生严重的甚至是致命的错误,如果当缓冲区为空时,消费者曾经进入过它的临界区,那么任何一个生产者都不能往缓冲区种添加项,系统发生死锁A1.下面是对ecos中的package的一段描述,请将其翻译成中文。(10分)A package is a special type of component. Specifically, a package is the unit of distribution of components. It is possible to create a distribution file for a package containing all of the source code, header files, documentation, and other relevant files. This distribution file can then be installed using the appropriate tool. Afterwards it is possible to uninstall that package, or to install a later version. The core eCos distribution comes with a number of packages such as the kernel and the infrastructure. Other packages such as network stacks can come from various different sources and can be installed alongside the core distribution.A2. 智力题5个囚犯,分别按1-5号在装有100颗绿豆的麻袋抓绿豆,规定每人至少抓一颗,抓得最多和最少的人将被处死,而且,他们之间不能交流,但在抓的时候,可以摸出剩下的豆子数。问他们中谁的存活几率最大?提示:1. 他们都是很聪明的人2. 他们的原则是先求保命,再去多杀人3. 100颗不必都分完4. 若有重复的情况,则也算最大或最小,一并处死最佳答案由题设条件可知:摸到最大绿豆数的囚犯必死,摸到最小绿豆数的囚犯必死,摸到重复绿豆数的囚犯必死。 整体来看,至少有两个囚犯必死。绿豆数为5时,2个囚犯必死(11111)。绿豆数为4时,3-4个囚犯必死(1211,2111)。绿豆数为3时,4-5个囚犯必死(131,311,221,212)。绿豆数为2、1时,5个囚犯必死。 5个囚犯的策略应该是:5个囚犯必须使摸到的绿豆数不重复,这样才会有最多存活机会;又必须使自己摸到的绿豆数居中,才会有最大存活机会。 明确了这一点,就可以往下分析了。 具体分析求机率 设1号囚犯摸到的绿豆数为N。 则2号囚犯摸到的绿豆数为N+1或N-1。因为2号囚犯可以通过摸剩余绿豆的方法得知1号囚犯摸到的绿豆数,2号囚犯摸到的绿豆数为N的话就会重复是找死,如果摸到的绿豆数与N相差大于1的话,又会使得3号囚犯有机会使摸到的绿豆数居中。 3号囚犯也会使自己摸到的绿豆数与1、2号的紧密相邻,即使自己摸到的绿豆数比1、2号的之中最大的大1,最小的小1。因为3号囚犯可以通过摸剩余绿豆的方法得知1、2号囚犯摸到的绿豆总数,又知1、2号囚犯摸到的绿豆数相差为1,从而判断出1、2号囚犯各自摸到的绿豆数。 4、5号囚犯与3号囚犯想法基本相同。即使自己摸到的绿豆数比自己前面所有的之中最大的大1,最小的小1。 综上所述,5个囚犯摸到的绿豆数为5个连续整数。 1号囚犯存活机率。1号囚犯有两种情况必死:摸到的绿豆数最大或最小。摸到的绿豆数最大或最小,只能由后4位囚犯决定,由分析可知后4位囚犯的摸到绿豆数的位置都只有两个,即一组连续整数的两边。因此1号囚犯摸到的绿豆数为最大时的机率为(1/2)*(1/2)*(1/2)*(1/2)=1/16,最小时的机率也为1/16,1号囚犯存活机率为1-(1/16)*2=7/8 2号囚犯存活机率。由对称性可知2号囚犯存活机率与1号相同,也为7/8。 3号囚犯存活机率。3号囚犯摸到的绿豆数为最大时的机率为(1/2)*(1/2)*(1/2)=1/8,最小时的机率也为1/8,1号囚犯存活机率为1-(1/8)*2=3/4。 4号囚犯存活机率。4号囚犯摸到的绿豆数为最大时的机率为(1/2)*(1/2)=1/4,最小时的机率也为1/4,4号囚犯存活机率为1-(1/4)*2=1/2。 5号囚犯存活机率。5号囚犯摸到的绿豆数不是最大就是最小,必死无疑。5号囚犯存活机率为0。 本题到此告一段落。但是5个囚犯的策略似乎有点问题:5号囚犯在必死无疑的情况下,还会为前4人保驾护航吗?他会不会临死拉个垫背的?于是有了以下分析。 5号囚犯的“觉醒”(临死拉个垫背的,在必死无疑的情况下多杀人) 1-4号囚犯策略如前,则4个囚犯摸到的绿豆数为4个连续整数,而5号囚犯的“觉醒”促使他多杀人。要多杀人,他摸到的绿豆数必须为4个连续整数的中间两个,这样有4人必死,只有1人存活。5号囚犯必死,4号囚犯摸到的绿豆数为4个连续整数的最大或最小值,也必死,1-3号囚犯有可能存活。 先不考虑5号囚犯。 1号囚犯存活机率。1号囚犯摸到的绿豆数为4个连续整数的最大或最小值,则必死。1号囚犯摸到的绿豆数为最大时的机率为(1/2)*(1/2)*(1/2)=1/8,最小时的机率也为1/8,1号囚犯存活机率为1-(1/8)*2=3/4 2号囚犯存活机率。由对称性可知2号囚犯存活机率与1号相同,也为3/4。 3号囚犯存活机率。3号囚犯摸到的绿豆数为最大时的机率为(1/2)*(1/2)=1/4,最小时的机率也为1/4,3号囚犯存活机率为1-(1/4)*2=1/2。 考虑5号囚犯。 由于5号囚犯摸到的绿豆数必为4个连续整数的中间两个,故1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚协议中财产分割及子女抚养责任及监护权协议
- 双方协议离婚后子女抚养权及财产分配执行合同
- 写字楼物业服务合同续约及绿化环境提升协议
- 长期仓储租赁合同保障乙方利益不受侵害
- 私募基金股权交易协议中的限制性条款与股权激励关系
- 万科商铺租赁合同范本-商业综合体租赁协议
- 班组级岗安全培训内容课件
- 辽宁省安宁安全培训课件
- 2025年口腔颌面外科手术器械应用与操作考核答案及解析
- 简笔画雪糕课件
- 陕西省2023年中考英语真题(附答案)
- 上海小学数学教材目录(沪教版)
- 营养性维生素缺乏性佝偻病
- GB/T 13576.4-1992锯齿形(3°、30°)螺纹公差
- GA 668-2006警用防暴车通用技术条件
- 《C语言程序设计》一等奖说课稿
- 油画综合材料与技法
- 血浆置换 (1)课件
- 保洁常用工具和设备一览表
- 测量教案5章-es-602g全站仪
- FJC系列浮选机说明书(最终版)2010100712
评论
0/150
提交评论