《C++程序设计试题及答案201404.doc》由会员分享,可在线阅读,更多相关《C++程序设计试题及答案201404.doc(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、全国2014年4月高等教育自学考试C+程序设计试题课程代码:04737 本试卷满分100分,考试时间150分钟. 考生答题注意事项: 1.本卷所有试题必须在答题卡上作答。答在试卷上无效。试卷空白处和背面均可作草稿纸。 2.第一部分为选择题。必须对应试卷上的题号使用28铅笔将“答题卡”的相应代码涂黑。 3.第二部分为非选择题。必须注明大、小题号,使用05毫米黑色字迹签字笔作答。 4.合理安排答题空间。超出答题区域无效。 第一部分选择题一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。错涂、多涂或未涂
2、均无分。1下列关于类的权限描述错误的是A.类本身的成员函数可以访问自身的任何成员B.类的对象只能访问公有成员C.普通函数可以不通过对象直接访问类的公有成员D.一个类可以包含另一个类的对象作为成员2只能在自身类和子类成员函数中被访问,无法通过对象在类外访问的成员属于A.privateB.protectedC.publicD.publish3面向对象中的“对象”是指A.行为抽象B.数据抽象C.行为抽象和数据抽象的统一D.行为抽象和数据抽象的对立4在类外定义成员函数时,:运算符两侧分别连接A.返回值类型 函数名B.返回值类型 类名C.函数名 类名D.类名 函数名5 设函数int& index(int
3、 * a,int i)返回数组a中下标为i的元素,如存在整型数组int Array=1,2,3,在执行 index(Array,2)+ +后,Array中各元素值为A.0,1,2B.l,1,2C.1,2,4D.0,2,36类构造函数定义的位置是A.类体内或体外B.只是在类体内C.只在类体外D.在类的成员函数中7设存在数组a,其长度为Len,则下列哪项泛型算法用于在a中寻找值Value的位置A.reverse(a,a+Len,Value);B.sort(a,a+Len,Value);C.find(a,a+Len,Value);D.copy(a,a+Len,Value);8关于对象的性质,下列描述
4、错误的是:A.同一类对象间可相互赋值B.可以使用对象数组C.对象不可以用作函数参数D.一个对象可以用作另一个类的成员9声明一个没有初始化参数的对象,需调用A.指定参数构造函数B.拷贝构造函数C.初始化函数D.默认构造函数10下列运算符不能重载的是A.!B.sizeofC.newD.delete11如P是一指针类型表达式,则下列表达式中不是左值表达式的是A.PB.*PC.&PD.P+112使用下列流格式控制符能输出一个换行符的是A.decB.octC.hexD.endl13下列表达式,能将P声明为常量指针的是A.const int * P;B.int*const P;C.const int *
5、const PD.int * P14C+程序文件扩展名为A.cppB.hC.libD.obj15对C+中主函数描述正确的是A.名称为main,可为多个B.名称不限,可为多个C.名称为main,必须有且只能有一个D.名称不限,必须有且只能有一个16假定有char * P=Hello;,要输出这个字符串的地址值的正确写法是A.cout *PB.coutPC.cout&PD.cout(void *)P17下列描述错误的是A.在没创建对象前,静态成员不存在B.静态成员是类的成员,不是对象成员C.静态成员不能是虚函数D.静态成员函数不能直接访问非静态成员18对于友元描述正确的是A.友元是本类的成员函数B
6、.友元不是本类的成员函数C.友元不是函数D.以上皆不正确19一个函数功能不太复杂,但要求频繁使用,则该函数适合作为A.内联函数B.重载函数C.递归函数D.嵌套函数20下列默认参数的声明不正确的是A.int max(int a,int b,int c,int d=0);B.int max(int a,int b,int c=0,int d=0);C.int max(int a=0,int b,int c=0,int d=0);D.int max(int a,int b=0,int c=0,int d=0);非选择题部分注意事项:用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试题卷上。二、填
7、空题(本大题共20小题,每小题1分,共20分)21C+程序的编译是以_文件_为单位进行的。22默认参数是在_函数原型_中说明的,默认参数可以多于一个。23通过C+语言中的_派生_机制,可以从现存类中构建其子类。24拷贝构造函数使用_引用对象_作为参数初始化创建中的对象。25基类的公有成员在通过公有派生得到的子类中访问权限是_公有类型_。26要关闭一个输出流对象myFile,所用的C+语句是_myFile.close()_。27执行下列代码:double pi=3.1415926;coutsetprecision(5)pi;程序的输出结果是_3.1416_。28对象作为函数参数,就是将实参对象的
8、_值_传递给形参对象,这种传递是单向的。29建立一个对象时,对象的状态是不确定的。为了使对象的状态确定,必须对其进行正确的_初始化_。30C+类中的_析构_函数在对象的生存期结束时被自动调用。31C+语言中的整数常量有四种:十进制常量、长整型常量、八进制常量和_十六进制常量_。32UML中对象之间的静态关系是通过对象属性之间的连接反映的,称之为_实例连接_。33声明一个常成员函数Fun,返回类型为char,第一个参数类型为int,第二个参数类型为double,则该函数的声明原型是_char Fun(int,double)const;_。34在C+语言中,利用向量类模板定义一个具有20个int类
9、型且初值为1的向量C,实现此操作的语句是_vectorC(20,1)_。35执行下列代码:int a=123,b=321;coutsetw(3)abendl;程序输出结果是:_123321_。36将指向对象的指针作为函数参数,形参是对象指针,实参是对象的_地址值_。37vector类中用于返回向量中第一个对象的方法是_front()_。38C+语言中动态分配内存的关键字是_new_。39C+类成员的访问权限有_私有_、公有和保护三种。40写出声明一个复数对象num的语句,并使对象被初始化为单精度2.2+1.3i,此声明语句是_complexnum(2.2,1.3)_。三、改错题(本大题共5小题
10、,每小题4分,共20分) 下面的每题中有一处错误,请在答题纸上写出错误所在行并给出修改意见41#include main ( ) int x=5,y=6; const int *p=x; * p=y; 指向常量的指针P不能进行左值操作 cout*pendl; 42#include class f private:T x, y; 模板没有声明public:f1(T a,T b)x=a;y=b; T max( )return(xy)?x:y; ; main( ) f a; af1(1.5,3.8); coutamax( )endl; 43#includeclass point private:fl
11、oat x,y; public:point(float a,float b)x=a;y=b; f( )x=0;y=0; void getx( )coutxendl; void gety( )coutyendl; ; main( ) point a (3.5); 没有定义一个参数的构造函数 agetx( );44#include class f private:float x,y; float get( )return x+y; public:f1(float a,float b)x=a;y=b; ; main( ) f a; af1(1,38); coutaget()endl; get()函数
12、为私有类型 45#include class testl private:Int x; public:testl( )x=2; void set(int a)x=a; void get()coutxendl; ; class test2 private:int x; public:test2( )x=3; void set(int a)x=a; void get( )coutxendl; ; class test:public testl,public test2 private:int x; public:void set(int a)x=a; void gettest( )coutxend
13、l; ; main( ) test a;aget( ); get()存在二义性,使用时需要指出使用哪个基类的函数。例如:a.test1:get() 四、完成程序题(本大题共5小题,每小题4分,共20分)46完成下面类中的成员函数的定义。 class point private: int m,n; public: point(int,int); point(point); ; point:point(int a,int b) m=a; _n_=b; point:point(_point & t_) m=tm; n=tn; 47#include using namespace std; class
14、 base private:int x; public:base(int a)x=a; int get( )return x; void showbase( ) coutx=xendl; ; class Derived:public base private:int y; public:Derived(int a,int b):base(a) y=b; void showderived( ) coutx=get(),y=yshowbase( ); dshowderived( ); bshowbase( ); 输出结果如下: x=3 x=6,y=7 x=6 x=6 x=6 x=6,y=7x=64
15、8#include #include using namespace std; class complex public: int real: int imag; complex(int r=0,int i=0) real=r; imag=i; ; complex operator+(_complex&a_,complexb) int r=areal+breal: int i=aimag+bimag; return_complex(r,i)_: void main( ) complex x(1,2),y(3,4),z; z=x+y; coutzreal+zimagiendl; 49下面程序的运
16、行结果如下: This is line1 This is line2 This is line3 将下列程序补充完整,答案写在答题纸上。源程序如下: #include #include_ using namespace std; void main( ) fstream fin,fout; foutopen(mytxt,ios:out); if(! foutis_open( ) return; for(int i=0;i3;i=i+1) foutThis is linei+1endl; foutclose( ); finopen(mytxt,ios:in); if(! finis_open(
17、) return; char str100; while(_!fin.eof_) fingetline(str,100); coutstrendl; finclose( ); 50求两个浮点数之差的cha函数的原型声明、调用方法。 #include using namespace std; void main( ) float a,b; _float cha(float,float)_;函数cha的原型声明 a=125; b=65; float c=_cha(a,b)_;调用函数cha coutcendl; float cha(float x,float y) float w; w=x-y;
18、return w; 五、程序分析题(本大题共2小题,每小题5分,共1O分)51#lnclude void func( ); void main( ) for(inti=0;i6;i+) func( ); void func( ) int x=0; x +; static int y=0; y +; coutx=x;y=yendl;答:x=1;y=1x=1;y=2x=1;y=3x=1;y=4x=1;y=5x=1;y=652.#include class A public: A( ); void Show( ); A( ); private: static int c; ; int A:c=O;
19、A:A( ) coutconstructorendl; c +=10; void A:Show( ) coutc=cendl; A:A( ) coutdestrucator.endl: void main( ) A a,b; aShow( ); bShow( );答:constructor.constructor.c=20c=20destrucator.destrucator.六、程序设计题(本大题共1小题,共10分)53在三角形类tri实现两个函数,功能是输入三个顶点坐标判断是否构成等边三角形 #include #include class point point private:float x,y; public:f(float a,float b)x=a;y=b; f( )x=0;y=0; Void set(float a,float b)x=a;y=b; float getx( )return x; noat gety( )return y; ; class tri point x,y,z; float s1,s2,s3; public.settri(.);用于输入三个顶点坐标 .test(.);用于判断是否构成等边三角形 ;请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型) - 本套试题共分13页,当前页是第13页-
限制150内