《嵌入式软件工程师综合测试试题》由会员分享,可在线阅读,更多相关《嵌入式软件工程师综合测试试题(14页珍藏版)》请在金锄头文库上搜索。
1、真诚为您提供优质参考资料,若有不当之处,请指正。综合测试试题第一部分:C语言一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为: if ( n = 0 ) if ( n != 0 )以此类推。请写出 BOOL flag 与“零值”比较的 if 语句:请写出 float x 与“零值”比较的 if 语句:请写出 char *p 与“零值”比较的 if 语句:二、以下为Windows NT下的32位C+程序,请计算sizeof的值char str =
2、 “Hello” ;char *p = str ;int n = 10;请计算sizeof (str ) = sizeof ( p ) = sizeof ( n ) =void Func ( char str100)请计算 sizeof( str ) = void *p = malloc( 100 );请计算sizeof ( p ) =三、简答题1、头文件中的 ifndef/define/endif 干什么用?2、#include 和 #include “filename.h” 有什么区别?3、const 有什么用途?(请至少说明两种)4、在C+ 程序中调用被 C编译器编译后的函数,为什么要加
3、 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=NULL)return head;new_head = reverse_list(head-next);head-next-next=head;head-next=NULL; /防止链表成为一个环,这是最关键的。return new_head; 2、
4、写出程序删除链表中的所有接点void del_all(node *head)node *p;while(head!=NULL)p=head-next;free(head);head=p;cout释放空间成功!endl;3、使用冒泡、选择法、快速排序法对数组进行排序第二部分:C+与QT1. C+对C语言做了很多改进,下列描述中(D)使得C语言发生了质变,即从面向过程变成面向对象。A)增加了一些新的运算符 B)允许函数重载,并允许设置默认参数C)规定函数说明必须用原型 D)引进类和对象的概念2. 下面说法中正确的是(B)A) 一个类只能定义一个构造函数,但可以定义多哥析构函数(只能一个)B) 一个
5、类只能定义一个析构函数,但可以定义多个构造函数C) 构造函数与析构函数同名,只是名字前加了一个求反符号()D)构造函数(不)可以指定返回类型,而析构函数不能指定任何返回类型,即使是void类型也不可以3. 下面关于友元的描述中,错误的是( D)。A)友元函数可以访问该类的私有数据成员。B)一个类的友元类中的成员函数都是这个类的友元函数。C)友元可以提高程序的运行效率。D)类与类之间的友元关系可以继承。4. 有关析构函数的说法不正确的是(B)。A) 析构函数有切仅有一个B) 析构函数和构造函数一样(不)可以有形参C) 析构函数的功能是用来释放一个对象D) 析构函数无任何函数类型5. 下列对重载函
6、数的描述中,(A)是错误的。A) 重载函数中不允许使用默认参数 B) 重载函数中编译时根据参数表进行选择C) 不要使用重载函数来描述毫无相干的函数 D) 构造函数重载将会给初始化带来多种方式6. 下面叙述错误的是(C )A. 派生类可以使用private派生B. 对基类成员的访问必须是无二义性的C. 基类成员的访问能力在派生类中维持不变D. 赋值兼容规则也适用于多继承的组合一、选择题:(共10小题,每题3分)1.类的构造函数被自动调用执行的情况是在定义该类的( C )A)成员函数时B)数据成员时C)对象时D)友元函数时2.说明友元函数使用关键字( A )A)friendB)staticC)co
7、nstD)colatile3.已知类X中的一个成员函数说明如下:Void Set(x &a); 其中,X&a的含义是(C )A)指向类X的指针为aB)将a的XXX赋给变量SstC)a是类X的对象引用,用来做为Set()的形参D)变量X是a按位相与作为函数Set()的参数4. 关于new运算符的下列描述中( D )是错误的. /创建数组时,定义构造函数必须没有参数,或全部为默认参数A)它可以用来动态创建对象和对象数组B)使用它创建对象或对象数组,可以使用运算符DELETE删除C)使用它创建对象时要调用构造函数D)使用它调用对象数组时不许指定初始值5.允许访问类的所有对象的私有成员,公有成员和保护
8、成员的是( A )A)友元函数B)成员函数C)内联函数D)重载函数6局部变量可以隐藏全局变量,那么在有同名全局变量和局部变量的情形时,可以用( A )提供对全局变量的访问A) 域运算符B) 类运算符C) 重载D) 引用7缺省析构函数的函数体是( C )不存在)随机产生的)空的)无法确定的、8.通常拷贝构造函数的参数表是( C ) /在VC6.0下A)该类对象名 /编译不会通过B)该类对象的成员名 /编译可以通过,但不是通常的标准方法C)该类对象的引用名 /标准拷贝构造函数的方法D)该类对象的指针名 /编译可以通过,但不是通常的标准方法9.对定义重载函数的下列要求中,(D ) 是错误的A)要求参
9、数的个数不同 B)要求参数中至少有一个类型不同C)要求参数个数相同时,参数类型不同 D)要求函数的返回值不同10.对于多重继承,有(D )A.一个派生类只能有一个基类B.一个基类只能产生一个派生类C.一个基类必须产生多个派生类D.一个派生类可有多个基类7. C和C+有什么不同?(4分)8. 面向对象的三个基本特征及各自的作用(6分)9. c和c+中的struct有什么不同?(5分)10. const符号的作用有哪些?(5分)11. 引用与指针有什么区别?(6分)12. 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?(4分)13. static 在类内修饰成员的作用是什么,如何引用这些成员?(4分)14. 虚析构函数的作用是什么?(6分)15. 类成员函数的重载、覆盖和隐藏区别?16. 在C中引用C+语言中的函数和变量时,C+的头文件需添加extern C,但是在C语言中不能直接引用声明了extern C的该头文件,应该仅将C文件中将C+中定义的extern C函数声明为extern类型。三、编程题:(共3小题 每小题10分)17. 编写一个字符串处理的类,MyString,实现拷贝构造,