嵌入式软件工程师笔试题目

上传人:m**** 文档编号:560314182 上传时间:2022-08-11 格式:DOC 页数:11 大小:104.50KB
返回 下载 相关 举报
嵌入式软件工程师笔试题目_第1页
第1页 / 共11页
嵌入式软件工程师笔试题目_第2页
第2页 / 共11页
嵌入式软件工程师笔试题目_第3页
第3页 / 共11页
嵌入式软件工程师笔试题目_第4页
第4页 / 共11页
嵌入式软件工程师笔试题目_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《嵌入式软件工程师笔试题目》由会员分享,可在线阅读,更多相关《嵌入式软件工程师笔试题目(11页珍藏版)》请在金锄头文库上搜索。

1、1. 编写一个函数 ,判断处理器是使用 Big_endian 模式 (返回 0)还是 Little_endian 模式 (返回 1) 存储数据cpp view plaincopyprint?1. int checkCPU()2. 3. union w4. 5. int a;6. char b;7. c;8. c.a = 1;9.10.return (c.b = 1);11. /* 共用体的所有成员都是从地地址开始存放的2. 判断单链表是否存在环形链表问题cpp view plaincopyprint?1. bool IsLoop(node *head,node *start)2. 3. nod

2、e *p1 = head, *p2 = head;4.5.if(head= NULL | head-next = NULL)6.7.return false;8.9.do10.11.p1 =head-next;12.p2 =head-next-next;13.while(p2 & p2-next & p1!= p2);14.if(p1= p2)15.16.*start = p1;17.return true;18.19.else20.return false;21. 3. 计算一个无符号 32 位整型( unsigned int)的 bit 有多少位为 1 或 0cpp view plainc

3、opyprint?1. int caculate_bit(unsigned int num)2. 3.unsigned int mask = 1 31;4.int n = 0;5.int i;6.7.for(i = 0; i 32; i+)8.9.if(num & mask)10.11.n+;12.13.num = 1;14.15.16.return n;17.4. 保证 malloc 和 free 成对出现cpp view plaincopyprint?1. char * function(void)2. 3. char *p;4. p = ( char *)malloc( );5. if(

4、p=NULL)6. ;7. /* 一系列针对 p 的操作 */8. return p;9. 在某处调用 function() ,用完 function 中动态申请的内存后将其 free,如下: char *q = function();free(q);上述代码明显是不合理的,因为违反了 malloc 和 free 成对出现的原则,即 谁申请,就由谁 释放 原则。不满足这个原则,会导致代码的耦合度增大,因为用户在调用function 函数时需要知道其内部细节!正确的做法是在调用处申请内存,并传入 function 函数,如下:char *p=malloc( );if(p=NULL) functi

5、on(p);free(p);p=NULL;而函数 function 则接收参数 p,如下:void function(char *p) /* 一系列针对 p 的操作 */6. 编写一个函数实现求两个整数的最大公约数cpp view plaincopyprint?1. int fuc( int a, int b)2. 3. if(a % b = 0)4. return b;5. return fuc(b, a % b);6. 7. 将对称的二维数组逆转cpp view plaincopyprint?1. #define N 32. int i, j, aNN = 1,2,3,4,5,6,7,8,

6、9;3. int temp;4. for (i = 0; i N; i+)5. 6. for (j = i; j N; j+)7. 8. if (i = j)9. continue;10.temp = aij;11.aij = aji;12.aji = temp;13.14. 8. 冒泡排序和选择排序和插入排序cpp view plaincopyprint?1. #define N 52. /冒泡排序3. for ( i = 0; i N - 1; i+)4. 5. for (j = 0; j aj + 1)8. 9. temp = aj;10. aj = aj + 1;11. aj + 1

7、= temp;12. 13. 14. 15. / 选择排序16. for ( i = 0; i N - 1; i +)17. 18. k = i;19. for (j = k + 1; j aj)22. k = j;23. 24. temp = ak;25. ak = ai;26. ai = temp;27. 28. / 插入排序29. for (j = 1; j = 0; & ai key)34. 35. ai + 1 = ai;36. i -;37. 38. ai + 1 = key;39. 9. 字符串的链接函数 (不能用系统自带的函数实现 ) cpp view plaincopypri

8、nt?1. void string_strcat( char *dest, char * src)2. 3. char *p = dest;/ 记录头位置4. while (*dest+);5. dest-;6. while(*dest+ = *src+);7. *dest = 0;8. 10. 用 #define 声明一个常数,用以表明一年中有多少秒365)UL#define SECONDS_PER_YEA(6R0 * 60 * 2411. 关键字 volatile 有什么含义定义为 volatile 的变量可能会被意想不到的改变,这样编译器就不会去假设这个变量的值, 准确的说,优化器在用到

9、 volatile 变量时候必须小心地重新读取该变量的值,而不是使用保 存在寄存器的备份,用到 volatile 的三个例子【1】并行设备的硬件寄存器(如:状态寄存器)。【2】一个中断服务字程序中汇访问到的非自动变量。【3】多线程应用中被几个任务共享的变量12. 多线程同步的方式【1】临界区。通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据 访问【2】互斥量。为协同共同对一个共享资源的单独访问而设计的。【3】信号量。为控制一个具有有限数量用户资源而设计的。P 操作: S减 1;若 S减 1 后仍大于等于零,则进程继续执行;若S减 1 后小于零,则进程阻塞V 操作: S 加 1

10、 ;若 S 加 1 后大于零,则进程继续执行;若S 减 1 后小于等于零,则从该信号的等待队列中唤醒一个等待进程【4】事件。用来通知线程有一些事件已经发生,从开启动后继任务的开始。13. 函数指针问题cpp view plaincopyprint?1. /改错1:/ 改为 (在 C 或 C+ 中):2. void GetMemory( char *p, int num)3. void GetMemory( char *p, int num)4.p = (char *)malloc(sizeof(char )*num); *p = ( char *)malloc(sizeof( char )*n

11、um);5. 6. void Test()void Test()7. 8.char *str = NULL;char *str = NULL;9.GetMemory(str,100);GetMemory(&str,100);10.strcpy(str,hello);strcpy(str,hello);11. 12.13. / 或者改为 (在 C+ 中):14. void GetMemory( char *&p, int num)15. 16. p = ( char *)malloc(sizeof( char )*num);17. 18. void Test()19. 20. char *str

12、 = NULL;21. strcpy(str,hello);22. 23.24.25.26.27. / 改错 2 :28. char *GetString(void)29. 30.char p = hello;31.return p;32. 33. void Test()34. 35. char *str = NULL;/ 改为:void GetString(p = hello;void Test()char *str =36.str = GetString();GetMemory(str,100);char *&p) /GetString(char *p)/*p = hello;NULL;GetString(str);/GetString(&str)37. 38. 39. 40. 41. 42.

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

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

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