好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

C++测试题(含答案)终版.pdf

22页
  • 卖家[上传人]:飞翔****08
  • 文档编号:251359391
  • 上传时间:2022-02-09
  • 文档格式:PDF
  • 文档大小:51.76KB
  • / 22 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 一、单选题 . 1 二、多选题 . 4 三、填空题 . 5 四、判断题 . 6 五、简答题 . 7 六、程序分析题 .11 七、编程题 . 15 一、单选题1.在每个 C+程序中都必须包含有这样一个函数,该函数的函数名为( A ) A. main B. MAIN C. name D. function 2假定 AB 为一个类,则执行“AB a(4) , b3 , * p2 ;”语句时,自动调用该类构造函数的次数为(B) A. 3 B. 4 C. 6 D. 9 3.假定要对类AB 定义加号操作符重载成员函数,实现两个AB 类对象的加法,并返回相加结果,则该成员函数的声明语句为:( B ) A. AB operator+(AB & a , AB & b) B. AB operator+(AB & a) C. operator+(AB a) D. AB & operator+( ) 4. 关于 virtual void Draw()=0,下面说法正确的有几个(C)(1)它是纯虚函数 (对) (2)它在定义它的类中不能实现(对) (3)定义它的类不可实例化(对) (4)如果一个类要继承一个ADT 类,必须要实现其中的所有纯虚函数(错)/可以不实现 ,派生之后的类仍旧作为一个抽象类. A. 1 B. 2 C. 3 D. 4 5. 下面哪一本C+参考书最厚?( C)A. Think in C+ B. 深入浅出MFCC. C+ Primer D. Effective C+ 6. stl:deque 是一种什么数据类型?(A )A. 动态数组B. 链表C. 堆栈D. 树7. STL 库里含有下面的哪一种泛型算法?(D )A. KMP 查找B. 折半查找C. 冒泡排序D. 快速排序8. 下面哪一个不是C+的标准数据类型?( D)A. int B. char C. bool D. real 9. 类的继承方式有几种?(B )A. 两种B. 三种C. 四种D. 六种10. extern 关键字的作用是什么?( D)A. 声明外部链接B. 声明外部头文件引用C. 声明使用扩展C+语句D. 声明外部成员函数、成员数据。

      11 C+语言是从早期的C 语言逐渐发展演变而来的.与 C 语言相比,它在求解问题方法上进行的最大改进是(b)A)面向过程B)面向对象C)安全性D)复用性12 C+语言的跳转语句中,对于break 和 continue 说法正确的是(c)语句只应用与循环体中语句只应用与循环体中reak 是无条件跳转语句,continue 不是和 continue 的跳转范围不够明确,容易产生问题13 for(int x= ,y=o;!x& &y=5;y+)语句执行循环的次数是(c)B)C)D)无次数14 考虑函数原型void test(int a,int b=7,char=*),下面的函数调用中,属于不合法调用的是(c)A)test(5); B)test(5,8); C)test(6,#) D)test(0,0.*); 15 下面有关重载函数的说法中正确的是(c)重载函数必须具有不同的返回值类型;B)重载函数形参个数必须不同;重载函数必须有不同的形参列表D)重载函数名可以不同;16 下列关于构造函数的描述中,错误的是(d)构造函数可以设置默认参数;B)构造函数在定义类对象时自动执行构造函数可以是内联函数;D) 构造函数不可以重载17 下面描述中,表达错误的是(b)公有继承时基类中的public 成员在派生类中仍是public 的公有继承是基类中的private 成员在派生类中仍是private 的公有继承时基类中的protected 成员在派生类中仍是protected 的私有继承时基类中的public 成员在派生类中是private 的18 应在下列程序划线处填入的正确语句是(c)Base public: void fun()coutBase:funENDL; Derived:public Base void fun() _ / 显示调用基类的函数fun() coutDerived:funfun(); 19 有如下程序:(A)#include #include using namespace std; class BASE char c; public: BASE(char n):c(n) virtualBASE()coutc; ; class DERIVED:public BASE char c; public: DERIVED(char n):BASE(n+1),c(n) DERIVED()cout” D. 三目运算符“? :”3. 以下说法正确的是?( ABC)A. 头文件中的ifndef/define/endif 是为了防止该头文件被重复引用。

      B. 对于 #include ,编译器从标准库路径开始搜索filename.h 对于 #include “filename.h”,编译器从用户的工作路径开始搜索filename.h C. C+语言支持函数重载,C 语言不支持函数重载函数被C+编译后在库中的名字与C 语言的不同D. fopen 函数只是把文件目录信息调入内存4. vector:iterator 重载了下面哪些运算符?(ACD)A. + B. C. * (前置)D. = 5已知系统中已定义函数fp,其原形是:int fp(char c,int k=0,double d=100.0); 则下列函数中可以加以重载的是(AD ) A.int fp(); B.int fp(char c); C.int fp(char,int); D.int fp(char,int,int); 原因如下:int k=0,double d=100.0 上面的形式已经指定后两个参数等于可以省略所以 fp 可以有 3 钟调用方式:fp(c)- fp(char) fp(c,k)- fp(char int) fp(c,k,d) - fp(char int double) A 没有用到可以重载D 的最后参数是int, 可以重载三、填空题1. 计算反正弦的库函数是_asin()_;计算浮点数绝对值的库函数是_fabs()_;计算浮点数 n 次方的库函数是_pow()_ _;将浮点数转化为字符串的库函数是_fcvt() _。

      2. new 和_delete_ _对应, malloc 和_free_对应, 他们之间 _ 不能 _交叉混用 calloc 的功能是 _动态分配内存,并初始化数值为0_,realloc 的功能是 _改变原有内存区域的大小_3. C+的特性有(抽象、封装、继承、多态性)4. 下面程序的打印结果是_ 1 2 5 11 21_ f(int); main() int i; for(i=0;i5;i+) coutF(I)0;i- -) k + = i; return k; 5. 在用 class定义一个类时,数据成员和成员函数的默认访问权限是private 6. 含有纯虚函数的类称为抽象基类7.已知 int DBL(int n)return n + n;和 long DBL(long n)return n+n;是一个函数模板的两个实例,则该函数模板的定义是template T DBL(T n) return n+n; 8. 在下面程序的横线处填上适当的语句,使该程序执行结果为10. MyClass public: MyClass(int a)x = a; MyClass GETNUM()return x; /取 x 值private int x; main() MyClass my(10); coutMY.GETNUM()ENDL; return 0; 9.描述命题“ A 小于 B 或小于 C” 的表达式为AB | AC 。

      10.对嵌套 if 语句的规定是: else 总是与else if配对 11在 C+ 中有二种参数传递方式:值传递和地址传递 12定义重载函数时,应在参数的数量或类型有所不同 13类是用户定义的类型,具有类类型的变量称作类对象 14 当建立一个新对象时,程序自动调用类的构造函数 15一元操作符,作为友元函数重载时只能声明1 形参;作为类成员函数重载时0 形参四、判断题(1)函数体内声明的静态变量,至多只会被初始化一次r(2)对于同一个类中的两个非静态成员函数,它们的函数的名称、参数类型、 参数个数、参数顺序以及返回值的类型不能完全相同r (3)inline函数表示编译器一定会将函数体直接插入到调用此函数的地方,这样可以加快程序的运行速度 w (4 )将类 A 所有构造函数的可访问性都限制为私有的,那么在 main 函数中不可能得到类 A 的实例对象r(5)名字空间是可以多层嵌套的;对于类 A中的函数成员和数据成员,它们都属于类名 A 代表的一层名字空间 r(6)若在类Base 和派生类Derived中,分别声明一个同名的整型成员变量int x; ,那么通过Derived类的实例对象,不可能输出基类Base 中的变量 x 的值。

      W(7)若类 A是类 B的友员类,且类B是类 C 的友员类,那么类A 也是类 C 的友员类w(8)虽然抽象类的析构函数可以是纯虚函数,但要实例化其派生类对象,仍必须提供抽象基类中析构函数的函数体w(9)构造函数的初始化列表中的内容,不会影响构造对象中成员数据的初始化顺序r五、简答题1为什么标准头文件都有类似以下的结构?#ifndef _INCvxWorksh #define _INCvxWorksh #ifdef _cplusplusextern C #endif /*.*/ #ifdef _cplusplus #endif #endif /* _INCvxWorksh */ 解答:头文件中的编译宏#ifndef_INCvxWorksh #define_INCvxWorksh #endif 的作用是防止被重复引用作为一种面向对象的语言,C+支持函数重载,而过程式语言C 则不支持 函数被 C+编译后在 symbol 库中的名字与C 语言的不同例如,假设某个函数的原型为:void foo(int x, int y); 该函数被C 编译器编译后在symbol 库中的名字为_foo, 而 C+编译器则会产生像_foo_int_int之类的名字。

      _foo_int_int这样的名字包含了函数名和函数参数数量及类型信息,C+就是考这种机制来实现函数重载的为了实现C 和 C+的混合编程,C+提供了 C 连接交换指定符号extern C 来解决名字匹配问题,函数声明前加上extern C后,则编译器就会按照C 语言的方式将该函数编译为_foo,这样 C 语言中就可以调用C+的函数了2. 什么时候需要“ 引用 ” ?流操作符 、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用3. “引用 ” 与多态的关系?引用是除指针外另一个可以产生多态效果的手段这意味着, 一个基类的引用可以指向它的派生类实例4.函数模板与类模板有什么区别?答:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定5. 请讲一讲析构函数和虚函数的用法和作用?答:析构函数也是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载只是在类对象生命期结束的时候,由系统自动调用释放在构造函数中分配的资源这种在运行时,能依据其类型确认调用那个函数的能力称为多态性,或称迟后联编另:析构函数一般在对象撤消前做收尾工作,比如回收内存等工作,虚拟函数的功能是使子类可以用同名的函数对父类函数进行覆盖,并且在调用时自动调用子类覆盖函数,如果是纯虚函数,则纯粹是为了在子类覆盖时有个统一的命名而已。

      注意 :子类重新定义父类的虚函数的做法叫覆盖,override, 而不是 overload(重载 ),重载的概念不属于面向对象。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.