多平台全面支持
方便选课,随时随地学习
下载APP
小程序
希赛网小程序
首页 > 自考 > 习题练习
导航

​自考C++程序设计2015年4月试题

责编:彭雅倩 2019-06-24
自考资料领取

自考C++程序设计2015年4月试题及答案解析

自考C++程序设计2015年4月试题及答案解析,该试卷为自考C++程序设计历年真题试卷,包含答案及详细解析。

一、单项选择题(本大题共20小题,每小题1分,共20分。)在每小题列出的备选项中只有一项是最符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均不得分。

1.C++语言是从早期的C语言逐渐发展演变而来的,与C语言相比,C++在求解问题方法上进行的最大改进是(  )

A.面向过程
B.面向对象
C.安全性
D.复用性

2.结构化程序设计所规定的三种基本控制结构是(  )

A.输入、处理、输出
B.树形、网形、环形
C.顺序、选择、循环
D.主程序、子程序、函数

3.关于函数模板,描述错误的是(  )

A.函数模板必须由程序员实例化为可执行的函数模板
B.函数模板的实例化由编译器实现
C.一个类定义中,只要有一个函数模板,则这个类是类模板
D.类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化

4.作用域运算符“::”的功能是(  )

A.标识作用域的级别的
B.指出作用域的范围的
C.给定作用域的大小的
D.标识成员是属于哪个类的

5.采用重载函数的目的是(  )

A.实现共享
B.减少空间
C.提高速度
D.使用方便,提高可读性

6.以下关键字不能用来声明类的访问权限的是(  )

A.public
B.private
C.static
D.protected

7.有如下类声明“class A{int x; …};”,则A类的成员x是(  )

A.公有数据成员
B.私有数据成员
C.公有成员函数
D.私有成员函数

8.下列不是构造函数的特征的是(  )

A.构造函数的函数名与类名相同
B.构造函数可以重载
C.构造函数可以设置缺省参数
D.构造函数不能重载

9.通常的拷贝构造函数的参数是(  )

A.某个对象名
B.某个对象成员名
C.某个对象的引用
D.某个对象的指针名

10.下列哪个类型函数不适合声明为内联函数?(  )

A.函数体语句较多
B.函数体语句较少
C.函数执行时间较短
D.函数执行时间过长

11.设x和y均为bool量,则x&&y为真的条件是(  )

A.它们均为真
B.其中一个为真
C.它们均为假
D.其中一个为假

12.对于友元描述正确的是(  )

A.友元是本类的成员函数
B.友元不是本类的成员函数
C.友元不是函数
D.友元不能访问本类私有成员

13.当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的(  )

A.public成员
B.private成员
C.protected成员
D.友元

14.在C++语言中,080是(  )

A.八进制数
B.十进制数
C.十六进制
D.非法数

15.下面函数原型声明中,声明了fun为虚函数的是(  )

A.void fun( )=0
B.virtual void fun( )=0
C.virtual void fun( )
D.virtual void fun( ){ }

16.下列虚基类的声明中,正确的是(  )

A.class virtual B:public A
B.class B:virtual public A
C.class B:public A virtual
D.virtual class B:public A

17.下列运算符中,在C++语言中不能重载的是(  )

A.*
B.﹥=
C.::
D./

18.在C++语言中,能代表逻辑值“假”的是(  )

A.小于0的数
B.大于0的数
C.非0整数
D.0

19.以下叙述中不正确的是(  )

A.在一个函数中,可以有多条return语句
B.函数的定义不能嵌套,但函数的调用可以嵌套
C.函数必须有返回值
D.不同的函数中可以使用相同名字的变量

20.已知:int m=10;在下列表示引用的方法中,下列哪一项是正确的?(  )

A.int&x=m
B.int &y=10
C.int &z
D.float &t=&m

二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。

11.对象的核心概念就是通常所说的继承、封装和__________。

12.cin后面的符号是:﹥﹥,cout后面的符号是__________。

13.面向对象编程的英文缩写是__________。

14.已知x=2,y=3,x﹤y的值是__________。

15.执行下列代码:   double pi= 3.1415926; cout﹤﹤setprecision(5)﹤﹤pi;   程序的输出结果是__________。

16.建立一个对象时,对象的状态是不确定的。为了使对象的状态确定,必须对其进行正确的__________。

17.重载运算符的含义必须清楚,不能有__________。

18.按照联编进行阶段的不同,联编方法可分为两种:动态联编和__________。

19.设要把一个文件输出流对象myFile与文件“f:myText.txt”相关联,所用的C++语句是__________。

110.在C++中,函数的参数有两种传递方式,它们是__________和地址或指针或引用传递。

111.设有定义int x=3, y=4; 则表达式x*=y+5的值为__________。

112.在C++中,函数在定义时可以预先定义出默认的形参值。默认形参值必须按__________的顺序定义。因为在调用时,实参初始化形参是按从左到右的顺序。

113.如果一个函数直接或间接地调用自身,这样的调用称为__________调用。

114.函数模板中紧随template之后尖括号内的类型参数都要冠以保留字__________。

115.假如一个类的名称为MyClass,使用这个类的一个对象初始化该类的另一个对象时,可以调用__________构造函数来完成此功能。

116.设函数sum是由函数模板实现的,并且sum(3,6)和sum( 4.6,8)都是正确的函数调用,则函数模板具有__________个类型参数。

117.如果一个派生类只有一个唯一的基类,则这样的继承关系称为__________。

118. 一个const对象只能访问__________成员函数。

119.如果通过同一个基类派生一系列的类,则将这些类总称为__________。

120.A是一个类,已有语句“A *p; P=new A[10];”。要释放由P指向的动态空间,正确的语句应该是__________。

三、改错题(本大题共5小题,每小题2分,共10分)

21.  #include "stdafx. h"   #include ﹤iostream﹥   using namespace std;   class Test   { private:   int x, y =20;   public:   Test( int i, int j) {x=i, y=j; }   int getx( ) { return x; }   int gety( ) { return y; }   };   void main( )   {Test mt(10, 20);   cout﹤﹤mt. getx( )﹤﹤endl;   cout﹤﹤mt. gety( )﹤﹤endl;   }

22.  #include "stdafx.h"   #include ﹤iostream﹥   using namespace std;   class Test   { int x, y;   public:   fun(int i, int j)   {x=i; y=j; }   show( )   {cout﹤﹤"x="﹤﹤x;   if(y)   cout﹤﹤" ,y="﹤﹤y﹤﹤endl;   cout﹤﹤endl;}   };   void man( )   {Test A;   A. fun (1);   A. show( );   A. fun(2,4);   A. show( );   }

23.#include "stdafx.h"   #include ﹤iostream﹥   using namespace std;   class A   { int i;   public:   virtual void fun( )=0;   A( int a)   { i=a;}   };   class B: public A   { int j;   public:   void fun( )   {cout﹤﹤"B:: fun( ) ";}   B(int m, int n=0): A(m),j(n) { }   };   void main ( )   { A *pa;   B b(7);   pa=&b;   }

24.#include ﹤iostream. h﹥   class f{   private: T x, y;   public: f1(T a, T b) { x=a; y=b; }   float max( ) { return(x﹥y)? x: y; }   };   main( ){   f a;   a. f1( 1.5, 3.8);   cout﹤﹤a. max( )﹤﹤endl;   }

25.#include ﹤iostream. h﹥   #include ﹤string. h﹥   class Base   { public:   Base( char *s="") { strcpy ( name, s); }   void show( );  protected:   char name[20];   };   Base b;   void show( )   { cout ﹤﹤"name: "﹤﹤b. name ﹤ endl; }   void main( )   {Base d2("hello");   show( );   }

四、完成程序题(本大题共5小题,每小题4分,共20分)

31.在下面程序横线处填上适当字句,以使该程序执行结果为:   50 4 34 21 10    6.1 7.1 8.1 9.1 10.1 11.1   #include ﹤iostream﹥   using namespace std;   template ﹤class T﹥   void f( _____①_____ )   { _____②_____   for(int i=0; i﹤n/2; i++)   t=a[i], a[i]=a[n-1-i], a[n-1-i]=t;   }   void main( )   { int a[5]={10,21,34,4,50};   double d[6]={ 11.1, 10.1, 9.1, 8.1, 7.1, 6.1};   f(a,5); f(d,6);   for(int i=0; i﹤5; i++)   cout ﹤﹤ a[i]﹤﹤" ";   cout ﹤﹤ endl;   for(int i=0; i﹤6; i++)   cout﹤﹤d[i]﹤﹤" ";   cout﹤﹤ endl;   }

32.在下面程序的底藏线处填上适当的字句,使该程序执行结果为40,x为静态成员。   include ﹤iostream.h﹥   class Test   { public:   _____①_____;   Test (int i=0)   { x=i+x; }   int Getnum( )   { returm Test:: x+10; }   };   _____②_____;   void main( )   {Test test;   cout﹤﹤test. Getmum( )﹤﹤ endl;   }

33.在下列程序的空格处填上适当的字句,使输出为:0,2,10。   #include "stdafx. h"   #include ﹤iostream﹥   #include "math. h"   using namespace std;   class Magic   { double x;   public:   Magic( double d= 0. 00): x(fabs(d))   { }   Magic operator+( _____①_____ )   {   return Magic(sqrt(x*x+c.x*c.x));   }   _____②_____﹤﹤(ostream & stream, Magic &c)   { stream ﹤﹤c. x;   return stream;   }   };   void main( )   {Magic ma;   cout﹤﹤ma﹤﹤","﹤﹤ Magic(2)﹤﹤","﹤﹤ma+Magic(-6)+Magic(-8)﹤﹤endl;   }

34.下面是一个输入半径,输出其面积和周长的C++程序,在下划线处填上正确的语句。   #include "stdafx. h"   #include ﹤iostream﹥   #include "math. h"   _____①_____   _____②_____   void main( )   {double rad;   cout ﹤﹤"rad=";   cin﹥﹥rad;   double l= 2.0*pi*rad;   double s= pi*rad*rad;   cout ﹤﹤" The long is: "﹤﹤l﹤﹤endl;   cout ﹤﹤"The area is: "﹤﹤s﹤﹤endl;}

35.请完成一下程序,使其输出结果为:   x=5,y=27   X=10,y=27   #include ﹤iostream﹥   using namespace std;   class Sample   { private:   int x;   static int y;   _____①_____:   Sample( int a);   void print( );   };   Sample:: Sample(int a)   {   x=a;   y++;   }   void Sample:: print( )   {   cout﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y﹤﹤ endl;   }   _____②_____   void main( )   {   Sample s1(5);   Sample s2(10)   s 1. print( );   s 2. print( );   }

五、程序分析题(本大题共2题,每小题10共20分)

41.写出程序运行结果   #include "stdafx. h"   #include ﹤iostream﹥   using namespace std;   class B;class A   { public:   A(int i) { a=i; }   friend int F(A &f1, B &f2);   private:   int a;   };   class B   { public:   B(int i) { b=i; }   friend int F(A &f1, B &f2);   private:   int b;   };   int F(a &f1, B &f2)   { return(f 1. a+f 2. b)*(f 1. a-f 2.b); }   void main( )   {   A n1(10);   B n2(8)   cout﹤﹤F(n1, n2)﹤﹤endl; }

42.写出程序运行结果   #include ﹤iostream.h﹥   int func(int a)   {int b=0;   static int c =4;   b++; c--;   return(a+b+c); }   void main( )   {int a =2;   for( int j=0; j ﹤2; j++)   cout ﹤﹤ func(a +j)﹤﹤" ";   }

六、程序设计题(本大题共1小题,共10分)

51.声明复数类,Complex,该类中有两个私有变量real,image分别表示一个复数的实部和虚部。为Complex类添加适当的构造函数。并使用友元函数add实现复数加法。   #include ﹤iostream﹥   using namespace std;   class Complex   {   private:   double real, image;   public:   voidsetRI( double a, double b)   {   real=a;   image=b;   }   doublegetReal( )   {   return real;   }   doublegetImage( )   {   return image;   }   void print( ) {   if( image ﹥0)   cot﹤﹤"复数:"﹤﹤real﹤﹤"+"﹤﹤ image﹤﹤"i"﹤﹤endl;   if( image ﹤0)   cout ﹤﹤"复数: "﹤﹤ real ﹤﹤"-"﹤﹤ image ﹤﹤"i"﹤﹤endl;   }   friend Complex add( Complex, Complex); //声明友元函数   };   void main( )   {   Complex c1(19, 0.864), c2, c3;   c 2.setRI(90, 125.012);   c3=ad(c1,c2);   cout﹤﹤"复数一:"; c 1.pint( );   cout﹤﹤"复数二:"; c 2. print( );   cout﹤﹤"相加后:"; c 3.pint( );   }

更多资料

00537中国现代文学史第四章 50至70年代文学

00058《市场营销学》14章复习重点

思想道德与法治自学考试大纲(15042)

温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!
资料下载
  • 00537 中国现代文学史 2025年10月真题

    下载
  • 00037《美学》2026年全国高等教育自学考试考前60分

    下载
  • 英语四级写作翻译知识点总结

    下载
  • 2025年4月自考 00159《高级财务会计》 真题及答案解析

    下载
相关阅读
查看更多