温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
2023
甘肃
农业大学
考试题
甘肃农业大学C++考试题
面向对象程序设计课程考试试卷〔A〕一、 选择题〔每题2分,共30分〕1.C++对C语言作了很多改良,以下描述中〔 〕使得C语言发生了质变,从面向过程变成了面向对象。
A、增加了一些新的运算符; B、允许函数重载,并允许设置缺省参数;C、规定函数说明必须用原型;D、引进了类和对象的概念;2.以下描述中,〔 〕是错误的。
A、内联函数主要解决程序的运行效率问题;B、内联函数的定义必须出现在内联函数第一次被调用之前;C、内联函数中可以包括各种语句; D、对内联函数不可以进行异常接口声明;3.在C++中,关于以下设置缺省参数值的描述中,〔 〕是正确的。
A、不允许设置缺省参数值; B、在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;C、只能在函数的定义性声明中指定参数的缺省值;D、设置缺省参数值时,必须全部都设置;4.〔 〕不是构造函数的特征。
A、构造函数的函数名与类名相同; B、构造函数可以重载; C、构造函数可以设置缺省参数; D、构造函数必须指定类型说明。
5.〔 〕是析构函数的特征。
A、析构函数可以有一个或多个参数; B、析构函数名与类名不同; C、析构函数的定义只能在类体内; D、一个类中只能定义一个析构函数;6.关于成员函数特征的以下描述中,〔 〕是错误的。
A、成员函数一定是内联函数; B、成员函数可以重载; C、成员函数可以设置缺省参数值; D、成员函数可以是静态的;7.以下静态数据成员的特性中,〔 〕是错误的。
A、说明静态数据成员时前边要加修饰符static B、静态数据成员要在类体外进行初始化; C、静态数据成员不是所有对象所共用的;D、引用静态数据成员时,要在其名称前加和作用域运算符;8.友元的作用是〔 〕。
A、提高程序的运用效率; B、加强类的封装性; C、实现数据的隐藏性; D、增加成员函数的种类;9.关于new运算符的以下描述中,〔 〕是错误的。
A、它可以用来动态创立对象和对象数组; B、使用它创立的对象或对象数组可以使用运算符delete删除; C、使用它创立对象时要调用构造函数; D、使用它创立对象数组时必须指定初始值;10.关于delete运算符的以下描述中,〔 〕是错误的。
A、它必须用于new返回的指针; B、使用它删除对象时要调用析构函数; C、对一个指针可以使用屡次该运算符;D、指针名前只有一对方括号符号,不管所删除数组的维数。
11.const int xp说明不能修改〔 〕。
A、p指针; B、p指针指向的变量;C、p指针指向的数据类型;D、上述A、B、C三者;12.:print()函数是一个类的常成员函数,它无返回值,以下表示中〔 〕是正确的; A、void print() const; B、const void print(); C、void const print();D、void print(const);13.派生类的对象对它的基类成员中〔 〕是可以访问的。
A、公有继承的公有成员; B、公有继承的私有成员;C、公有继承的保护成员;D、私有继承的公有成员;14.设置虚基类的目的是〔 〕。
A、简化程序; B、消除二义性; C、提高运行效率; D、减少目标代码;15.以下描述中,正确的选项是〔 〕 A、虚函数是一个static 类型的成员函数; B、虚函数是一个非成员函数;C、抽象类是指具有纯虚函数的类; D、抽象类可以说明其对象;二、判断以下描述的正确性,正确填T,错误填F。〔每题2分,共30分〕1.C++中标识符内的大小写字母是没有区别的。〔 〕2.C++是一种以编译方式实现的高级语言。〔 〕3.计算函数参数顺序引起的二义性是由不同的编译系统决定的。〔 〕4.返回值类型、参数个数和类型都相同的函数也可以重载。〔 〕5.使用关键字class定义的类中缺省的访问权限是私有〔private〕的。〔 〕6.类的私有成员只能被类中的成员函数访问,任何类以外的函数对它们的访问都是非法的。〔 〕7.多继承情况下,派生类的构造函数的执行顺序取决于成员初始化列表中的顺序。〔 〕8.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。〔 〕9.在私有继承中,基类中所有成员对派生类都是不可见的。〔 〕10.在保护继承中,对于垂直访问等同于公有继承,对于水平访问等同于私有继承。〔 〕11.构造函数可以声明为虚函数。〔 〕12.在析构函数中调用虚函数时,采用动态束定。〔 〕13.在一个成员函数内调用一个虚函数时,对该虚函数的调用进行动态束定。〔 〕14.公有继承可以实现子类型。〔 〕15.构造函数可以声明为纯虚函数。〔 〕三、分析以下程序的输出结果。〔每题10分,共40分〕1.#include class Test; void fun1(Test t); Test fun2(); class Test { public: Test(int n=1) {val=n; cout class A { public: A() {cout class R { public: R(int r1,int r2) {R1=r1;R2=r2;} void print(); void print() const; private: int R1,R2; }; void R::print() { cout class A { public: virtual void act1(); void act2() {act1();} }; void A::act1() { coutsalary;C.x=worker.salary; 〔其中worker为具有类类型的对象〕 D.Location &rA=A1;int x=rA.GetX(); 〔Location为已定义的类,A为对象〕二、填空题〔每空2分,共20分〕1.面向对象程序设计中的多态性包括静态多态性和动态多态性,前者由____________机制支持,而后者那么由____________机制支持。
2.由char const xstr=〞stucture〞;所以定义的指针称为____________,关键字const 所修饰的是____________。
3.引入虚基类的目的是为了解决多重继承中的____________和____________问题。
4.派生类中所定义的虚函数的____________不影响对它的动态联编,即基类中已定义的虚函数,其同名函数放在派生类中的__________,都可以实现运行时多态性。
5.构造函数与析构函数所调用的虚函数是____________的函数,因此调用时实现的是____________联编。
6.C++的____________规那么能保证编译器调用正确的成员函数。有时为更保险地保证编译器调用正确的成员函数,可以使用____________操作符。
7.说明一个const成员函数〔又称常量成员函数〕的方法是,将const写在______之间,而且它修饰的是__________。
8.除析构函数外,不能带有参数的函数还有_______,而且它的返回数据类型不能随便指定,而由______来决定。
9.当使用new动态生成一个对象时,隐含着对____________的一次调用;而当使用delete删除一个对象时,隐含着对____________的一次调用。
10.对某个运算符的重载,实际上是用关键字____________与该运算符组成一个运算符函数,而且该运算符函数的返回类型不能是_______________的。
面向对象程序设计课程考试试卷〔E〕一.对错题。判断以下说法的正确性,在下面表格中对应的编号下面写上“对〞或“错〞。〔20分,每个题目2分〕1. 说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返回值类型就可以了。( ) 2. 所有的表达式都有值。( ) 3. 程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。
4. 类的静态数据成员需要在定义每个类的对象时进行初始化。( ) 5. 基类中被说明为protected和private的成员只能被其派生类的成员函数访问,不能被其它的函数访问。( ) 6. 当将一个类S定义为另一个类A的友元类时,类S的所有成员函数都可以直接访问类A的所有成员。( ) 7. 当函数的返回值是数组类型的,传递的是数组第一个元素的地址。( ) 8. 如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么,这个函数自动继承基类中虚函数的特性。( ) 9. 字符串’hello,world〞在内存中存放时,占用11个字节的空间。( ) 10. 用new动态申请的内存空间,必须用delete来释放 。( ) 二、简单编程题。根据程序要求,写出函数的完整定义。〔共25分〕1.〔本小题15分〕写一个函数,找出给定字符串中数字字符〔即’0’—‘9’这10个数字〕的个数〔如字符串〞olympic2023〞中数字字符的个数为4个。函数的原型为: int CalcDigital(char xstr); 函数参数:str为所要处理的字符串。
函数返回值:所给字符串中数字字符的个数。
int CalcDigital(char xstr) {
} 2.〔本小题10分〕用递归函数完成以下运算:sum(n)=12+22+…+n2 函数的原型如下: long sum(int n); 该函数完成12+22+…+n2的运算,并返回运算结果,其中n>0。
提示:你可以使用递归表达式:sum(n)=sum(n-1)+n2 long sum(int n) { } 面向对象程序设计课程考试试卷〔F〕一、单项选择题(在每题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每题2分,共40分) 1.C++对C语言作了很多改良,即从面向过程变成为面向对象的主要原因是( ) A.增加了一些新的运算符 B.允许函数重载,并允许设置缺省参数 C.规定函数说明符必须用原型 D.引进了类和对象的概念 2.以下符号不能组成标识符的是( ) A.连接符 B.下划线 C.大小写字母 D.数字字符 3.类型修饰符unsigned不能修饰( ) A. char B. int C. long int D. float 4.在int a=3,int xp=&a;中,xp的值是( ) A.变量a的地址值 B.无意义 C.变量p的地址值 D.3 5.以下关于指针的操作中,错误的选项是( ) A.两个同类型的指针可以进行比拟运算 B.可以用一个空指针赋给某个指针 C.一个指针可以加上两个整数之差 D.两个同类型的指针可以相加 6.重载函数在调用时选择的依据中,错误的选项是( ) A.函数的参数 B.参数的类型 C.函数的名字 D.函数的类型 7.一个函数功能不太复杂,但要求被频繁调用,选用( ) A.内联函数 B.重载函数 C.递归函数 D.嵌套函数 8.以下不是描述类的成员函数的是( )