自考C++程序设计2016年10月试题
温馨提示
亲爱的学员,您好!
一、单项选择题(本大题共20小题,每小题1分,共20分。)在每小题列出的备选项中只有一项是最符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均不得分。
1.一个函数的功能不太复杂,但要求被频繁调用,选用最适合的是( )
A.内联函数
B.重载函数
C.递归函数
D.嵌套函数
2.假定有类AB,有相应的构造函数定义,能正确执行“AB a(4), b(5), c[3], *p[2]={&a, &b};”语句,请问执行完此语句后共调用该类析构函数的次数为( )
A.14
B.5
C.3
D.1
3.在下面有关析构函数特征的描述中,正确的是( )
A.一个类中可以定义多个析构函数
B.析构函数名与类名完全相同
C.析构函数不能指定返回类型
D.析构函数可以有一个或多个参数
4.派生类的对象对它的哪一类基类成员是可以访问的( )
A.公有继承的基类的公有成员
B.公有继承的基类的保护成员
C.公有继承的基类的私有成员
D.保护继承的基类的公有成员
5.如果A是抽象类,则下面正确的是( )
A.A中没有纯虚函数
B.A a;
C.A a[3];
D.A *pa;
6.下列关于纯虚函数与抽象类的描述中,错误的是( )
A.纯虚函数是一种特殊的函数,它允许没有具体的实现
B.抽象类是指具有纯虚函数的类
C.一个基类的说明中有纯虚函数,该基类的派生类一定不再是抽象类
D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出
7.cout是C++的( )
A.关键字
B.对象
C.类
D.运算符
8.下列哪个函数不是类的成员函数( )
A.构造函数
B.析构函数
C.友元函数
D.拷贝构造函数
9.下列有关重载函数的说法中错误的是( )
A.重载函数必须具有不同的返回值类型
B.重载函数名必须相同
C.重载丞数参数个数可以不同
D.重载函数必须有不同的形参列表
10.下面说法正确的是( )
A.生成对象时调用析构函数
B.定义类时必须写出该类的构造函数
C.调用构造函数时必须在主函数中明确写出调用格式
D.析构函数不可以重载
11.在编译指令中,宏定义使用指令( )
A.#define
B.#include
C.#typedef
D.#friend
12.假设声明了以下的函数模板,错误的调用语句是( ) template ﹤class T﹥ T max(T x, T y) { return (x﹥y)?x:y; } 并定义了int i; char c;
A.max(i,i)
B.max(c,c)
C.max((int)c,i)
D.max(i,c)
13.若有说明:int n=2, *P=&n, *q=p;,则以下非法的赋值语句是( )
A.n=*q
B.p=n
C.p=q
D.*q=*p
14.进行文件操作时需要包含头文件( )
A.iostream
B.fstream
C.stdio
D.stdlib
15.类模板template ﹤class T﹥classX{…};,其中友元函数f对特定类型T(如int),使函数f(X ﹤int﹥&)成为X﹤int﹥模板类的友元,则其说明应为( )
A.friend void f( );
B.friend void f(X﹤T﹥&);
C.friend void A::f( );
D.friend void C(T);
16.动态编联所支持的多态性称为运行时的多态性,支持的函数是( )
A.构造函数
B.友元函数
C.继承
D.虚函数
17.用运算符delete删除—个动态对象时( )
A.首先为该动态对象调用构造函数,再释放其占用的内存
B.首先释放该动态对象占用的内存,再为其调用构造函数
C.首先为该动态对象调用析构函数,荐释放其占用的内存
D.首先释放该动态对象占用的内存,再为其调用析构函数
18.下列字符常量的写法中,错误的是( )
A.'\t'
B."b"
C.'*'
D.'a'
19.C++类体系中,不能被派生类继承的有( )
A.静态数据成员
B.构造函数
C.虚函数
D.静态成员函数
20.下列对派生类的描述中,错误的是( )
A.派生类至少应有一个基类
B.派生类的成员除了自己定义的成员外,还包含了它的基类成员
C.基类中成员访问权限继承到派生类中都保持不变
D.一个派生类可以作为另一个派生类的基类
二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。
11.C++注释方式“//”的有效范围从“//”至________结束。
12.C++程序有且只能有一个名为________的主函数。
13.语句“________;”用来向屏幕输出显示信息“Hello!”。
14.所谓“________”就是将一个新标识符和一块已经存在的存储区域相关联。
15.动态分配内存使用关键字________,释放内存使用关键字delete。
16.表达式“20/3*sqrt( 4.0)/5”值的数据类型是________。
17.面向对象的程序设计方法是以________代表求解问题的中心环节。
18.对象的________只能由这个对象的操作来存取。
19.使用关键字inline说明的函数称为________函数。
110.类对象一般都包括数据成员和________。
111.将对象作为函数参数,是将实参对象的值传递给________。
112.C++函数的返回值类型可以是除________和函数以外的任何类型。
113. 函数重载可使一个函数名具有多种功能,称这种特性为________。
114.________是类的实例。
115.关键字private、public和________以后的成员分别叫做私有成员、公有成员和保护成员。
116. 使用关键字const修饰的数据成员称为________数据成员。
117.对MyFirst类定义析构函数是_________。
118.insert(iterator it, const T&)是向it所指向量位置前_______一个对象。
119.说明纯虚函数的一般形式为“class类名{ ________函数类型函数名(参数列表)=0; };”。
120.运算符重载需要使用关键字“________”。
三、改错题(本大题共5小题,每小题2分,共10分)
21.#include ﹤iostream﹥using namespace std;template ﹤T﹥T max(T x, T y){if(x﹥=y) return x;else retum y;}void main( ){cout﹤﹤ max( 6.07, 9.08)﹤﹤ endl; cout﹤﹤ max(20, 50) ﹤﹤ endl;}
22.#include ﹤iostream﹥using namespace std;class Test {public:static int x;};int x=70;void main( ){cout﹤﹤Test:: x;}
23.#include ﹤iostream. h﹥void swap( int &a, int &b){a=a+b;b=a-b;a=a-b;}void main( ){int a =5,b=3;cout﹤﹤"a="﹤﹤a﹤﹤",b="﹤﹤b﹤﹤endl;swap(&a, &b);cout﹤﹤"a="﹤﹤a﹤﹤"b="﹤﹤b﹤﹤ endl;}
24.#include ﹤iostream﹥#include ﹤string﹥using namespace std;int change( string s){s=s+"dog!";cout﹤﹤ s﹤﹤ endl;}void main( ){string str("it is a ");change(str);}
25.#include ﹤iostream. h﹥template ﹤typename AT﹥AT max(AT x, AT y){retum(x﹥y)? x:y; void main( ){int i1=10, i2=56;double d1= 50.344, d2= 56.346;char c1='k', c2='n';cout﹤﹤"较大的整数是:"﹤﹤max(i1, i2)﹤﹤endl; cout﹤﹤"较大的双精度型数是:"﹤﹤max(d1, a);cout﹤﹤ endl;cout﹤﹤"较大的字符是:"﹤﹤max(c1, c2)﹤﹤endl;}
四、完成程序题(本大题共5小题,每小题4分,共20分)
31.完成程序空白处,可参考以下运行结果:4!=24n=-2!不能计算n!程序执行结束#include ﹤iostream. h﹥int f(int n){if(n﹤=0) throw n;int s=1;for( ________ )s *=i; //计算1*2*3…*n的值 retum s;}void main( ){try{cout﹤﹤________﹤﹤endl;cout﹤﹤"-2!="﹤﹤f(-2)﹤﹤endl;}catch(int n) {cout﹤﹤"n="﹤﹤n﹤﹤"不能计算n!"﹤﹤endl;catch(...) { cout﹤﹤"出现异常!"﹤﹤endl;}cout﹤﹤"程序执行结束"﹤﹤endl;}
32.#include ﹤iostream﹥using namespace std;________ PI= 3.1415;double length( float r) //圆的周长{return 2*PI*r;}________ //矩形的周长 { return 2*(x+y);}void main( ){float a =2, b=3, r=4;cout﹤﹤"圆周长"﹤﹤ length(r)﹤﹤endl;cout﹤﹤"矩形周长"﹤﹤ length(a,b)﹤﹤endl;}
33.程序用于在屏幕上显示指定的文本文件的内容。#include ﹤iostream﹥#include ﹤fstream﹥using namespace std;int main( ){ifstream ifile;char fn[ 20], ch;cout﹤﹤"输入文件名"; cin﹥﹥fn;________; //打开指定的文件if(! ifile){cout﹤﹤fn﹤﹤"文件不能打开"﹤﹤endl;retum 0;}while((ch = ifile. get())!=EOF) ________; //输出字符cout﹤﹤ endl;ifile. close(); //关闭文件return 1;}
34.类book,含有2个数据成员num编号和price价格,有成员函数set和display分别输入和显示书的编号和价格,在main中调用所有成员函数。#include ﹤ iostream﹥using namespace std;class book{private: char num[8];public:void set( ){ cin﹥﹥mum﹥﹥price;}void display( ){ cout﹤﹤ num﹤﹤" "﹤﹤ price﹤﹤ endl; }};void main( ){book b; ________;b. display( );}
35.一个通讯录contacts有姓名name和电话tel两个属性,有三个成员函数searehN、insertN和deleteN分别完成查找、插入和删除功能,请完成contacts的类图。
五、程序分析题(本大题共2小题,每小题10分,共20分)
41.给出下面程序的输出结果#include ﹤iostream﹥using namespace std;class Clock {public:Clock( ) {cout﹤﹤"clock的构造函数"﹤﹤endl;}~Clock( ) {cout﹤﹤" clock的析构函数﹤﹤endl; }};class Date{public:Date( ){cout﹤﹤"Date的构造函数"﹤﹤endl;}~Date( ){cout﹤﹤"Date的析构函数"﹤﹤endl;}};void main( ){Clock c;Date d;}
42.给出下面程序的输出结果#include ﹤iostream﹥using namespace std;void main( ){void sort( int s[ ]);int score[5];int i;for(i=0;i﹤5;i++)score[i]=i;sort( score);cout﹤﹤"运行结果是:";for(i=0;i﹤5;i++)cout﹤﹤score[i]﹤﹤" ";}void sort int s[ ]){int t;for(int i=0; i﹤4; i++)for (int j=i+1; j﹤5; j++)if(s[i]﹤s[j]){t=s[i]; s[i]=s[j]; s[j]=t;}}
六、程序设计题(本大题共1小题,共10分)
51.有一个Person类,私有数据成员name、age和sex分别表示人的姓名、年龄和性别。雇员类Employee是Person的派生类,新增数据成员部门department和薪水salary。请用C++代码描述这两个类,并用Employee类的成员函数Display实现雇员的姓名、年龄、性别、部门和薪水的输出。(要求编写派生类的构造函数)
《广东自考网》免责声明:
1、由于考试政策等各方面情况的调整与变化,本网提供的考试信息仅供参考,最终考试信息请以省考试院及院校官方发布的信息为准。
2、本站内容部分信息均来源网络收集整理或来源出处标注为其它媒体的稿件转载,免费转载出于非商业性学习目的,版权归原作者所有,如有内容与版权问题等请与本站联系。联系邮箱:812379481@qq.com