自考C++程序设计2016年10月试题
《自考视频课程》名师讲解,轻松易懂,助您轻松上岸!低至199元/科!
一、单项选择题(本大题共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实现雇员的姓名、年龄、性别、部门和薪水的输出。(要求编写派生类的构造函数)
本文标签:湖南自考 湖南自考C++程序设计 自考C++程序设计2016年10月试题
转载请注明:文章转载自(http://www.hnzk.hn.cn)
《湖南自考网》免责声明
1、由于各方面情况的调整与变化,本网提供的考试信息仅供参考,考试信息以省考试院及院校官方发布的信息为准。
2、本网信息来源为其他媒体的稿件转载,免费转载出于非商业性学习目的,版权归原作者所有,如有内容与版权问题等请与本站联系。联系邮箱:812379481@qq.com