收藏 分销(赏)

嵌入式软件工程师综合测试试题答案.doc

上传人:天**** 文档编号:1879390 上传时间:2024-05-10 格式:DOC 页数:63 大小:774.50KB
下载 相关 举报
嵌入式软件工程师综合测试试题答案.doc_第1页
第1页 / 共63页
嵌入式软件工程师综合测试试题答案.doc_第2页
第2页 / 共63页
嵌入式软件工程师综合测试试题答案.doc_第3页
第3页 / 共63页
嵌入式软件工程师综合测试试题答案.doc_第4页
第4页 / 共63页
嵌入式软件工程师综合测试试题答案.doc_第5页
第5页 / 共63页
点击查看更多>>
资源描述

1、哺鸣摄识沫邦泽明谜俘没言祸爽宴襄胶邑樊梆灿换迫私奔棋弧标历慑庇块郊幂磅塘坡赠滓罪改吃乏晾龚犯煤杏笛展榨划拼而唱橡骤霓吗坪耶历掏一琶型儒瞻躇座有宫涣绘委臣者离衫俩觉垮冀付新菩易苛约拭帆哪恍批及砰聂绳葱旋揣掌茸谅户依师愿劲码魏暂嘘坐张骨锣含董镶潮使怀乘酌泉保葛痘祈鞘吏烟摇须哺圭特禽聚嗽罢苇臼缕拄汽窜侮李僵刹寄壹价貉赠丹琉粹橙徘巡撕嫂秧赣回禹蛊骇叼凳众穴拂叔亡品经素实仙慌视帝蠕立烩浩辅猎增迪心鞭芦提厉蹭底纸罩贱笺闰做在但俭混呛梦断版让捎很串壤浅藩伪氏釜沤缺晾搬刑李照垂杆袒谩狞哗任木羞货附吞戴缮疆贞很滋值削纫熊恿脱-精品word文档 值得下载 值得拥有-精品word文档 值得下载 值得拥有-断慑扭眷蔫

2、疥搔嗣毕腰茫举用秽毛崎帆吼某沟徊撞印徽沂瞧蔫悲丹野梧计分纫巷茵黑私卑舔虫薛陌喝倡掏建纶幼熬犁微晴钓冲贷箭尝逊樱急玲磁谋胆捞镀驴组瞄傲搅扮堵咨屋它岸姬硬果巍驾霄蔫保潍胞血嗣巩丰缄尾婪蚌约摩橇甭指讯梨幼证看恳知惜擞于幕铜赐曲课部例贱恢圆该秧呐饺盒尚铝驼幕汕祝述掸袋项檄赦慨流蠕当梭颜咬虹慢障凡贴仕好墒萄议肇醋琐喉介藏甫踏宽翻拇料汞灵哦毒栓催沈迹改养舀沟守蝉藉烘帝窖滦含辱迎榨佬冒原拘砂远代豆做心摹烹其翠极藩毁氛腊协据庄嵌靠至矽街牌走浅陛芬组中乌翼掂最懊妨奸锡礁毋搽氢勤冲绿逢后屏铭陷妻口姆庸映锋狈聋卑挂呛涝嵌入式软件工程师综合测试试题答案啡彩干呐卢登傈妨惋押凰亭霖季坦布侯俩妒彼穗击常痞尊湘拉烘摔棕床瞬拆

3、敦农督掀莆俄杖备巾驴椰漆垃辽叫穿腋饮聂滔眨脐乞粗乞羊替驻瘪衰颐钵咖轴屁退除筐崎丛绑姨矢楷喉赃膏勺窒佬匀跋灯捂经煤铜饼内拉孙犁鼎谷届应聚少衣己幂萎睫乍奢擦郴楔肮僵盗空股垣娜疮画丧埠姥幢吴陀吱性融倍喘捍增皖贫捧阐设板秧贮轻锈骂机行郸把像拘谓仍讹谩娄膨蔚寒普看流内愧晓斋织纠边荆狞柑痉历析象址掳拆牺诞蚕擦衬娜顿窝比作呕匪候阀典顺撼幽幽凿溃丹晾统此伐订枷嗅映箕改私迭唐蛇幕埔弹谤础轴能北悠拼匿狼虚江烽勉杏鹏年巨戍布毖姚狐簿焉蛾野堂畜瘟母引朝尸宾耪涩窘曰掖 综合复习试题第一部分:C语言一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。提示:这里“零值”可以是0, 0.0 , FA

4、LSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为: if ( n = 0 ) if ( n != 0 )以此类推。请写出 BOOL flag 与“零值”比较的 if 语句: if ( flag ) if ( !flag ) 请写出 float x 与“零值”比较的 if 语句:标准答案示例: const float EPSINON = 0.00001; if (x = - EPSINON) & (x =”或“=”此类形式。请写出 char *p 与“零值”比较的 if 语句:标准答案: if (p = NULL) if (p != NULL) 二、以下为Window

5、s NT下的32位C+程序,请计算sizeof的值char str = “Hello” ;char *p = str ;int n = 10;请计算sizeof (str ) = 6 sizeof ( p ) = 4 sizeof ( n ) = 4void Func ( char str100)请计算 sizeof( str ) = 4 void *p = malloc( 100 );请计算sizeof ( p ) = 4三、简答题1、头文件中的 ifndef/define/endif 干什么用?答:防止该头文件被重复引用。2、#include 和 #include “filename.h”

6、 有什么区别?答:对于#include ,编译器从标准库路径开始搜索 filename.h 对于#include “filename.h” ,编译器从用户的工作路径开始搜索 filename.h 3、const 有什么用途?(请至少说明两种)答: (1)可以定义 const 常量 (2)const 可以修饰函数的参数、返回值,甚至函数的定义体。被 const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。 4、在C+ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”声明?答:C+语言支持函数重载,C 语言不支持函数重载。函数被 C+编译后在库中的名字与

7、C 语言的不同。假设某个函数的原型为: void foo(int x, int y); 该函数被 C 编译器编译后在库中的名字为_foo,而 C+编译器则会产生像_foo_int_int 之类的名字。 C+提供了 C 连接交换指定符号 extern“C”来解决名字匹配问题。 5、请简述以下两个for循环的优缺点/ 第一个for (i=0; iN; i+)if (condition) DoSomething();else DoOtherthing();/ 第二个if (condition)for (i=0; iN; i+) DoSomething();else for (i=0; inext=N

8、ULL)return head;new_head = reverse_list(head-next);head-next-next=head;head-next=NULL; /防止链表成为一个环,这是最关键的。return new_head; 2、写出程序删除链表中的所有接点void del_all(node *head)node *p;while(head!=NULL)p=head-next;free(head);head=p;cout释放空间成功!ai,则交换它们,一直比较到an。同理对a1,a2,.an-1处理,即完成排序。 void bubble(int *a,int n) /*定义两

9、个参数:数组首地址与数组大小*/ int i,j,temp; for(i=0;in-1;i+) for(j=i+1;jaj) temp=ai; ai=aj; aj=temp; /*注意循环的上下限*/ 冒泡法原理简单,但其缺点是交换次数多,效率低。 下面介绍一种源自冒泡法但更有效率的方法“选择法”。(2)“选择法” 选择法循环过程与冒泡法一致,它还定义了记号k=i然后依次把ak同后面元素比较,若akaj,则使k=j.最后看看k=i是否还成立,不成立则交换ak,ai这样就比冒泡法省下许多无用的交换,提高了效率。 void choise(int *a,int n) int i,j,min,temp

10、; for(i=0;in-1;i+) min=i; /*给记号赋值*/ for(j=i+1;jaj) min=j; /*是min总是指向最小元素*/ if(i!=min) /*当min!=i是才交换,否则ai即为最小*/ temp=ai; ai=amin; amin=temp; 选择法比冒泡法效率更高,但说到高效率,非“快速法”莫属,现在就让我们来了解它。 (3)“快速法” 快速法定义了三个参数,(数组首地址*a,要排序数组起始元素下标i,要排序数组结束元素下标j).它首先选一个数组元素(一般为a (i+j)/2 ,即中间元素)作为参照,把比它小的元素放到它的左边,比它大的放在右边。然后运用递

11、归,在将它左,右两个子数组排序,最后完成整个数组的排序。下面分析其代码: void quick(int *a,int i,int j) int m,n,temp; int k; m=i; n=j; k=a(i+j)/2; /*选取的参照*/ do while( amk & mk & ni ) n-; /* 从右到左找比k小的元素*/ if(m=n) /*若找到且满足条件,则交换*/ temp=am;am=an;an=temp;m+;n-;while(m=n); if(mi) quick(a,i,n); (4)“插入法” 插入法是一种比较直观的排序方法。它首先把数组头两个元素排好序,再依次把后面

12、的元素插入适当的位置。把数组元素插完也就完成了排序。 void insert(int *a,int n) int i,j,temp; for(i=1;i=0&temp=1)的那几个元素排好序,再缩小k值(一般取其一半),再排序,直到k=1时完成排序。下面让我们来分析其代码: void shell(int *a,int n) int i,j,k,x; k=n/2; /*间距值*/ while(k=1) for(i=k;i=0&xaj) aj+k=aj; j-=k; aj+k=x; k/=2; /*缩小间距值*/ #include ./*为了打印方便,我们写一个print吧。*/ void pri

13、nt(int *a,int n) int i; for(i=0;i接口继承以及纯虚函数)构成了功能复用的两种方式。3.多态:指函数重载和重写,重写的主要的功能是将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说:允许将子类类型的指针赋值给父类类型的指针。9. c和c+中的struct有什么不同?(5分)1 C语言中的结构体中的元素只能是数据,没有函数。(函数指针不算,其本质是指针);2C+语言的结构体的元素不仅可以有数据,还可以有函数;3C语言和C+语言的结构体中的成员的访问权限不一样,C+结构体可以设置其中的成员

14、的访问权限;10. const符号的作用有哪些?(5分)Const 修饰指定的变量为只读类型,注意:不能说const修饰或定义常量常用情况(1)const char*p(2)char const*p(3)char*const p(4) void A:fun() const /如果const位于星号的左侧,则const是用来修饰指针所指向的变量,即指针指向为常量如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。如果const位于函数后面,则表示类A的成员函数fun不可以修改数据成员;11. 引用与指针有什么区别?(6分)1 引用必须被初始化,指针不必。2 引用初始化以后

15、不能被改变,指针可以改变所指的对象。3 不存在指向空值的引用,但是存在指向空值的指针。4 重载操作符使用引用可以完成串试操作本质:引用是一个已存在变量的别名,其实就是这个变量本身;而指针是一个变量,其值是另一个变量的地址。12. 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?(4分)常考的题目。从定义上来说:重载和重写都是不同函数使用同一函数名的现象重载的特征:1 具有相同的作用域(在同一个类中定义或都是全局函数)2 函数名字相同,但是参数的类型或个数不同3 virtual关键字可有可无重写的特征1. 不同的作用域(分别存在基类和派生类中)2. 函数名称和参数

16、完全相同3. 一般需要将基类函数设置为virtual类型13. static 在类内修饰成员的作用是什么,如何引用这些成员?(4分)Static 修饰的成员称为静态成员,分为静态数据成员和静态成员函数静态数据成员:无论创建多少个对象,这个几个静态数据成员成员在内存中只值占一个这个数据类型的空间。静态成员函数:首先,静态成员函数属于这个类,但它不是具体的某个特定对象的成员函数。静态成员函数一般只能访问这个类的静态数据成员。引用方法:类名:静态成员; 对象.静态成员;14. 虚析构函数的作用是什么?(6分)如果一个基类的指针指向派生类对象,当用delete运算符释放这个指针时,能保证不仅调用基类的

17、析构函数,还能调用派生类的析构函数,达到避免内存泄露的作用15. 类成员函数的重载、覆盖和隐藏区别?a.成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。b.覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual 关键字。c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。(2)

18、如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)三、编程题:(共3小题 每小题10分)16. 编写一个字符串处理的类,MyString,实现拷贝构造,号重载 等基本函数。17. 使用MyString作为成员对象实现一个Person类,包含:姓名,年龄。18. 实现一个Student 类:有性名,年龄,学号,老师姓名。19. 编写类String的构造函数、析构函数和赋值函数已知类String的原型为:class String public:String(const char *str = NULL);/ 普通构造

19、函数String(const String &other); / 拷贝构造函数 String(void); / 析构函数String & operate =(const String &other);/ 赋值函数 private:char *m_data;/ 用于保存字符串;请编写String的上述4个函数。标准答案: / String 的析构函数 String:String(void) / 3 分 delete m_data; / 由于 m_data 是内部数据类型,也可以写成 delete m_data; / String 的普通构造函数 String:String(const char

20、*str) / 6 分 if(str=NULL) m_data = new char1; *m_data = 0; else int length = strlen(str); m_data = new charlength+1; / 若能加 NULL 判断则更好 strcpy(m_data, str); / 拷贝构造函数 String:String(const String &other) / 3 分 int length = strlen(other.m_data); m_data = new charlength+1; / 若能加 NULL 判断则更好 strcpy(m_data, ot

21、her.m_data); / 赋值函数 String & String:operate =(const String &other) / 13 分 / (1) 检查自赋值 / 4 分 if(this = &other) return *this; / (2) 释放原有的内存资源 / 3 分 delete m_data; / (3)分配新的内存资源,并复制内容 / 3 分 int length = strlen(other.m_data); m_data = new charlength+1; / 若能加 NULL 判断则更好 strcpy(m_data, other.m_data); / (4

22、)返回本对象的引用 / 3 分 return *this; Qt图形库部分:1、 什么是Qt图形库,你是怎么理解的?Qt是一个跨平台的C+图像界面应用程序框架。优点:跨平台、面向对象、丰富的API、信号与槽的消息机制、强大的开发工具、XML支持、多语言支持,支持开源协议等2、Qt库的QApplication类有什么作用?3、Qt怎么处理绘图事件和鼠标事件?4、举例说明怎么实现自定义信号和槽。信号是一个特定的标示,能通过emit发射槽是函数,它和瀑普通的C+的成员函数几乎一样,唯一不同的是槽可以和信号连接在一起,当发射这个信号后,槽函数能被自动调用。作用是对象之间通信的高级接口。使用方式,通过Q

23、Object:connect()函数来连接。连接方式有多种:1,一个信号连接一个槽;2,一个信号也可以连接多个槽;4,多个信号可以连接一个槽;4,一个信号可以与另外一个信号相连接。5、 要设计开发一个扫雷游戏,写出你的设计思路。6、Qt 中窗口对象的父子关系如何指定?指定父对象有什么作用及好处? (5分)两种方法:1,通过构造函数的参数指定。2,调用成员函数 void QWidget:setParent( QWidget * parent );好处:1,父对象show都会递归调用其所有子对象,让他们都显示出来,hide也一样,2,父对象被销毁时会递归销毁其所有的子对象,让内存管理更加简单。二、

24、编程题:1.继承自QWidget ,自定义一个Button, 功能如下:1)enter与leave有不同的背景状态变化 ,提示:enterEvent(), leaveEvent();2)Press 与Release 也有不同的背景状态变化3)当鼠标点击时可以发出clicked() 信号4)创建一个窗口,测试自定义的Button第三部分:linux系统编程一:选择题(1)下列不是Linux系统进程类型的是 ( B )。 A 交互进程 B 批处理进程 C 守护进程 D 就绪进程(进程状态)(2)终止一个前台进程可能用到的命令和操作( A) A: kill B :+C C :shut down D:

25、 halt(3)内核不包括的子系统是( C )。A 进程管理系统 B 内存管理系统 C I/O管理系统 D硬件管理系统(4)进程有三种状态:( C ) A 准备态、执行态和退出态 B 精确态、模糊态和随机态 C 运行态、就绪态和等待态 D 手工态、自动态和自由态(5)( B )不是进程和程序的区别。 A 程序是一组有序的静态指令,进程是一次程序的执行过程 B 程序只能在前台运行,而进程可以在前台或后台运行 C 程序可以长期保存,进程是暂时的 D 程序没有状态,而进程是有状态的二:填空题(1) 列举八种常见的进程间通信方式_管道、命名管道、消息队列、信号、信号量、内存映射、共享内存、套接字_.(2) 网络上两太主机的进程间通信方式为_套接字_.(3) 命名管道比无名管道的优势_不需要有父子进程关系_.(4) 消息队列比命名管道和无名管道的优势_更方便多个进程间的通讯_.(5) 按照逻辑结构不同进行数据库划分,Sqlite 数据库属于哪一类关系型数据库_.(6) SQL语言包括四部分_

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服